@ecan-bi/datav 1.1.22 → 1.1.23

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 (117) hide show
  1. package/dist/index.es.js +1 -1
  2. package/dist/index.umd.js +1 -1
  3. package/dist/style.css +2 -1
  4. package/es/common/skeleton/Skeleton.vue.js.map +1 -1
  5. package/es/common/skeleton/Skeleton.vue2.js.map +1 -1
  6. package/es/common/spin/Spin.vue.js.map +1 -1
  7. package/es/common/spin/Spin.vue2.js.map +1 -1
  8. package/es/container/border/Border.vue.js.map +1 -1
  9. package/es/container/border/Border.vue2.js.map +1 -1
  10. package/es/container/modal/Modal.vue.js.map +1 -1
  11. package/es/container/modal/Modal.vue2.js.map +1 -1
  12. package/es/container/tabs/Tabs.vue.js.map +1 -1
  13. package/es/container/tabs/Tabs.vue2.js.map +1 -1
  14. package/es/control/button/Button.vue.js.map +1 -1
  15. package/es/control/button/Button.vue2.js.map +1 -1
  16. package/es/control/checkbox/Checkbox.vue.js.map +1 -1
  17. package/es/control/checkbox/Checkbox.vue2.js.map +1 -1
  18. package/es/control/date-picker/DatePicker.vue.js.map +1 -1
  19. package/es/control/date-picker/DatePicker.vue2.js.map +1 -1
  20. package/es/control/input/Input.vue.js.map +1 -1
  21. package/es/control/input/Input.vue2.js.map +1 -1
  22. package/es/control/range-picker/RangePicker.vue.js.map +1 -1
  23. package/es/control/range-picker/RangePicker.vue2.js.map +1 -1
  24. package/es/control/select/Select.vue.js.map +1 -1
  25. package/es/control/select/Select.vue2.js.map +1 -1
  26. package/es/graph/bar/Bar.vue.js.map +1 -1
  27. package/es/graph/bar/Bar.vue2.js.map +1 -1
  28. package/es/graph/combo-graph/ComboGraph.vue.js.map +1 -1
  29. package/es/graph/combo-graph/ComboGraph.vue2.js.map +1 -1
  30. package/es/graph/custom-graph/CustomGraph.vue.js.map +1 -1
  31. package/es/graph/custom-graph/CustomGraph.vue2.js.map +1 -1
  32. package/es/graph/line/Line.vue.js.map +1 -1
  33. package/es/graph/line/Line.vue2.js.map +1 -1
  34. package/es/graph/pie/Pie.vue.js.map +1 -1
  35. package/es/graph/pie/Pie.vue2.js.map +1 -1
  36. package/es/graph/scatter/Scatter.vue.js.map +1 -1
  37. package/es/graph/scatter/Scatter.vue2.js.map +1 -1
  38. package/es/index.js +0 -11218
  39. package/es/map/map/Map.vue.js.map +1 -1
  40. package/es/map/map/Map.vue2.js.map +1 -1
  41. package/es/media/iframe/Iframe.vue.js.map +1 -1
  42. package/es/media/iframe/Iframe.vue2.js.map +1 -1
  43. package/es/media/image/Image.vue.js.map +1 -1
  44. package/es/media/image/Image.vue2.js.map +1 -1
  45. package/es/setting/page-config/PageConfig.vue.js.map +1 -1
  46. package/es/setting/page-config/PageConfig.vue2.js.map +1 -1
  47. package/es/setting/provider-config/ProviderConfig.vue.js.map +1 -1
  48. package/es/setting/provider-config/ProviderConfig.vue2.js.map +1 -1
  49. package/es/table/table/Table.vue.js.map +1 -1
  50. package/es/table/table/Table.vue2.js.map +1 -1
  51. package/es/text/list/List.vue.js.map +1 -1
  52. package/es/text/list/List.vue2.js.map +1 -1
  53. package/es/text/proportion/Proportion.vue.js.map +1 -1
  54. package/es/text/proportion/Proportion.vue2.js.map +1 -1
  55. package/es/text/scroll-text/ScrollText.vue2.js.map +1 -1
  56. package/es/text/text/Text.vue.js.map +1 -1
  57. package/es/text/text/Text.vue2.js.map +1 -1
  58. package/es/text/time-display/TimeDisplay.vue.js.map +1 -1
  59. package/es/text/time-display/TimeDisplay.vue2.js.map +1 -1
  60. package/lib/common/skeleton/Skeleton.vue.js.map +1 -1
  61. package/lib/common/skeleton/Skeleton.vue2.js.map +1 -1
  62. package/lib/common/spin/Spin.vue.js.map +1 -1
  63. package/lib/common/spin/Spin.vue2.js.map +1 -1
  64. package/lib/container/border/Border.vue.js.map +1 -1
  65. package/lib/container/border/Border.vue2.js.map +1 -1
  66. package/lib/container/modal/Modal.vue.js.map +1 -1
  67. package/lib/container/modal/Modal.vue2.js.map +1 -1
  68. package/lib/container/tabs/Tabs.vue.js.map +1 -1
  69. package/lib/container/tabs/Tabs.vue2.js.map +1 -1
  70. package/lib/control/button/Button.vue.js.map +1 -1
  71. package/lib/control/button/Button.vue2.js.map +1 -1
  72. package/lib/control/checkbox/Checkbox.vue.js.map +1 -1
  73. package/lib/control/checkbox/Checkbox.vue2.js.map +1 -1
  74. package/lib/control/date-picker/DatePicker.vue.js.map +1 -1
  75. package/lib/control/date-picker/DatePicker.vue2.js.map +1 -1
  76. package/lib/control/input/Input.vue.js.map +1 -1
  77. package/lib/control/input/Input.vue2.js.map +1 -1
  78. package/lib/control/range-picker/RangePicker.vue.js.map +1 -1
  79. package/lib/control/range-picker/RangePicker.vue2.js.map +1 -1
  80. package/lib/control/select/Select.vue.js.map +1 -1
  81. package/lib/control/select/Select.vue2.js.map +1 -1
  82. package/lib/graph/bar/Bar.vue.js.map +1 -1
  83. package/lib/graph/bar/Bar.vue2.js.map +1 -1
  84. package/lib/graph/combo-graph/ComboGraph.vue.js.map +1 -1
  85. package/lib/graph/combo-graph/ComboGraph.vue2.js.map +1 -1
  86. package/lib/graph/custom-graph/CustomGraph.vue.js.map +1 -1
  87. package/lib/graph/custom-graph/CustomGraph.vue2.js.map +1 -1
  88. package/lib/graph/line/Line.vue.js.map +1 -1
  89. package/lib/graph/line/Line.vue2.js.map +1 -1
  90. package/lib/graph/pie/Pie.vue.js.map +1 -1
  91. package/lib/graph/pie/Pie.vue2.js.map +1 -1
  92. package/lib/graph/scatter/Scatter.vue.js.map +1 -1
  93. package/lib/graph/scatter/Scatter.vue2.js.map +1 -1
  94. package/lib/index.js +0 -11218
  95. package/lib/map/map/Map.vue.js.map +1 -1
  96. package/lib/map/map/Map.vue2.js.map +1 -1
  97. package/lib/media/iframe/Iframe.vue.js.map +1 -1
  98. package/lib/media/iframe/Iframe.vue2.js.map +1 -1
  99. package/lib/media/image/Image.vue.js.map +1 -1
  100. package/lib/media/image/Image.vue2.js.map +1 -1
  101. package/lib/setting/page-config/PageConfig.vue.js.map +1 -1
  102. package/lib/setting/page-config/PageConfig.vue2.js.map +1 -1
  103. package/lib/setting/provider-config/ProviderConfig.vue.js.map +1 -1
  104. package/lib/setting/provider-config/ProviderConfig.vue2.js.map +1 -1
  105. package/lib/style.css +197 -0
  106. package/lib/table/table/Table.vue.js.map +1 -1
  107. package/lib/table/table/Table.vue2.js.map +1 -1
  108. package/lib/text/list/List.vue.js.map +1 -1
  109. package/lib/text/list/List.vue2.js.map +1 -1
  110. package/lib/text/proportion/Proportion.vue.js.map +1 -1
  111. package/lib/text/proportion/Proportion.vue2.js.map +1 -1
  112. package/lib/text/scroll-text/ScrollText.vue2.js.map +1 -1
  113. package/lib/text/text/Text.vue.js.map +1 -1
  114. package/lib/text/text/Text.vue2.js.map +1 -1
  115. package/lib/text/time-display/TimeDisplay.vue.js.map +1 -1
  116. package/lib/text/time-display/TimeDisplay.vue2.js.map +1 -1
  117. package/package.json +9 -6
@@ -1 +1 @@
1
- {"version":3,"file":"Map.vue.js","sources":["../../../src/map/map/Map.vue"],"sourcesContent":["<template>\n <div class=\"ecan-map\" :style=\"style\">\n <echarts\n v-if=\"isLoadedData\"\n :option=\"option\"\n :update-options=\"{ notMerge: true }\"\n autoresize\n />\n <img\n ref=\"geoBackgroundImageRef\"\n v-show=\"false\"\n :src=\"myGeoBackgroundImage\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, watch, ref, unref } from 'vue'\nimport { mapComponentProps } from './props'\nimport Echarts from '@/common/echarts'\nimport { use, registerMap } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { MapChart, ScatterChart } from 'echarts/charts'\nimport { VisualMapComponent, TooltipComponent, GraphicComponent } from 'echarts/components'\nimport request from '@/utils/request'\nimport { usePickComponentStyle, useImagePath } from '../../hooks'\nuse([\n CanvasRenderer,\n MapChart,\n ScatterChart,\n VisualMapComponent,\n TooltipComponent,\n GraphicComponent\n])\nexport default defineComponent({\n name: 'EcanMap',\n components: {\n Echarts\n },\n props: {\n ...mapComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props, ['backgroundImage'])\n const geoBackgroundImageRef = ref()\n const myGeoBackgroundImage = computed(() => useImagePath(props.geoBackgroundImage as string))\n const myBackgroundImage = computed(() => useImagePath(props.backgroundImage as string))\n const areaColor = computed(() => {\n const backgroundImage = props.geoBackgroundImage as string\n if (backgroundImage) {\n return {\n image: unref(geoBackgroundImageRef),\n repeat: props.geoBackgroundImageRepeat\n }\n }\n return props.geoItemStyleAreaColor\n })\n const symbol = computed(() => {\n const symbolImage = props.symbolImage as string\n if (props.symbolImage) {\n return 'image://' + useImagePath(symbolImage)\n }\n return 'circle'\n })\n const option = computed(() => {\n const geoCenter = props.geoCenter\n let center: undefined | Array<any>\n if (typeof geoCenter === 'string' && geoCenter !== '') {\n center = geoCenter.split(',')\n }\n return {\n // backgroundColor: unref(background),\n tooltip: {\n show: true\n },\n graphic: [\n { // 一个图形元素,类型是 image。\n type: 'image',\n style: {\n width: parseFloat(props.width as string),\n height: parseFloat(props.height as string),\n image: unref(myBackgroundImage)\n },\n top: 'center'\n }\n ],\n geo: {\n zoom: props.geoZoom,\n roam: props.geoRoam,\n center,\n map: 'map',\n tooltip: {\n show: false\n },\n label: { // 地图上显示文字属性\n show: props.geoLabelShow,\n color: props.geoLabelColor,\n fontSize: props.geoLabelFontSize\n },\n itemStyle: { // 地图上板块属性\n areaColor: unref(areaColor),\n borderColor: props.geoItemStyleBorderColor,\n borderWidth: props.geoItemStyleBorderWidth,\n shadowColor: props.geoItemStyleShadowColor,\n shadowBlur: props.geoItemStyleShadowBlur,\n shadowOffsetX: props.geoItemStyleShadowOffsetX,\n shadowOffsetY: props.geoItemStyleShadowOffsetY\n },\n emphasis: { // 当鼠标悬停的时候\n disabled: props.geoEmphasisDisabled,\n label: {\n color: props.geoEmphasisLabelColor\n },\n itemStyle: {\n areaColor: props.geoEmphasisItemStyleAreaColor,\n borderColor: props.geoEmphasisItemStyleBorderColor\n }\n }\n },\n series: [\n {\n type: 'scatter',\n coordinateSystem: 'geo',\n itemStyle: {\n color: props.itemStyleColor\n },\n symbol: unref(symbol),\n symbolSize: [props.symbolWidth, props.symbolHeight],\n label: {\n show: props.labelShow,\n fontSize: props.labelFontSize,\n formatter: props.labelFormatter,\n color: props.labelColor\n },\n tooltip: {\n show: props.tooltipShow,\n formatter: props.tooltipFormatter,\n textStyle: {\n color: props.tooltipTextStyleColor\n }\n },\n data: props.data\n }\n ]\n }\n })\n // const echarts = ref()\n const isLoadedData = ref(false)\n const handleRegisterMap = async () => {\n const mapJson = props.mapJson as { name: string, path: string }\n if (mapJson != null && mapJson.path) {\n // @ts-ignore\n const res = await request(window?.config?.uploadPath + mapJson.path)\n registerMap('map', (res?.data || {}) as any)\n }\n isLoadedData.value = true\n }\n watch(() => props.mapJson, () => {\n handleRegisterMap()\n }, {\n immediate: true,\n deep: true\n })\n return {\n option,\n style,\n isLoadedData,\n geoBackgroundImageRef,\n myGeoBackgroundImage\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.ecan-map {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n</style>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeStyle","_createBlock","_createCommentVNode","_withDirectives","_createElementVNode"],"mappings":";;;;;;6BACEA,iBAYM,SAAA;SAZsBC,UAAO,GAAAC,mBAAA,OAAA;AAAA,IAAA,OAAA;AAAA,WAEzBC,eAAY,KAAA,KAAA;AAAA,EAAA,GAAA;AAAA,sCACHC,YAAA,oBAAA;AAAA,MACd,KAAA;AAAA,MACD,QAAA,KAAA;AAAA,MAAA,kBAAA,EAAA,UAAA,KAAA;AAAA;IAEF,GAAA,MAAA,GAAA,CAAA,QAAA,CAAA,KACEC,mBAAI,IAAuB,IAAA;AAAA,IAAAC,eAErBC,mBAAoB,OAAA;AAAA,MAAA,KAAA;AAAA,MADlB,KAAA,KAAA;AAAA,IAAA,GAAA,MAAA,GAAA,UAAA,GAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"Map.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Map.vue2.js","sources":["../../../src/map/map/Map.vue"],"sourcesContent":["<template>\n <div class=\"ecan-map\" :style=\"style\">\n <echarts\n v-if=\"isLoadedData\"\n :option=\"option\"\n :update-options=\"{ notMerge: true }\"\n autoresize\n />\n <img\n ref=\"geoBackgroundImageRef\"\n v-show=\"false\"\n :src=\"myGeoBackgroundImage\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, watch, ref, unref } from 'vue'\nimport { mapComponentProps } from './props'\nimport Echarts from '@/common/echarts'\nimport { use, registerMap } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { MapChart, ScatterChart } from 'echarts/charts'\nimport { VisualMapComponent, TooltipComponent, GraphicComponent } from 'echarts/components'\nimport request from '@/utils/request'\nimport { usePickComponentStyle, useImagePath } from '../../hooks'\nuse([\n CanvasRenderer,\n MapChart,\n ScatterChart,\n VisualMapComponent,\n TooltipComponent,\n GraphicComponent\n])\nexport default defineComponent({\n name: 'EcanMap',\n components: {\n Echarts\n },\n props: {\n ...mapComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props, ['backgroundImage'])\n const geoBackgroundImageRef = ref()\n const myGeoBackgroundImage = computed(() => useImagePath(props.geoBackgroundImage as string))\n const myBackgroundImage = computed(() => useImagePath(props.backgroundImage as string))\n const areaColor = computed(() => {\n const backgroundImage = props.geoBackgroundImage as string\n if (backgroundImage) {\n return {\n image: unref(geoBackgroundImageRef),\n repeat: props.geoBackgroundImageRepeat\n }\n }\n return props.geoItemStyleAreaColor\n })\n const symbol = computed(() => {\n const symbolImage = props.symbolImage as string\n if (props.symbolImage) {\n return 'image://' + useImagePath(symbolImage)\n }\n return 'circle'\n })\n const option = computed(() => {\n const geoCenter = props.geoCenter\n let center: undefined | Array<any>\n if (typeof geoCenter === 'string' && geoCenter !== '') {\n center = geoCenter.split(',')\n }\n return {\n // backgroundColor: unref(background),\n tooltip: {\n show: true\n },\n graphic: [\n { // 一个图形元素,类型是 image。\n type: 'image',\n style: {\n width: parseFloat(props.width as string),\n height: parseFloat(props.height as string),\n image: unref(myBackgroundImage)\n },\n top: 'center'\n }\n ],\n geo: {\n zoom: props.geoZoom,\n roam: props.geoRoam,\n center,\n map: 'map',\n tooltip: {\n show: false\n },\n label: { // 地图上显示文字属性\n show: props.geoLabelShow,\n color: props.geoLabelColor,\n fontSize: props.geoLabelFontSize\n },\n itemStyle: { // 地图上板块属性\n areaColor: unref(areaColor),\n borderColor: props.geoItemStyleBorderColor,\n borderWidth: props.geoItemStyleBorderWidth,\n shadowColor: props.geoItemStyleShadowColor,\n shadowBlur: props.geoItemStyleShadowBlur,\n shadowOffsetX: props.geoItemStyleShadowOffsetX,\n shadowOffsetY: props.geoItemStyleShadowOffsetY\n },\n emphasis: { // 当鼠标悬停的时候\n disabled: props.geoEmphasisDisabled,\n label: {\n color: props.geoEmphasisLabelColor\n },\n itemStyle: {\n areaColor: props.geoEmphasisItemStyleAreaColor,\n borderColor: props.geoEmphasisItemStyleBorderColor\n }\n }\n },\n series: [\n {\n type: 'scatter',\n coordinateSystem: 'geo',\n itemStyle: {\n color: props.itemStyleColor\n },\n symbol: unref(symbol),\n symbolSize: [props.symbolWidth, props.symbolHeight],\n label: {\n show: props.labelShow,\n fontSize: props.labelFontSize,\n formatter: props.labelFormatter,\n color: props.labelColor\n },\n tooltip: {\n show: props.tooltipShow,\n formatter: props.tooltipFormatter,\n textStyle: {\n color: props.tooltipTextStyleColor\n }\n },\n data: props.data\n }\n ]\n }\n })\n // const echarts = ref()\n const isLoadedData = ref(false)\n const handleRegisterMap = async () => {\n const mapJson = props.mapJson as { name: string, path: string }\n if (mapJson != null && mapJson.path) {\n // @ts-ignore\n const res = await request(window?.config?.uploadPath + mapJson.path)\n registerMap('map', (res?.data || {}) as any)\n }\n isLoadedData.value = true\n }\n watch(() => props.mapJson, () => {\n handleRegisterMap()\n }, {\n immediate: true,\n deep: true\n })\n return {\n option,\n style,\n isLoadedData,\n geoBackgroundImageRef,\n myGeoBackgroundImage\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.ecan-map {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n</style>\n"],"names":["CanvasRenderer","MapChart","ScatterChart","VisualMapComponent","TooltipComponent","GraphicComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Map.vue2.js","sources":["../../../src/map/map/Map.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { computed, defineComponent, watch, ref, unref } from 'vue'\nimport { mapComponentProps } from './props'\nimport Echarts from '@/common/echarts'\nimport { use, registerMap } from 'echarts/core'\nimport { CanvasRenderer } from 'echarts/renderers'\nimport { MapChart, ScatterChart } from 'echarts/charts'\nimport { VisualMapComponent, TooltipComponent, GraphicComponent } from 'echarts/components'\nimport request from '@/utils/request'\nimport { usePickComponentStyle, useImagePath } from '../../hooks'\nuse([\n CanvasRenderer,\n MapChart,\n ScatterChart,\n VisualMapComponent,\n TooltipComponent,\n GraphicComponent\n])\nexport default defineComponent({\n name: 'EcanMap',\n components: {\n Echarts\n },\n props: {\n ...mapComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props, ['backgroundImage'])\n const geoBackgroundImageRef = ref()\n const myGeoBackgroundImage = computed(() => useImagePath(props.geoBackgroundImage as string))\n const myBackgroundImage = computed(() => useImagePath(props.backgroundImage as string))\n const areaColor = computed(() => {\n const backgroundImage = props.geoBackgroundImage as string\n if (backgroundImage) {\n return {\n image: unref(geoBackgroundImageRef),\n repeat: props.geoBackgroundImageRepeat\n }\n }\n return props.geoItemStyleAreaColor\n })\n const symbol = computed(() => {\n const symbolImage = props.symbolImage as string\n if (props.symbolImage) {\n return 'image://' + useImagePath(symbolImage)\n }\n return 'circle'\n })\n const option = computed(() => {\n const geoCenter = props.geoCenter\n let center: undefined | Array<any>\n if (typeof geoCenter === 'string' && geoCenter !== '') {\n center = geoCenter.split(',')\n }\n return {\n // backgroundColor: unref(background),\n tooltip: {\n show: true\n },\n graphic: [\n { // 一个图形元素,类型是 image。\n type: 'image',\n style: {\n width: parseFloat(props.width as string),\n height: parseFloat(props.height as string),\n image: unref(myBackgroundImage)\n },\n top: 'center'\n }\n ],\n geo: {\n zoom: props.geoZoom,\n roam: props.geoRoam,\n center,\n map: 'map',\n tooltip: {\n show: false\n },\n label: { // 地图上显示文字属性\n show: props.geoLabelShow,\n color: props.geoLabelColor,\n fontSize: props.geoLabelFontSize\n },\n itemStyle: { // 地图上板块属性\n areaColor: unref(areaColor),\n borderColor: props.geoItemStyleBorderColor,\n borderWidth: props.geoItemStyleBorderWidth,\n shadowColor: props.geoItemStyleShadowColor,\n shadowBlur: props.geoItemStyleShadowBlur,\n shadowOffsetX: props.geoItemStyleShadowOffsetX,\n shadowOffsetY: props.geoItemStyleShadowOffsetY\n },\n emphasis: { // 当鼠标悬停的时候\n disabled: props.geoEmphasisDisabled,\n label: {\n color: props.geoEmphasisLabelColor\n },\n itemStyle: {\n areaColor: props.geoEmphasisItemStyleAreaColor,\n borderColor: props.geoEmphasisItemStyleBorderColor\n }\n }\n },\n series: [\n {\n type: 'scatter',\n coordinateSystem: 'geo',\n itemStyle: {\n color: props.itemStyleColor\n },\n symbol: unref(symbol),\n symbolSize: [props.symbolWidth, props.symbolHeight],\n label: {\n show: props.labelShow,\n fontSize: props.labelFontSize,\n formatter: props.labelFormatter,\n color: props.labelColor\n },\n tooltip: {\n show: props.tooltipShow,\n formatter: props.tooltipFormatter,\n textStyle: {\n color: props.tooltipTextStyleColor\n }\n },\n data: props.data\n }\n ]\n }\n })\n // const echarts = ref()\n const isLoadedData = ref(false)\n const handleRegisterMap = async () => {\n const mapJson = props.mapJson as { name: string, path: string }\n if (mapJson != null && mapJson.path) {\n // @ts-ignore\n const res = await request(window?.config?.uploadPath + mapJson.path)\n registerMap('map', (res?.data || {}) as any)\n }\n isLoadedData.value = true\n }\n watch(() => props.mapJson, () => {\n handleRegisterMap()\n }, {\n immediate: true,\n deep: true\n })\n return {\n option,\n style,\n isLoadedData,\n geoBackgroundImageRef,\n myGeoBackgroundImage\n }\n }\n})\n"],"names":["CanvasRenderer","MapChart","ScatterChart","VisualMapComponent","TooltipComponent","GraphicComponent"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Iframe.vue.js","sources":["../../../src/media/iframe/Iframe.vue"],"sourcesContent":["<template>\n <iframe\n :src=\"myLink\"\n :style=\"style\"\n v-if=\"myLink\"\n />\n <div\n class=\"iframe-placeholder\"\n :style=\"style\"\n v-else\n >\n 请填写网页链接\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, inject, unref } from 'vue'\nimport { usePickComponentStyle, useVariablesInText } from '@/hooks'\nimport { iframeComponentProps } from '@/media/iframe/props'\nimport { GLOBAL_CONFIG, ERD_URL } from '@/utils/constant'\nexport default defineComponent({\n name: 'EcanIframe',\n props: {\n ...iframeComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const { contextRequestUrl } = inject(GLOBAL_CONFIG, {\n contextRequestUrl: ''\n })\n const myLink = computed(() => {\n let link = useVariablesInText(props.link as string)\n if (props.linkType === 'erd' && link != null) {\n let ctxErdUrl = unref(contextRequestUrl)\n if (ctxErdUrl[ctxErdUrl.length - 1] === '/') {\n ctxErdUrl += 'erdReport'\n } else {\n ctxErdUrl += '/erdReport'\n }\n const erdUrl = ERD_URL || ctxErdUrl\n link = `${erdUrl}?_t=0&uid=${link}`\n }\n return link\n })\n return {\n style,\n myLink\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.iframe-placeholder {\n display: grid;\n place-content: center;\n border: 1px solid #d9d9d9;\n font-size: 16px;\n color: #333;\n width: 100%;\n overflow: hidden;\n}\n</style>\n"],"names":["_createElementBlock","_openBlock","_normalizeStyle"],"mappings":";;;;;qBACE,MAIE,QAAA,QAAA,QAAA,OAAA,UAAA;qCAHYA,mBAAA,UAAA;AAAA,IACX,KAAK;AAAA,IAAA,KAAA,KAAA;AAAA,0BAGR,KAMM,KAAA;AAAA,EAAA,GAAA,MAAA,IAAA,UAAA,MAAAC,UALsB,GAAAD,mBAAA,OAAA;AAAA,IACzB,KAAK;AAAA,IAEP,OAAA;AAAA,IAAA,OAAAE,eAAA,KAAA,KAAA;AAAA;;;"}
1
+ {"version":3,"file":"Iframe.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Iframe.vue2.js","sources":["../../../src/media/iframe/Iframe.vue"],"sourcesContent":["<template>\n <iframe\n :src=\"myLink\"\n :style=\"style\"\n v-if=\"myLink\"\n />\n <div\n class=\"iframe-placeholder\"\n :style=\"style\"\n v-else\n >\n 请填写网页链接\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, inject, unref } from 'vue'\nimport { usePickComponentStyle, useVariablesInText } from '@/hooks'\nimport { iframeComponentProps } from '@/media/iframe/props'\nimport { GLOBAL_CONFIG, ERD_URL } from '@/utils/constant'\nexport default defineComponent({\n name: 'EcanIframe',\n props: {\n ...iframeComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const { contextRequestUrl } = inject(GLOBAL_CONFIG, {\n contextRequestUrl: ''\n })\n const myLink = computed(() => {\n let link = useVariablesInText(props.link as string)\n if (props.linkType === 'erd' && link != null) {\n let ctxErdUrl = unref(contextRequestUrl)\n if (ctxErdUrl[ctxErdUrl.length - 1] === '/') {\n ctxErdUrl += 'erdReport'\n } else {\n ctxErdUrl += '/erdReport'\n }\n const erdUrl = ERD_URL || ctxErdUrl\n link = `${erdUrl}?_t=0&uid=${link}`\n }\n return link\n })\n return {\n style,\n myLink\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.iframe-placeholder {\n display: grid;\n place-content: center;\n border: 1px solid #d9d9d9;\n font-size: 16px;\n color: #333;\n width: 100%;\n overflow: hidden;\n}\n</style>\n"],"names":[],"mappings":";;;;;AAoBA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AACN,UAAA,QAAQ,sBAAsB,KAAK;AACzC,UAAM,EAAE,kBAAA,IAAsB,OAAO,eAAe;AAAA,MAClD,mBAAmB;AAAA,IAAA,CACpB;AACK,UAAA,SAAS,SAAS,MAAM;AACxB,UAAA,OAAO,mBAAmB,MAAM,IAAc;AAClD,UAAI,MAAM,aAAa,SAAS,QAAQ,MAAM;AACxC,YAAA,YAAY,MAAM,iBAAiB;AACvC,YAAI,UAAU,UAAU,SAAS,CAAC,MAAM,KAAK;AAC9B,uBAAA;AAAA,QAAA,OACR;AACQ,uBAAA;AAAA,QACf;AACA,cAAM,SAAS,WAAW;AAC1B,eAAO,GAAG,mBAAmB;AAAA,MAC/B;AACO,aAAA;AAAA,IAAA,CACR;AACM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
1
+ {"version":3,"file":"Iframe.vue2.js","sources":["../../../src/media/iframe/Iframe.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { defineComponent, computed, inject, unref } from 'vue'\nimport { usePickComponentStyle, useVariablesInText } from '@/hooks'\nimport { iframeComponentProps } from '@/media/iframe/props'\nimport { GLOBAL_CONFIG, ERD_URL } from '@/utils/constant'\nexport default defineComponent({\n name: 'EcanIframe',\n props: {\n ...iframeComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const { contextRequestUrl } = inject(GLOBAL_CONFIG, {\n contextRequestUrl: ''\n })\n const myLink = computed(() => {\n let link = useVariablesInText(props.link as string)\n if (props.linkType === 'erd' && link != null) {\n let ctxErdUrl = unref(contextRequestUrl)\n if (ctxErdUrl[ctxErdUrl.length - 1] === '/') {\n ctxErdUrl += 'erdReport'\n } else {\n ctxErdUrl += '/erdReport'\n }\n const erdUrl = ERD_URL || ctxErdUrl\n link = `${erdUrl}?_t=0&uid=${link}`\n }\n return link\n })\n return {\n style,\n myLink\n }\n }\n})\n"],"names":[],"mappings":";;;;;AAKA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AACN,UAAA,QAAQ,sBAAsB,KAAK;AACzC,UAAM,EAAE,kBAAA,IAAsB,OAAO,eAAe;AAAA,MAClD,mBAAmB;AAAA,IAAA,CACpB;AACK,UAAA,SAAS,SAAS,MAAM;AACxB,UAAA,OAAO,mBAAmB,MAAM,IAAc;AAClD,UAAI,MAAM,aAAa,SAAS,QAAQ,MAAM;AACxC,YAAA,YAAY,MAAM,iBAAiB;AACvC,YAAI,UAAU,UAAU,SAAS,CAAC,MAAM,KAAK;AAC9B,uBAAA;AAAA,QAAA,OACR;AACQ,uBAAA;AAAA,QACf;AACA,cAAM,SAAS,WAAW;AAC1B,eAAO,GAAG,mBAAmB;AAAA,MAC/B;AACO,aAAA;AAAA,IAAA,CACR;AACM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Image.vue.js","sources":["../../../src/media/image/Image.vue"],"sourcesContent":["<template>\n <img\n :style=\"style\"\n :src=\"myImgUrl\"\n v-if=\"myImgUrl !== ''\"\n @click=\"onClick\"\n />\n <div\n class=\"image-placeholder\"\n :style=\"style\"\n v-else\n >\n 请上传图片\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref } from 'vue'\nimport { imageComponentProps } from './props'\nimport { useImagePath, usePickComponentStyle, usePageUrl, useVariablesInText } from '@/hooks'\nimport { GLOBAL_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'EcanImage',\n props: {\n ...imageComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const myImgUrl = computed(() => useImagePath(props.imgUrl as string))\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const onClick = () => {\n // 空链接、空页面直接 return\n if (!props.linkPage && !props.href) return\n const linkPage = (props.linkPage || '') as string\n const pageUrl = usePageUrl(unref(pageMode), linkPage)\n // 优先使用外部链接,再使用url\n const href = props.href as string\n let url = href || pageUrl\n url = useVariablesInText(url)\n const target = props.target\n if (target == null || target === '') return\n if (target !== 'event') {\n window.open(url, '_' + (target as string))\n } else {\n window.parent.postMessage({\n type: 'openPage',\n url: href\n }, '*')\n }\n }\n return {\n style,\n myImgUrl,\n onClick\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.image-placeholder {\n display: grid;\n place-content: center;\n border: 1px solid #d9d9d9;\n font-size: 16px;\n color: #333;\n width: 100%;\n overflow: hidden;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeStyle","_openBlock"],"mappings":";;;;;qBACE,MAKE,QAAA,QAAA,QAAA,OAAA,UAAA;2CAJa,GAAAA,mBAAA,OAAA;AAAA,IACZ,KAAK;AAAA,IAEL,OAAKC,eAAA,KAAA,KAAA;AAAA,IAAA,KAAA,KAAA;AAAA,oBAER,CAMM,MAAA,OAAA,CAAA,IAAA,IAAA,SAAA,KAAA,WAAA,KAAA,QAAA,GAAA,IAAA;AAAA,EAAA,GAAA,MAAA,IAAA,UAAA,MAAAC,UALqB,GAAAF,mBAAA,OAAA;AAAA,IACxB,KAAK;AAAA,IAEP,OAAA;AAAA,IAAA,OAAAC,eAAA,KAAA,KAAA;AAAA;;;"}
1
+ {"version":3,"file":"Image.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Image.vue2.js","sources":["../../../src/media/image/Image.vue"],"sourcesContent":["<template>\n <img\n :style=\"style\"\n :src=\"myImgUrl\"\n v-if=\"myImgUrl !== ''\"\n @click=\"onClick\"\n />\n <div\n class=\"image-placeholder\"\n :style=\"style\"\n v-else\n >\n 请上传图片\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref } from 'vue'\nimport { imageComponentProps } from './props'\nimport { useImagePath, usePickComponentStyle, usePageUrl, useVariablesInText } from '@/hooks'\nimport { GLOBAL_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'EcanImage',\n props: {\n ...imageComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const myImgUrl = computed(() => useImagePath(props.imgUrl as string))\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const onClick = () => {\n // 空链接、空页面直接 return\n if (!props.linkPage && !props.href) return\n const linkPage = (props.linkPage || '') as string\n const pageUrl = usePageUrl(unref(pageMode), linkPage)\n // 优先使用外部链接,再使用url\n const href = props.href as string\n let url = href || pageUrl\n url = useVariablesInText(url)\n const target = props.target\n if (target == null || target === '') return\n if (target !== 'event') {\n window.open(url, '_' + (target as string))\n } else {\n window.parent.postMessage({\n type: 'openPage',\n url: href\n }, '*')\n }\n }\n return {\n style,\n myImgUrl,\n onClick\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.image-placeholder {\n display: grid;\n place-content: center;\n border: 1px solid #d9d9d9;\n font-size: 16px;\n color: #333;\n width: 100%;\n overflow: hidden;\n}\n</style>\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AACN,UAAA,QAAQ,sBAAsB,KAAK;AACzC,UAAM,WAAW,SAAS,MAAM,aAAa,MAAM,MAAgB,CAAC;AACpE,UAAM,EAAE,SAAA,IAAa,OAAO,eAAe;AAAA,MACzC,UAAU;AAAA,IAAA,CACX;AACD,UAAM,UAAU,MAAM;AAEpB,UAAI,CAAC,MAAM,YAAY,CAAC,MAAM;AAAM;AAC9B,YAAA,WAAY,MAAM,YAAY;AACpC,YAAM,UAAU,WAAW,MAAM,QAAQ,GAAG,QAAQ;AAEpD,YAAM,OAAO,MAAM;AACnB,UAAI,MAAM,QAAQ;AAClB,YAAM,mBAAmB,GAAG;AAC5B,YAAM,SAAS,MAAM;AACjB,UAAA,UAAU,QAAQ,WAAW;AAAI;AACrC,UAAI,WAAW,SAAS;AACf,eAAA,KAAK,KAAK,MAAO,MAAiB;AAAA,MAAA,OACpC;AACL,eAAO,OAAO,YAAY;AAAA,UACxB,MAAM;AAAA,UACN,KAAK;AAAA,WACJ,GAAG;AAAA,MACR;AAAA,IAAA;AAEK,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
1
+ {"version":3,"file":"Image.vue2.js","sources":["../../../src/media/image/Image.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { computed, defineComponent, inject, unref } from 'vue'\nimport { imageComponentProps } from './props'\nimport { useImagePath, usePickComponentStyle, usePageUrl, useVariablesInText } from '@/hooks'\nimport { GLOBAL_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'EcanImage',\n props: {\n ...imageComponentProps\n },\n setup (props) {\n const style = usePickComponentStyle(props)\n const myImgUrl = computed(() => useImagePath(props.imgUrl as string))\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const onClick = () => {\n // 空链接、空页面直接 return\n if (!props.linkPage && !props.href) return\n const linkPage = (props.linkPage || '') as string\n const pageUrl = usePageUrl(unref(pageMode), linkPage)\n // 优先使用外部链接,再使用url\n const href = props.href as string\n let url = href || pageUrl\n url = useVariablesInText(url)\n const target = props.target\n if (target == null || target === '') return\n if (target !== 'event') {\n window.open(url, '_' + (target as string))\n } else {\n window.parent.postMessage({\n type: 'openPage',\n url: href\n }, '*')\n }\n }\n return {\n style,\n myImgUrl,\n onClick\n }\n }\n})\n"],"names":[],"mappings":";;;;;;;AAKA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AACN,UAAA,QAAQ,sBAAsB,KAAK;AACzC,UAAM,WAAW,SAAS,MAAM,aAAa,MAAM,MAAgB,CAAC;AACpE,UAAM,EAAE,SAAA,IAAa,OAAO,eAAe;AAAA,MACzC,UAAU;AAAA,IAAA,CACX;AACD,UAAM,UAAU,MAAM;AAEpB,UAAI,CAAC,MAAM,YAAY,CAAC,MAAM;AAAM;AAC9B,YAAA,WAAY,MAAM,YAAY;AACpC,YAAM,UAAU,WAAW,MAAM,QAAQ,GAAG,QAAQ;AAEpD,YAAM,OAAO,MAAM;AACnB,UAAI,MAAM,QAAQ;AAClB,YAAM,mBAAmB,GAAG;AAC5B,YAAM,SAAS,MAAM;AACjB,UAAA,UAAU,QAAQ,WAAW;AAAI;AACrC,UAAI,WAAW,SAAS;AACf,eAAA,KAAK,KAAK,MAAO,MAAiB;AAAA,MAAA,OACpC;AACL,eAAO,OAAO,YAAY;AAAA,UACxB,MAAM;AAAA,UACN,KAAK;AAAA,WACJ,GAAG;AAAA,MACR;AAAA,IAAA;AAEK,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageConfig.vue.js","sources":["../../../src/setting/page-config/PageConfig.vue"],"sourcesContent":["<template>\n <div id=\"container\" ref=\"container\">\n <template v-if=\"ready\">\n <div\n class=\"page-config\"\n :style=\"style\"\n >\n <slot></slot>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick, computed, ref, onMounted, onUnmounted } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { pageConfigComponentProps } from './props'\nimport { useImagePath } from '@/hooks'\nexport default defineComponent({\n name: 'EcanPageConfig',\n inheritAttrs: false,\n props: {\n ...pageConfigComponentProps\n },\n setup (props) {\n // 大屏设计容器\n const style = computed(() => ({\n width: props.width,\n height: props.height,\n backgroundColor: props.backgroundColor,\n backgroundImage: useImagePath(props.backgroundImage as string, true),\n backgroundSize: props.backgroundSize\n }))\n const width = ref(0)\n const height = ref(0)\n const originalWidth = ref(0)\n const originalHeight = ref(0)\n const ready = ref(false)\n const container = ref()\n let observer: MutationObserver | null\n const initSize = () => {\n return new Promise<void>((resolve) => {\n nextTick(() => {\n // 获取大屏的真实尺寸\n if (props.width && props.height) {\n width.value = parseFloat(props.width)\n height.value = parseFloat(props.height)\n } else {\n width.value = container.value.clientWidth\n height.value = container.value.clientHeight\n }\n // 获取画布尺寸\n if (!originalWidth.value || !originalHeight.value) {\n originalWidth.value = window.screen.width\n originalHeight.value = window.screen.height\n }\n resolve()\n })\n })\n }\n const updateSize = () => {\n if (width.value && height.value) {\n container.value.style.width = `${width.value}px`\n container.value.style.height = `${height.value}px`\n } else {\n container.value.style.width = `${originalWidth.value}px`\n container.value.style.height = `${originalHeight.value}px`\n }\n }\n const updateScale = () => {\n // 获取真实的视口尺寸\n const currentWidth = document.body.clientWidth\n const currentHeight = document.body.clientHeight\n // 获取大屏最终的宽高\n const realWidth = width.value || originalWidth.value\n const realHeight = height.value || originalHeight.value\n const widthScale = currentWidth / realWidth\n const heightScale = currentHeight / realHeight\n container.value && (container.value.style.transform = `scale(${widthScale}, ${heightScale})`)\n }\n const onResize = async () => {\n await initSize()\n updateScale()\n }\n const initMutationObserver = () => {\n const MutationObserver = window.MutationObserver\n observer = new MutationObserver(onResize)\n observer.observe(container.value, {\n attributes: true,\n attributeFilter: ['style'],\n attributeOldValue: true\n })\n }\n const removeMutationObserver = () => {\n if (observer) {\n observer.disconnect()\n observer.takeRecords()\n observer = null\n }\n }\n onMounted(async () => {\n ready.value = false\n await initSize()\n updateSize()\n updateScale()\n window.addEventListener('resize', debounce(onResize, 100))\n initMutationObserver()\n ready.value = true\n })\n onUnmounted(() => {\n window.removeEventListener('resize', onResize)\n removeMutationObserver()\n })\n return {\n style,\n container,\n ready\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n#container {\n position: fixed;\n top: 0;\n left: 0;\n overflow: hidden;\n transform-origin: left top;\n z-index: 999;\n}\n.page-config {\n position: relative;\n overflow: hidden;\n background-size: cover;\n}\n</style>\n"],"names":["_createElementBlock","_openBlock","_normalizeStyle"],"mappings":";;;;MACyB,aAAY;AAAA,EAAA,IAAA;AAAA;;SACjB,YAAK,MAAA,QAAA,QAAA,QAAA,OAAA,UAAA;sBACnBA,mBAKM,OAAA,YAAA;AAAA,IAAA,KAAA,SAAAC,aAJeD,mBAAA,OAAA;AAAA,MAClB,KAAK;AAAA,MAAA,OAAA;AAAA,MAEN,OAAaE,eAAA,KAAA,KAAA;AAAA,IAAA,GAAA;AAAA;;;;;"}
1
+ {"version":3,"file":"PageConfig.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageConfig.vue2.js","sources":["../../../src/setting/page-config/PageConfig.vue"],"sourcesContent":["<template>\n <div id=\"container\" ref=\"container\">\n <template v-if=\"ready\">\n <div\n class=\"page-config\"\n :style=\"style\"\n >\n <slot></slot>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, nextTick, computed, ref, onMounted, onUnmounted } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { pageConfigComponentProps } from './props'\nimport { useImagePath } from '@/hooks'\nexport default defineComponent({\n name: 'EcanPageConfig',\n inheritAttrs: false,\n props: {\n ...pageConfigComponentProps\n },\n setup (props) {\n // 大屏设计容器\n const style = computed(() => ({\n width: props.width,\n height: props.height,\n backgroundColor: props.backgroundColor,\n backgroundImage: useImagePath(props.backgroundImage as string, true),\n backgroundSize: props.backgroundSize\n }))\n const width = ref(0)\n const height = ref(0)\n const originalWidth = ref(0)\n const originalHeight = ref(0)\n const ready = ref(false)\n const container = ref()\n let observer: MutationObserver | null\n const initSize = () => {\n return new Promise<void>((resolve) => {\n nextTick(() => {\n // 获取大屏的真实尺寸\n if (props.width && props.height) {\n width.value = parseFloat(props.width)\n height.value = parseFloat(props.height)\n } else {\n width.value = container.value.clientWidth\n height.value = container.value.clientHeight\n }\n // 获取画布尺寸\n if (!originalWidth.value || !originalHeight.value) {\n originalWidth.value = window.screen.width\n originalHeight.value = window.screen.height\n }\n resolve()\n })\n })\n }\n const updateSize = () => {\n if (width.value && height.value) {\n container.value.style.width = `${width.value}px`\n container.value.style.height = `${height.value}px`\n } else {\n container.value.style.width = `${originalWidth.value}px`\n container.value.style.height = `${originalHeight.value}px`\n }\n }\n const updateScale = () => {\n // 获取真实的视口尺寸\n const currentWidth = document.body.clientWidth\n const currentHeight = document.body.clientHeight\n // 获取大屏最终的宽高\n const realWidth = width.value || originalWidth.value\n const realHeight = height.value || originalHeight.value\n const widthScale = currentWidth / realWidth\n const heightScale = currentHeight / realHeight\n container.value && (container.value.style.transform = `scale(${widthScale}, ${heightScale})`)\n }\n const onResize = async () => {\n await initSize()\n updateScale()\n }\n const initMutationObserver = () => {\n const MutationObserver = window.MutationObserver\n observer = new MutationObserver(onResize)\n observer.observe(container.value, {\n attributes: true,\n attributeFilter: ['style'],\n attributeOldValue: true\n })\n }\n const removeMutationObserver = () => {\n if (observer) {\n observer.disconnect()\n observer.takeRecords()\n observer = null\n }\n }\n onMounted(async () => {\n ready.value = false\n await initSize()\n updateSize()\n updateScale()\n window.addEventListener('resize', debounce(onResize, 100))\n initMutationObserver()\n ready.value = true\n })\n onUnmounted(() => {\n window.removeEventListener('resize', onResize)\n removeMutationObserver()\n })\n return {\n style,\n container,\n ready\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n#container {\n position: fixed;\n top: 0;\n left: 0;\n overflow: hidden;\n transform-origin: left top;\n z-index: 999;\n}\n.page-config {\n position: relative;\n overflow: hidden;\n background-size: cover;\n}\n</style>\n"],"names":[],"mappings":";;;;AAkBA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,cAAc;AAAA,EACd,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AAEN,UAAA,QAAQ,SAAS,OAAO;AAAA,MAC5B,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,MACd,iBAAiB,MAAM;AAAA,MACvB,iBAAiB,aAAa,MAAM,iBAA2B,IAAI;AAAA,MACnE,gBAAgB,MAAM;AAAA,IACtB,EAAA;AACI,UAAA,QAAQ,IAAI,CAAC;AACb,UAAA,SAAS,IAAI,CAAC;AACd,UAAA,gBAAgB,IAAI,CAAC;AACrB,UAAA,iBAAiB,IAAI,CAAC;AACtB,UAAA,QAAQ,IAAI,KAAK;AACvB,UAAM,YAAY;AACd,QAAA;AACJ,UAAM,WAAW,MAAM;AACd,aAAA,IAAI,QAAc,CAAC,YAAY;AACpC,iBAAS,MAAM;AAET,cAAA,MAAM,SAAS,MAAM,QAAQ;AACzB,kBAAA,QAAQ,WAAW,MAAM,KAAK;AAC7B,mBAAA,QAAQ,WAAW,MAAM,MAAM;AAAA,UAAA,OACjC;AACC,kBAAA,QAAQ,UAAU,MAAM;AACvB,mBAAA,QAAQ,UAAU,MAAM;AAAA,UACjC;AAEA,cAAI,CAAC,cAAc,SAAS,CAAC,eAAe,OAAO;AACnC,0BAAA,QAAQ,OAAO,OAAO;AACrB,2BAAA,QAAQ,OAAO,OAAO;AAAA,UACvC;AACQ;QAAA,CACT;AAAA,MAAA,CACF;AAAA,IAAA;AAEH,UAAM,aAAa,MAAM;AACnB,UAAA,MAAM,SAAS,OAAO,OAAO;AAC/B,kBAAU,MAAM,MAAM,QAAQ,GAAG,MAAM;AACvC,kBAAU,MAAM,MAAM,SAAS,GAAG,OAAO;AAAA,MAAA,OACpC;AACL,kBAAU,MAAM,MAAM,QAAQ,GAAG,cAAc;AAC/C,kBAAU,MAAM,MAAM,SAAS,GAAG,eAAe;AAAA,MACnD;AAAA,IAAA;AAEF,UAAM,cAAc,MAAM;AAElB,YAAA,eAAe,SAAS,KAAK;AAC7B,YAAA,gBAAgB,SAAS,KAAK;AAE9B,YAAA,YAAY,MAAM,SAAS,cAAc;AACzC,YAAA,aAAa,OAAO,SAAS,eAAe;AAClD,YAAM,aAAa,eAAe;AAClC,YAAM,cAAc,gBAAgB;AACpC,gBAAU,UAAU,UAAU,MAAM,MAAM,YAAY,SAAS,eAAe;AAAA,IAAA;AAEhF,UAAM,WAAW,YAAY;AAC3B,YAAM,SAAS;AACH;IAAA;AAEd,UAAM,uBAAuB,MAAM;AACjC,YAAM,mBAAmB,OAAO;AACrB,iBAAA,IAAI,iBAAiB,QAAQ;AAC/B,eAAA,QAAQ,UAAU,OAAO;AAAA,QAChC,YAAY;AAAA,QACZ,iBAAiB,CAAC,OAAO;AAAA,QACzB,mBAAmB;AAAA,MAAA,CACpB;AAAA,IAAA;AAEH,UAAM,yBAAyB,MAAM;AACnC,UAAI,UAAU;AACZ,iBAAS,WAAW;AACpB,iBAAS,YAAY;AACV,mBAAA;AAAA,MACb;AAAA,IAAA;AAEF,cAAU,YAAY;AACpB,YAAM,QAAQ;AACd,YAAM,SAAS;AACJ;AACC;AACZ,aAAO,iBAAiB,UAAU,SAAS,UAAU,GAAG,CAAC;AACpC;AACrB,YAAM,QAAQ;AAAA,IAAA,CACf;AACD,gBAAY,MAAM;AACT,aAAA,oBAAoB,UAAU,QAAQ;AACtB;IAAA,CACxB;AACM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
1
+ {"version":3,"file":"PageConfig.vue2.js","sources":["../../../src/setting/page-config/PageConfig.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { defineComponent, nextTick, computed, ref, onMounted, onUnmounted } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { pageConfigComponentProps } from './props'\nimport { useImagePath } from '@/hooks'\nexport default defineComponent({\n name: 'EcanPageConfig',\n inheritAttrs: false,\n props: {\n ...pageConfigComponentProps\n },\n setup (props) {\n // 大屏设计容器\n const style = computed(() => ({\n width: props.width,\n height: props.height,\n backgroundColor: props.backgroundColor,\n backgroundImage: useImagePath(props.backgroundImage as string, true),\n backgroundSize: props.backgroundSize\n }))\n const width = ref(0)\n const height = ref(0)\n const originalWidth = ref(0)\n const originalHeight = ref(0)\n const ready = ref(false)\n const container = ref()\n let observer: MutationObserver | null\n const initSize = () => {\n return new Promise<void>((resolve) => {\n nextTick(() => {\n // 获取大屏的真实尺寸\n if (props.width && props.height) {\n width.value = parseFloat(props.width)\n height.value = parseFloat(props.height)\n } else {\n width.value = container.value.clientWidth\n height.value = container.value.clientHeight\n }\n // 获取画布尺寸\n if (!originalWidth.value || !originalHeight.value) {\n originalWidth.value = window.screen.width\n originalHeight.value = window.screen.height\n }\n resolve()\n })\n })\n }\n const updateSize = () => {\n if (width.value && height.value) {\n container.value.style.width = `${width.value}px`\n container.value.style.height = `${height.value}px`\n } else {\n container.value.style.width = `${originalWidth.value}px`\n container.value.style.height = `${originalHeight.value}px`\n }\n }\n const updateScale = () => {\n // 获取真实的视口尺寸\n const currentWidth = document.body.clientWidth\n const currentHeight = document.body.clientHeight\n // 获取大屏最终的宽高\n const realWidth = width.value || originalWidth.value\n const realHeight = height.value || originalHeight.value\n const widthScale = currentWidth / realWidth\n const heightScale = currentHeight / realHeight\n container.value && (container.value.style.transform = `scale(${widthScale}, ${heightScale})`)\n }\n const onResize = async () => {\n await initSize()\n updateScale()\n }\n const initMutationObserver = () => {\n const MutationObserver = window.MutationObserver\n observer = new MutationObserver(onResize)\n observer.observe(container.value, {\n attributes: true,\n attributeFilter: ['style'],\n attributeOldValue: true\n })\n }\n const removeMutationObserver = () => {\n if (observer) {\n observer.disconnect()\n observer.takeRecords()\n observer = null\n }\n }\n onMounted(async () => {\n ready.value = false\n await initSize()\n updateSize()\n updateScale()\n window.addEventListener('resize', debounce(onResize, 100))\n initMutationObserver()\n ready.value = true\n })\n onUnmounted(() => {\n window.removeEventListener('resize', onResize)\n removeMutationObserver()\n })\n return {\n style,\n container,\n ready\n }\n }\n})\n"],"names":[],"mappings":";;;;AAKA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,cAAc;AAAA,EACd,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AAEN,UAAA,QAAQ,SAAS,OAAO;AAAA,MAC5B,OAAO,MAAM;AAAA,MACb,QAAQ,MAAM;AAAA,MACd,iBAAiB,MAAM;AAAA,MACvB,iBAAiB,aAAa,MAAM,iBAA2B,IAAI;AAAA,MACnE,gBAAgB,MAAM;AAAA,IACtB,EAAA;AACI,UAAA,QAAQ,IAAI,CAAC;AACb,UAAA,SAAS,IAAI,CAAC;AACd,UAAA,gBAAgB,IAAI,CAAC;AACrB,UAAA,iBAAiB,IAAI,CAAC;AACtB,UAAA,QAAQ,IAAI,KAAK;AACvB,UAAM,YAAY;AACd,QAAA;AACJ,UAAM,WAAW,MAAM;AACd,aAAA,IAAI,QAAc,CAAC,YAAY;AACpC,iBAAS,MAAM;AAET,cAAA,MAAM,SAAS,MAAM,QAAQ;AACzB,kBAAA,QAAQ,WAAW,MAAM,KAAK;AAC7B,mBAAA,QAAQ,WAAW,MAAM,MAAM;AAAA,UAAA,OACjC;AACC,kBAAA,QAAQ,UAAU,MAAM;AACvB,mBAAA,QAAQ,UAAU,MAAM;AAAA,UACjC;AAEA,cAAI,CAAC,cAAc,SAAS,CAAC,eAAe,OAAO;AACnC,0BAAA,QAAQ,OAAO,OAAO;AACrB,2BAAA,QAAQ,OAAO,OAAO;AAAA,UACvC;AACQ;QAAA,CACT;AAAA,MAAA,CACF;AAAA,IAAA;AAEH,UAAM,aAAa,MAAM;AACnB,UAAA,MAAM,SAAS,OAAO,OAAO;AAC/B,kBAAU,MAAM,MAAM,QAAQ,GAAG,MAAM;AACvC,kBAAU,MAAM,MAAM,SAAS,GAAG,OAAO;AAAA,MAAA,OACpC;AACL,kBAAU,MAAM,MAAM,QAAQ,GAAG,cAAc;AAC/C,kBAAU,MAAM,MAAM,SAAS,GAAG,eAAe;AAAA,MACnD;AAAA,IAAA;AAEF,UAAM,cAAc,MAAM;AAElB,YAAA,eAAe,SAAS,KAAK;AAC7B,YAAA,gBAAgB,SAAS,KAAK;AAE9B,YAAA,YAAY,MAAM,SAAS,cAAc;AACzC,YAAA,aAAa,OAAO,SAAS,eAAe;AAClD,YAAM,aAAa,eAAe;AAClC,YAAM,cAAc,gBAAgB;AACpC,gBAAU,UAAU,UAAU,MAAM,MAAM,YAAY,SAAS,eAAe;AAAA,IAAA;AAEhF,UAAM,WAAW,YAAY;AAC3B,YAAM,SAAS;AACH;IAAA;AAEd,UAAM,uBAAuB,MAAM;AACjC,YAAM,mBAAmB,OAAO;AACrB,iBAAA,IAAI,iBAAiB,QAAQ;AAC/B,eAAA,QAAQ,UAAU,OAAO;AAAA,QAChC,YAAY;AAAA,QACZ,iBAAiB,CAAC,OAAO;AAAA,QACzB,mBAAmB;AAAA,MAAA,CACpB;AAAA,IAAA;AAEH,UAAM,yBAAyB,MAAM;AACnC,UAAI,UAAU;AACZ,iBAAS,WAAW;AACpB,iBAAS,YAAY;AACV,mBAAA;AAAA,MACb;AAAA,IAAA;AAEF,cAAU,YAAY;AACpB,YAAM,QAAQ;AACd,YAAM,SAAS;AACJ;AACC;AACZ,aAAO,iBAAiB,UAAU,SAAS,UAAU,GAAG,CAAC;AACpC;AACrB,YAAM,QAAQ;AAAA,IAAA,CACf;AACD,gBAAY,MAAM;AACT,aAAA,oBAAoB,UAAU,QAAQ;AACtB;IAAA,CACxB;AACM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderConfig.vue.js","sources":["../../../src/setting/provider-config/ProviderConfig.vue"],"sourcesContent":["<template>\n <!-- 请勿去除属性id -->\n <div id=\"ProviderConfig\" ref=\"providerConfig\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, ref, onMounted, watch, computed, unref, onBeforeUnmount } from 'vue'\nimport mitt from 'mitt'\nimport { EVENT_BUS, GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL, INDICATOR_URL, GLOBAL_TOKEN, REFRESH_PAGE } from '@/utils/constant'\nimport { providerConfigComponentProps } from './props'\nimport { useVariablesInText, useHrefParamsToGlobalVariables } from '@/hooks'\nimport axios from 'axios'\nimport { RequestModalParam } from '@/utils/types'\n\nexport default defineComponent({\n name: 'EcanProviderConfig',\n inheritAttrs: false,\n props: {\n ...providerConfigComponentProps\n },\n setup (props, { expose }) {\n useHrefParamsToGlobalVariables()\n\n const providerConfig = ref<HTMLElement>()\n const setTheme = () => {\n providerConfig.value.setAttribute('datav-theme', props.theme as string)\n }\n watch(() => props.theme, () => {\n setTheme()\n })\n onMounted(() => {\n setTheme()\n })\n const contextRequestUrl = computed(() => {\n return useVariablesInText(props.contextRequestUrl as string)\n })\n const pageMode = computed(() => props.pageMode)\n const theme = computed(() => props.theme)\n // 当前组件主动触发ID\n const touchEventId = ref<string>('')\n // 提供全局设置\n provide(GLOBAL_CONFIG, {\n // 请求地址\n contextRequestUrl,\n // 模式(设计、预览、正常):目前主要配置初始化是否发起请求\n pageMode,\n // 主题\n theme,\n touchEventId\n })\n\n // 提供全局变量\n const globalModel = new Map()\n const getGlobalModel = (key: string) => {\n return globalModel.get(key)\n }\n const setGlobalModel = (key: string, value: any) => {\n globalModel.set(key, value)\n }\n provide(GLOBAL_MODEL, {\n getGlobalModel,\n setGlobalModel\n })\n\n // 提供事件\n const eventBus = mitt()\n const eventBusKeySet = new Set()\n const onEvent = (key: string, events: { [key:string]: any }) => {\n if (eventBusKeySet.has(key)) {\n eventBus.off(key)\n }\n eventBus.on(key, (k: string) => {\n eventBusKeySet.add(key)\n return Object.prototype.toString.call(events[k]) === '[object Function]' && events[k]()\n })\n onBeforeUnmount(() => {\n eventBus.off(key)\n })\n }\n const offEvent = (key) => {\n eventBus.off(key)\n }\n const emitEvent = (key: string, eventName: string) => {\n eventBus.emit(key, eventName)\n }\n provide(EVENT_BUS, {\n onEvent,\n offEvent,\n emitEvent\n })\n\n // 设置是否请求 token\n const tokenNum = ref(0)\n const requestToken = () => {\n tokenNum.value = unref(tokenNum) + 1\n }\n provide(GLOBAL_TOKEN, {\n requestToken\n })\n // 请求排序\n const requestModel = new Map()\n const requestMap = new Map()\n const setRequest = ({ requestFn = () => {}, sortNum = 0, id = '' }: RequestModalParam) => {\n if (requestModel.has(sortNum)) {\n const requestFnList = requestModel.get(sortNum)\n requestFnList?.push(requestFn)\n } else {\n requestModel.set(sortNum, [requestFn])\n }\n requestMap.set(id, requestFn)\n }\n const handleRequestFnList = (requestFnList: Array<Function>) => {\n return new Promise((resolve, reject) => {\n const resultList = requestFnList.map(requestFn => requestFn())\n Promise.all(resultList)\n .then(list => {\n resolve(list)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n // 指标库模块请求 token\n const queryUserToken = async () => {\n const res = await axios.get(`${INDICATOR_URL}/user/anonymous?username=admin`, {\n headers: {\n systemCode: 'F72FC50A3D97372514A6AC33333D28FD',\n current_context: 'ygt'\n }\n })\n // 设置 token 挂载在 window.config 上\n // @ts-ignore\n // eslint-disable-next-line\n config.indicatorToken = res.data.data?.token\n }\n const touchRequest = async (id: undefined | string) => {\n // 传空默认触发全部\n if (!id) {\n const requestModelArr = Array.from(requestModel)\n // 排序\n requestModelArr.sort((a, b) => b[0] - a[0])\n const len = requestModelArr.length\n try {\n // 指标库模块需要 token\n // 页面不为design 请求次数 token 不为0\n if (props.pageMode !== 'design' && unref(tokenNum) > 0) {\n await queryUserToken()\n }\n for (let i = 0; i < len; i++) {\n const requestFnList = requestModelArr[i][1]\n await handleRequestFnList(requestFnList)\n }\n } catch (e) {\n console.error(e)\n } finally {\n // 执行完直接清空\n requestModel.clear()\n }\n } else if (typeof id === 'string') {\n const requestFn = requestMap.get(id)\n if (typeof requestFn === 'function') {\n requestFn()\n }\n }\n }\n\n provide(REQUEST_MODEL, {\n setRequest,\n touchRequest\n })\n\n const emitRefreshPage = () => {\n eventBus.emit(REFRESH_PAGE)\n }\n provide(REFRESH_PAGE, {\n emitRefreshPage\n })\n // const notRenderSet = ref(new Set())\n // const refreshEventBus = mitt()\n const onRefreshPage = (callBack: Function) => {\n eventBus.on(REFRESH_PAGE, () => callBack())\n onMounted(() => {\n eventBus.off(REFRESH_PAGE)\n })\n }\n\n onBeforeUnmount(() => {\n requestModel?.clear()\n requestMap?.clear()\n })\n\n expose({\n touchRequest,\n getGlobalModel,\n onRefreshPage\n })\n\n return {\n providerConfig\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n"],"names":[],"mappings":";;;MAE8B,aAAC;AAAA,EAAA,IAAA;AAAA;;SAC3B,YAAa,MAAA,QAAA,QAAA,QAAA,OAAA,UAAA;;;;;;"}
1
+ {"version":3,"file":"ProviderConfig.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProviderConfig.vue2.js","sources":["../../../src/setting/provider-config/ProviderConfig.vue"],"sourcesContent":["<template>\n <!-- 请勿去除属性id -->\n <div id=\"ProviderConfig\" ref=\"providerConfig\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, ref, onMounted, watch, computed, unref, onBeforeUnmount } from 'vue'\nimport mitt from 'mitt'\nimport { EVENT_BUS, GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL, INDICATOR_URL, GLOBAL_TOKEN, REFRESH_PAGE } from '@/utils/constant'\nimport { providerConfigComponentProps } from './props'\nimport { useVariablesInText, useHrefParamsToGlobalVariables } from '@/hooks'\nimport axios from 'axios'\nimport { RequestModalParam } from '@/utils/types'\n\nexport default defineComponent({\n name: 'EcanProviderConfig',\n inheritAttrs: false,\n props: {\n ...providerConfigComponentProps\n },\n setup (props, { expose }) {\n useHrefParamsToGlobalVariables()\n\n const providerConfig = ref<HTMLElement>()\n const setTheme = () => {\n providerConfig.value.setAttribute('datav-theme', props.theme as string)\n }\n watch(() => props.theme, () => {\n setTheme()\n })\n onMounted(() => {\n setTheme()\n })\n const contextRequestUrl = computed(() => {\n return useVariablesInText(props.contextRequestUrl as string)\n })\n const pageMode = computed(() => props.pageMode)\n const theme = computed(() => props.theme)\n // 当前组件主动触发ID\n const touchEventId = ref<string>('')\n // 提供全局设置\n provide(GLOBAL_CONFIG, {\n // 请求地址\n contextRequestUrl,\n // 模式(设计、预览、正常):目前主要配置初始化是否发起请求\n pageMode,\n // 主题\n theme,\n touchEventId\n })\n\n // 提供全局变量\n const globalModel = new Map()\n const getGlobalModel = (key: string) => {\n return globalModel.get(key)\n }\n const setGlobalModel = (key: string, value: any) => {\n globalModel.set(key, value)\n }\n provide(GLOBAL_MODEL, {\n getGlobalModel,\n setGlobalModel\n })\n\n // 提供事件\n const eventBus = mitt()\n const eventBusKeySet = new Set()\n const onEvent = (key: string, events: { [key:string]: any }) => {\n if (eventBusKeySet.has(key)) {\n eventBus.off(key)\n }\n eventBus.on(key, (k: string) => {\n eventBusKeySet.add(key)\n return Object.prototype.toString.call(events[k]) === '[object Function]' && events[k]()\n })\n onBeforeUnmount(() => {\n eventBus.off(key)\n })\n }\n const offEvent = (key) => {\n eventBus.off(key)\n }\n const emitEvent = (key: string, eventName: string) => {\n eventBus.emit(key, eventName)\n }\n provide(EVENT_BUS, {\n onEvent,\n offEvent,\n emitEvent\n })\n\n // 设置是否请求 token\n const tokenNum = ref(0)\n const requestToken = () => {\n tokenNum.value = unref(tokenNum) + 1\n }\n provide(GLOBAL_TOKEN, {\n requestToken\n })\n // 请求排序\n const requestModel = new Map()\n const requestMap = new Map()\n const setRequest = ({ requestFn = () => {}, sortNum = 0, id = '' }: RequestModalParam) => {\n if (requestModel.has(sortNum)) {\n const requestFnList = requestModel.get(sortNum)\n requestFnList?.push(requestFn)\n } else {\n requestModel.set(sortNum, [requestFn])\n }\n requestMap.set(id, requestFn)\n }\n const handleRequestFnList = (requestFnList: Array<Function>) => {\n return new Promise((resolve, reject) => {\n const resultList = requestFnList.map(requestFn => requestFn())\n Promise.all(resultList)\n .then(list => {\n resolve(list)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n // 指标库模块请求 token\n const queryUserToken = async () => {\n const res = await axios.get(`${INDICATOR_URL}/user/anonymous?username=admin`, {\n headers: {\n systemCode: 'F72FC50A3D97372514A6AC33333D28FD',\n current_context: 'ygt'\n }\n })\n // 设置 token 挂载在 window.config 上\n // @ts-ignore\n // eslint-disable-next-line\n config.indicatorToken = res.data.data?.token\n }\n const touchRequest = async (id: undefined | string) => {\n // 传空默认触发全部\n if (!id) {\n const requestModelArr = Array.from(requestModel)\n // 排序\n requestModelArr.sort((a, b) => b[0] - a[0])\n const len = requestModelArr.length\n try {\n // 指标库模块需要 token\n // 页面不为design 请求次数 token 不为0\n if (props.pageMode !== 'design' && unref(tokenNum) > 0) {\n await queryUserToken()\n }\n for (let i = 0; i < len; i++) {\n const requestFnList = requestModelArr[i][1]\n await handleRequestFnList(requestFnList)\n }\n } catch (e) {\n console.error(e)\n } finally {\n // 执行完直接清空\n requestModel.clear()\n }\n } else if (typeof id === 'string') {\n const requestFn = requestMap.get(id)\n if (typeof requestFn === 'function') {\n requestFn()\n }\n }\n }\n\n provide(REQUEST_MODEL, {\n setRequest,\n touchRequest\n })\n\n const emitRefreshPage = () => {\n eventBus.emit(REFRESH_PAGE)\n }\n provide(REFRESH_PAGE, {\n emitRefreshPage\n })\n // const notRenderSet = ref(new Set())\n // const refreshEventBus = mitt()\n const onRefreshPage = (callBack: Function) => {\n eventBus.on(REFRESH_PAGE, () => callBack())\n onMounted(() => {\n eventBus.off(REFRESH_PAGE)\n })\n }\n\n onBeforeUnmount(() => {\n requestModel?.clear()\n requestMap?.clear()\n })\n\n expose({\n touchRequest,\n getGlobalModel,\n onRefreshPage\n })\n\n return {\n providerConfig\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProviderConfig.vue2.js","sources":["../../../src/setting/provider-config/ProviderConfig.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { defineComponent, provide, ref, onMounted, watch, computed, unref, onBeforeUnmount } from 'vue'\nimport mitt from 'mitt'\nimport { EVENT_BUS, GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL, INDICATOR_URL, GLOBAL_TOKEN, REFRESH_PAGE } from '@/utils/constant'\nimport { providerConfigComponentProps } from './props'\nimport { useVariablesInText, useHrefParamsToGlobalVariables } from '@/hooks'\nimport axios from 'axios'\nimport { RequestModalParam } from '@/utils/types'\n\nexport default defineComponent({\n name: 'EcanProviderConfig',\n inheritAttrs: false,\n props: {\n ...providerConfigComponentProps\n },\n setup (props, { expose }) {\n useHrefParamsToGlobalVariables()\n\n const providerConfig = ref<HTMLElement>()\n const setTheme = () => {\n providerConfig.value.setAttribute('datav-theme', props.theme as string)\n }\n watch(() => props.theme, () => {\n setTheme()\n })\n onMounted(() => {\n setTheme()\n })\n const contextRequestUrl = computed(() => {\n return useVariablesInText(props.contextRequestUrl as string)\n })\n const pageMode = computed(() => props.pageMode)\n const theme = computed(() => props.theme)\n // 当前组件主动触发ID\n const touchEventId = ref<string>('')\n // 提供全局设置\n provide(GLOBAL_CONFIG, {\n // 请求地址\n contextRequestUrl,\n // 模式(设计、预览、正常):目前主要配置初始化是否发起请求\n pageMode,\n // 主题\n theme,\n touchEventId\n })\n\n // 提供全局变量\n const globalModel = new Map()\n const getGlobalModel = (key: string) => {\n return globalModel.get(key)\n }\n const setGlobalModel = (key: string, value: any) => {\n globalModel.set(key, value)\n }\n provide(GLOBAL_MODEL, {\n getGlobalModel,\n setGlobalModel\n })\n\n // 提供事件\n const eventBus = mitt()\n const eventBusKeySet = new Set()\n const onEvent = (key: string, events: { [key:string]: any }) => {\n if (eventBusKeySet.has(key)) {\n eventBus.off(key)\n }\n eventBus.on(key, (k: string) => {\n eventBusKeySet.add(key)\n return Object.prototype.toString.call(events[k]) === '[object Function]' && events[k]()\n })\n onBeforeUnmount(() => {\n eventBus.off(key)\n })\n }\n const offEvent = (key) => {\n eventBus.off(key)\n }\n const emitEvent = (key: string, eventName: string) => {\n eventBus.emit(key, eventName)\n }\n provide(EVENT_BUS, {\n onEvent,\n offEvent,\n emitEvent\n })\n\n // 设置是否请求 token\n const tokenNum = ref(0)\n const requestToken = () => {\n tokenNum.value = unref(tokenNum) + 1\n }\n provide(GLOBAL_TOKEN, {\n requestToken\n })\n // 请求排序\n const requestModel = new Map()\n const requestMap = new Map()\n const setRequest = ({ requestFn = () => {}, sortNum = 0, id = '' }: RequestModalParam) => {\n if (requestModel.has(sortNum)) {\n const requestFnList = requestModel.get(sortNum)\n requestFnList?.push(requestFn)\n } else {\n requestModel.set(sortNum, [requestFn])\n }\n requestMap.set(id, requestFn)\n }\n const handleRequestFnList = (requestFnList: Array<Function>) => {\n return new Promise((resolve, reject) => {\n const resultList = requestFnList.map(requestFn => requestFn())\n Promise.all(resultList)\n .then(list => {\n resolve(list)\n })\n .catch(err => {\n reject(err)\n })\n })\n }\n // 指标库模块请求 token\n const queryUserToken = async () => {\n const res = await axios.get(`${INDICATOR_URL}/user/anonymous?username=admin`, {\n headers: {\n systemCode: 'F72FC50A3D97372514A6AC33333D28FD',\n current_context: 'ygt'\n }\n })\n // 设置 token 挂载在 window.config 上\n // @ts-ignore\n // eslint-disable-next-line\n config.indicatorToken = res.data.data?.token\n }\n const touchRequest = async (id: undefined | string) => {\n // 传空默认触发全部\n if (!id) {\n const requestModelArr = Array.from(requestModel)\n // 排序\n requestModelArr.sort((a, b) => b[0] - a[0])\n const len = requestModelArr.length\n try {\n // 指标库模块需要 token\n // 页面不为design 请求次数 token 不为0\n if (props.pageMode !== 'design' && unref(tokenNum) > 0) {\n await queryUserToken()\n }\n for (let i = 0; i < len; i++) {\n const requestFnList = requestModelArr[i][1]\n await handleRequestFnList(requestFnList)\n }\n } catch (e) {\n console.error(e)\n } finally {\n // 执行完直接清空\n requestModel.clear()\n }\n } else if (typeof id === 'string') {\n const requestFn = requestMap.get(id)\n if (typeof requestFn === 'function') {\n requestFn()\n }\n }\n }\n\n provide(REQUEST_MODEL, {\n setRequest,\n touchRequest\n })\n\n const emitRefreshPage = () => {\n eventBus.emit(REFRESH_PAGE)\n }\n provide(REFRESH_PAGE, {\n emitRefreshPage\n })\n // const notRenderSet = ref(new Set())\n // const refreshEventBus = mitt()\n const onRefreshPage = (callBack: Function) => {\n eventBus.on(REFRESH_PAGE, () => callBack())\n onMounted(() => {\n eventBus.off(REFRESH_PAGE)\n })\n }\n\n onBeforeUnmount(() => {\n requestModel?.clear()\n requestMap?.clear()\n })\n\n expose({\n touchRequest,\n getGlobalModel,\n onRefreshPage\n })\n\n return {\n providerConfig\n }\n }\n})\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.vue.js","sources":["../../../src/table/table/Table.vue"],"sourcesContent":["<template>\n <div class=\"ecan-table\" :style=\"style\">\n <skeleton :loading=\"loading\">\n <a-table\n class=\"table\"\n :style=\"{\n height: '100%'\n }\"\n :columns=\"tableColumns\"\n :data-source=\"tableDataSource\"\n :bordered=\"bordered\"\n :size=\"size\"\n :customRow=\"customRow\"\n :scroll=\"{ x, y }\"\n :pagination=\"pagination\"\n @change=\"tableChange\"\n >\n <template #customFilterDropdown=\"{ column, selectedKeys, setSelectedKeys, confirm, clearFilters }\">\n <div\n class=\"ecan-table-filter\"\n :style=\"{\n height: filterDropdownHeight\n }\"\n >\n <a-input\n v-model:value=\"column.filterOptionsInputValue\"\n placeholder=\"请输入关键字\"\n :value=\"selectedKeys[0]\"\n class=\"filter-input\"\n @change=\"onSearchFilterOptions\"\n />\n <a-checkbox-group\n v-model:value=\"column.filterCheckboxGroupValue\"\n class=\"filter-checkbox\"\n :options=\"useFilterOptions(column)\"\n @change=\"useSetSelectedKeys(setSelectedKeys, column)\"\n >\n </a-checkbox-group>\n <div>\n <a-button\n type=\"primary\"\n size=\"small\"\n style=\"width: 90px; margin-right: 8px\"\n @click=\"() => confirm()\"\n >\n 搜索\n </a-button>\n <a-button\n size=\"small\"\n style=\"width: 90px\"\n @click=\"onResetFilter(clearFilters, column)\"\n >\n 重置\n </a-button>\n </div>\n </div>\n </template>\n <template #bodyCell=\"{ column, index, text, record }\">\n <template v-if=\"column.dataIndex === 'SEQ'\">\n <span>{{ index + 1 }}</span>\n </template>\n <!-- 操作列配置 -->\n <template v-if=\"column.dataIndex === 'ACTION'\">\n <div class=\"action-list\">\n <div class=\"action\" v-for=\"(action, index) in actionList\" :key=\"index\">\n <a\n :href=\"handleHref(action.href, record)\"\n :target=\"handleHrefTarget(action.target)\"\n :style=\"{\n color: action.color,\n fontSize,\n fontWeight\n }\"\n @click=\"onTouchHrefEvent(action.target, handleHref(action.href, record))\"\n >\n {{ action.title }}\n </a>\n </div>\n </div>\n </template>\n <template v-else>\n <div\n :class=\"[contrastClass(text, column.format)]\"\n :style=\"{\n fontSize,\n fontWeight\n }\"\n >\n {{ column.format != null ? formatFn(text, column.format) : text }}\n </div>\n </template>\n </template>\n <template #summary>\n <a-table-summary v-if=\"summaryList.length > 0\">\n <a-table-summary-row>\n <a-table-summary-cell\n v-for=\"(summary, index) in summaryList\"\n :key=\"index\"\n :index=\"index\"\n :style=\"{\n backgroundColor: cellBackgroundColor,\n textAlign: summary.cellAlign || 'center',\n color: summary.cellColor,\n borderBottomColor: borderColor,\n }\"\n >\n <div\n :class=\"[contrastClass(summary.total, summary.format)]\"\n :style=\"{\n fontSize,\n fontWeight\n }\"\n >\n {{ (summary.format != null || summary.format !== '') && formatFn(summary.total, summary.format) }}\n </div>\n </a-table-summary-cell>\n </a-table-summary-row>\n </a-table-summary>\n </template>\n </a-table>\n </skeleton>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject, reactive } from 'vue'\nimport {\n Input as AInput,\n CheckboxGroup as ACheckboxGroup,\n // Checkbox as ACheckbox,\n Table as ATable,\n TableSummary as ATableSummary,\n TableSummaryRow as ATableSummaryRow,\n TableSummaryCell as ATableSummaryCell\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/input/style'\nimport 'ant-design-vue/es/checkbox/style'\nimport 'ant-design-vue/es/table/style'\nimport {\n usePickComponentStyle,\n useEmitEvent,\n useRequestData,\n useOnEvent,\n useIndicatorData,\n useVariablesInText\n} from '@/hooks'\nimport { tableComponentProps } from './props'\nimport { formatMoney, formatPercentage } from '@/utils/util'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from '@/utils/constant'\nimport Skeleton from '@/common/skeleton/Skeleton.vue'\nimport { cloneDeep } from 'lodash-es'\nimport { RequestModalParam } from '@/utils/types'\nexport default defineComponent({\n name: 'EcanTable',\n components: {\n Skeleton,\n AInput,\n ACheckboxGroup,\n ATable,\n ATableSummary,\n ATableSummaryRow,\n ATableSummaryCell\n },\n props: {\n ...tableComponentProps\n },\n setup (props, { expose }) {\n const style = usePickComponentStyle(props)\n const splitY = computed(() => {\n if (props.paginationShow) {\n switch (props.size) {\n case 'small':\n return 90\n case 'middle':\n return 100\n default:\n return 120\n }\n } else {\n switch (props.size) {\n case 'small':\n return 40\n case 'middle':\n return 47\n default:\n return 55\n }\n }\n })\n const x = computed(() => props.scrollX)\n const y = computed(() => parseFloat(props.height as string) - unref(splitY))\n const myColumns = ref<{ [key: string]: any } []>([])\n const myDataSource = ref<{ [key: string]: any } []>([])\n const tableColumns = ref<{ [key: string]: any } []>([])\n const tableDataSource = ref<{ [key: string]: any } []>([])\n const total = ref(0)\n const pageNum = ref(1)\n const pageSize = computed(() => props.paginationPageSize as number)\n const filterDataIndexList = reactive([])\n const handleChildrenColumns = (_columns: { [key: string]: any } [] = []) => {\n if (Array.isArray(_columns) && _columns.length > 0) {\n const len = _columns.length\n const columnsFixedNum = props.columnsFixedNum as number\n // 这里的循环为了 props 是引用类型,会造成脏数据(上次修改后,还会存在上次的数据)\n // 如果使用深拷贝会造成性能的浪费,循环来说相对更快\n for (let i = 0; i < len; i++) {\n const column = _columns[i]\n if (i < columnsFixedNum) {\n column.fixed = 'left'\n } else {\n column.fixed = false\n }\n const {\n cellAlign = 'center',\n cellColor,\n dataIndex,\n title,\n tableFilter,\n headerCellAlign,\n headerCellColor\n } = column\n if (tableFilter) {\n filterDataIndexList.push(dataIndex)\n column.filterOptionsInputValue = ''\n column.filterCheckboxGroupValue = []\n column.customFilterDropdown = true\n column.onFilter = (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase())\n }\n // 通用配置\n // 头部单元格\n column.customHeaderCell = () => ({\n style: {\n display: 'table-cell',\n verticalAlign: 'middle',\n fontSize: props.headerFontSize,\n fontWeight: props.headerFontWeight,\n textAlign: headerCellAlign || 'center',\n color: headerCellColor,\n borderBottomColor: props.borderColor\n }\n })\n // 表格单元格\n column.customCell = (record, rowIndex) => ({\n style: {\n textAlign: cellAlign,\n color: cellColor,\n backgroundColor: props.cellBackgroundColor,\n borderBottomColor: props.borderColor\n },\n class: {\n highlight: unref(useRowIndex) === rowIndex && props.clickHighlight\n },\n onClick: emitEvent('click', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n record = {\n dataIndex,\n title,\n ...record\n }\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n })\n })\n if (Array.isArray(column.children)) {\n handleChildrenColumns(column.children)\n }\n }\n }\n }\n const handleColumns = (columns: { [key: string]: any } [] = []) => {\n // 复制表头数据\n if (props.isUseSeq) {\n // 添加序号\n columns.unshift({\n title: '序号',\n dataIndex: 'SEQ',\n align: 'center'\n })\n }\n // 添加操作列\n if (props.isUseAction) {\n columns.push({\n title: '操作',\n dataIndex: 'ACTION',\n width: props.actionColumnWidth\n })\n }\n handleChildrenColumns(columns)\n return columns\n }\n watch(() => [\n props.columns,\n props.isUseSeq,\n props.isUseAction,\n props.columnsFixedNum,\n props.actionColumnWidth,\n props.cellBackgroundColor,\n props.borderColor\n ], () => {\n myColumns.value = handleColumns(cloneDeep(props.columns as any []))\n }, {\n immediate: true,\n deep: true\n })\n watch(() => [props.data, props.dataType], ([data, dataType]) => {\n if (dataType !== 'static') return\n myDataSource.value = data as { [key:string]:any } []\n }, {\n immediate: true\n })\n const allFilterOptions = ref({})\n const handleFilterCheckboxOptions = (dataSource: { [key:string]: any } []) => {\n if (Array.isArray(dataSource)) {\n const dataLen = dataSource.length\n const keys = filterDataIndexList\n const keysLen = keys.length\n const filterOptionsMap: { [key:string]: Set<string> } = {}\n for (let i = 0; i < dataLen; i++) {\n const record = dataSource[i]\n for (let j = 0; j < keysLen; j++) {\n const key = keys[j]\n if (filterOptionsMap[key]) {\n filterOptionsMap[key].add(record[key])\n } else {\n const set = new Set<string>()\n set.add(record[key])\n filterOptionsMap[key] = set\n }\n }\n }\n const _allFilterOptions: { [key:string]: { label:string, value: string } [] } = {}\n for (const key in filterOptionsMap) {\n if (Object.prototype.hasOwnProperty.call(filterOptionsMap, key)) {\n const optionsSet = filterOptionsMap[key]\n const options = Array.from(optionsSet)\n _allFilterOptions[key] = options.map((option) => ({ label: option, value: option }))\n }\n }\n allFilterOptions.value = _allFilterOptions\n }\n }\n watch(() => [props.isReverse, myColumns.value, myDataSource.value], () => {\n const _columns = unref(myColumns)\n const _dataSource = unref(myDataSource)\n handleFilterCheckboxOptions(_dataSource)\n if (props.isReverse) {\n const { columns, dataSource } = handleReverseTable(cloneDeep(_columns), cloneDeep(_dataSource))\n tableColumns.value = columns\n tableDataSource.value = dataSource\n } else {\n tableColumns.value = _columns\n tableDataSource.value = _dataSource\n }\n }, {\n immediate: true,\n flush: 'post'\n })\n const handleReverseTable = (columns: { [key:string]: any} [], dataSource: { [key:string]: any} []) => {\n const firstColumns = columns[0]\n const _columns = [{\n title: firstColumns.title,\n dataIndex: 'col0',\n key: 'col0',\n align: 'center'\n }] as { [key:string]: any } []\n for (let i = 0; i < dataSource.length; i++) {\n const data = dataSource[i]\n const dataIndex = 'col' + (i + 1)\n _columns.push({\n title: data[firstColumns.dataIndex],\n dataIndex,\n key: dataIndex,\n align: 'center'\n })\n }\n const _dataSource = [] as { [key:string]: any } []\n for (let i = 1; i < columns.length; i++) {\n const column = columns[i]\n const _data = { col0: column.title }\n for (let j = 0; j < dataSource.length; j++) {\n const data = dataSource[j]\n _data[`col${j + 1}`] = data[column.dataIndex]\n }\n _dataSource.push(_data)\n }\n return {\n columns: _columns,\n dataSource: _dataSource\n }\n }\n const orderCondition = ref<string>('')\n const requestData = useRequestData(props)\n const loading = ref(false)\n const handleRequestData = async (isUseLoading: boolean = true) => {\n try {\n if (isUseLoading) loading.value = true\n // 初始参数:排序\n let params = {} as { [key:string]: any }\n if (unref(orderCondition)) {\n params.orderCondition = unref(orderCondition)\n }\n // 分页\n if (props.paginationShow) {\n params = {\n pageNum: unref(pageNum),\n pageSize: unref(pageSize),\n layer: '1',\n ...params\n }\n }\n const res = await requestData(params)\n const { rows = [], total: tableTotal = 0 } = res?.data?.data || {}\n total.value = tableTotal\n if (Array.isArray(rows)) {\n myDataSource.value = rows\n }\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n const tableChange = ({ current }: { current: number }, _filters, sorter) => {\n pageNum.value = current\n if (sorter && Object.keys(sorter).length > 0) {\n const { field, order } = sorter as { field: string | null, order: 'ascend' | 'descend' }\n const map = {\n ascend: 'asc',\n descend: 'desc'\n }\n const fieldOrder = map[order]\n if (field != null && fieldOrder != null) {\n orderCondition.value = field + ' ' + fieldOrder\n pageNum.value = 1\n }\n }\n refreshData(false)\n }\n const pagination = computed(() => {\n const simple = props.simple\n const position = [props.paginationPosition]\n return props.paginationShow && {\n simple,\n position,\n total: unref(total),\n current: unref(pageNum),\n pageSize: unref(pageSize),\n showSizeChanger: false\n }\n })\n const formatBoolean = (value: string | number) => {\n if (+value === 1) return '是'\n if (+value === 0) return '否'\n return value\n }\n type Format = 'money' | 'percentage' | 'contrast' | 'boolean' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage,\n boolean: formatBoolean\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n\n const emitEvent = useEmitEvent(props)\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const handleIndicatorDataset = (dataColumns: any [] = [], dataRows: { [key:string]: any }[] = []) => {\n const _columns = dataColumns.map((column: string) => ({ title: column, dataIndex: column, key: column }))\n myColumns.value = handleColumns(_columns)\n myDataSource.value = dataRows\n }\n\n // 指标库\n const indicatorData = useIndicatorData(props)\n const handleIndicatorData = async () => {\n try {\n loading.value = true\n const res = await indicatorData()\n handleIndicatorDataset(res?.data?.data?.columns, res?.data?.data?.rows)\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n //\n // const customHeaderRow = () => ({\n // style: {\n // backgroundColor: props.headerBackgroundColor\n // }\n // })\n const useRowIndex = ref(-1)\n\n const customRow = (record, index) => ({\n onClick: emitEvent('rowClick', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n useRowIndex.value = index\n })\n })\n\n const refreshData = (isUseLoading: boolean = true) => {\n if (unref(pageMode) === 'design') return\n switch (props.dataType) {\n case 'request':\n handleRequestData(isUseLoading)\n break\n case 'indicator':\n handleIndicatorData()\n break\n }\n }\n\n const resetRecord = () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n setGlobalModel(id, { ...modal, RECORD: '' })\n }\n\n useOnEvent(props, {\n resetRecord,\n refreshData\n })\n const summaryList = computed(() => {\n const columns = unref(tableColumns)\n const summaryList = [] as { [key: string]: any } []\n let calcTotalCount = 0\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i]\n const { isCalcTotal } = column\n if (props.isUseSeq && i === 0) {\n summaryList.push({\n ...column,\n total: '小计'\n })\n } else if (isCalcTotal) {\n summaryList.push({\n ...column,\n index: i,\n total: 0\n })\n calcTotalCount++\n } else {\n summaryList.push({\n ...column\n })\n }\n }\n // 为空直接返回\n if (calcTotalCount === 0) return []\n const start = (unref(pageNum) - 1) * unref(pageSize)\n const end = start + unref(pageSize)\n const records = unref(tableDataSource).slice(start, end)\n for (let i = 0; i < summaryList.length; i++) {\n const summary = summaryList[i]\n let total: number = 0\n const { isCalcTotal, dataIndex } = summary\n if (isCalcTotal === true) {\n for (let j = 0; j < records.length; j++) {\n const record = records[j]\n const num = record[dataIndex]\n if (!isNaN(num)) {\n total = num + total\n }\n }\n summary.total = total\n }\n }\n return summaryList\n })\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n\n setRequest({\n id: props.id as string,\n requestFn: refreshData,\n sortNum: props.requestSort as number\n })\n\n expose({\n refreshData\n })\n\n const handleHref = (href: string = '', data: { [key:string]: any }) => {\n return useVariablesInText(href, data)\n }\n\n const handleHrefTarget = (target: 'self' | 'blank' | 'event') => {\n if (target === 'event') {\n return undefined\n } else {\n const map = {\n self: '_self',\n blank: '_blank'\n }\n return map[target]\n }\n }\n\n const onTouchHrefEvent = (target: 'self' | 'blank' | 'event', href: string = '') => {\n if (target === 'event') {\n window.parent.postMessage({\n type: 'openPage',\n url: href\n }, '*')\n }\n }\n\n const useSetSelectedKeys = (setSelectedKeys, column) => {\n setSelectedKeys(column.filterCheckboxGroupValue)\n }\n\n const onResetFilter = (clearFilters, column) => {\n clearFilters({ confirm: true })\n column.filterOptionsInputValue = ''\n column.filterCheckboxGroupValue = []\n }\n const onSearchFilterOptions = () => {}\n const useFilterOptions = (column) => {\n const key = column.dataIndex\n if (typeof key === 'string') {\n let filterOptions = unref(allFilterOptions)[key]\n const _inputValue = unref(column.filterOptionsInputValue).trim()\n if (Array.isArray(filterOptions)) {\n filterOptions = filterOptions.filter((filterOption) => {\n if (typeof filterOption.label === 'string') {\n return filterOption.label.toLowerCase().includes(_inputValue.toLowerCase())\n }\n return true\n })\n return filterOptions\n }\n return []\n }\n return []\n }\n return {\n x,\n y,\n style,\n customRow,\n pagination,\n formatFn,\n contrastClass,\n tableChange,\n summaryList,\n loading,\n onTouchHrefEvent,\n handleHref,\n handleHrefTarget,\n useRowIndex,\n tableColumns,\n tableDataSource,\n useFilterOptions,\n useSetSelectedKeys,\n onResetFilter,\n onSearchFilterOptions\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.table {\n width: 100%;\n}\n\n.goUp {\n color: #FF512E;\n display: flex;\n align-items: center;\n justify-content: center;\n &:before {\n content: '';\n display: block;\n background-image: url(\"../../assets/go-up.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n}\n\n.goDown {\n color: #39cf93;\n display: flex;\n align-items: center;\n justify-content: center;\n &:before {\n content: '';\n display: block;\n background-image: url(\"../../assets/go-down.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n}\n\n.action-list {\n display: flex;\n width: 100%;\n}\n.action {\n flex: 1;\n}\n\n.filter-input {\n width: 188px;\n margin-bottom: 8px;\n display: block\n}\n\n.filter-checkbox {\n width: 188px;\n margin-bottom: 8px;\n}\n</style>\n\n<style lang=\"less\">\n.ecan-table-filter {\n padding: 8px;\n display: flex;\n flex-direction: column;\n .ant-checkbox-group {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .ant-checkbox-wrapper {\n width: 100%;\n padding: 5px 0;\n font-size: 16px;\n &:hover {\n background-color: #f5f5f5;\n }\n .ant-checkbox + span {\n width: 100%;\n word-break: break-all;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical\n }\n }\n}\n\n.ecan-table {\n .highlight {\n background: #e6f7ff !important;\n }\n\n *::-webkit-scrollbar {\n //width: 6px;\n //height: 6px;\n }\n\n *::-webkit-scrollbar-thumb {\n border-radius: 3px;\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);\n background-color: #c8c9ca !important;\n }\n\n *::-webkit-scrollbar-track {\n background-color: #fff;\n }\n\n .ant-table-cell-scrollbar {\n box-shadow: 0 1px 0 1px transparent;\n }\n\n .ant-table {\n color: rgba(0, 0, 0, .65);\n background: #ffffff;\n }\n\n .ant-table-thead > tr > th {\n color: rgba(0, 0, 0, .85);\n background: #fafafa;\n border-bottom: 1px solid #f0f0f0;\n }\n\n .ant-table-tbody > tr > td {\n border-bottom: 1px solid #f0f0f0;\n }\n\n .ant-table-bordered {\n .ant-table-container {\n border: 1px solid #f0f0f0 !important;\n }\n\n .ant-table-cell {\n border-right: 1px solid #f0f0f0 !important;\n }\n }\n\n .anticon {\n color: #bfbfbf;\n }\n\n}\n\n[datav-theme='darkBlue'] {\n .ecan-table {\n .highlight {\n background: #225b98 !important;\n }\n\n *::-webkit-scrollbar-thumb {\n background-color: #2f4dac !important;\n }\n\n *::-webkit-scrollbar-track {\n background-color: #192c70;\n }\n\n *::-webkit-scrollbar-corner {\n background-color: #192c70 !important;\n }\n .ant-table {\n color: #e8e8e8;\n background: #071655;\n }\n\n .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table,\n .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table {\n border-top: 1px solid #3e8ee3 !important;\n }\n\n .ant-table-thead > tr > th {\n color: #cdd0f7;\n background: #17338c;\n border-bottom: 1px solid #3e8ee3;\n }\n\n .ant-table-tbody > tr > td {\n border-bottom: 1px solid #3e8ee3;\n }\n\n .ant-table-bordered {\n .ant-table-container {\n border: 1px solid #3e8ee3 !important;\n }\n\n .ant-table-cell {\n border-right: 1px solid #3e8ee3 !important;\n }\n }\n\n .ant-pagination-item-link {\n background: #17338c !important;\n }\n\n .ant-pagination-item {\n background: #17338c !important;\n }\n\n .anticon {\n color: rgba(255, 255, 255, .65) !important;\n }\n\n .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {\n background: #225b98;\n }\n }\n\n td.ant-table-column-sort {\n background: #225b98;\n }\n}\n</style>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeStyle","_withCtx","_createVNode","_createElementVNode","_toDisplayString","_createCommentVNode","_Fragment","_renderList","_normalizeClass","_createBlock"],"mappings":"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"}
1
+ {"version":3,"file":"Table.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.vue2.js","sources":["../../../src/table/table/Table.vue"],"sourcesContent":["<template>\n <div class=\"ecan-table\" :style=\"style\">\n <skeleton :loading=\"loading\">\n <a-table\n class=\"table\"\n :style=\"{\n height: '100%'\n }\"\n :columns=\"tableColumns\"\n :data-source=\"tableDataSource\"\n :bordered=\"bordered\"\n :size=\"size\"\n :customRow=\"customRow\"\n :scroll=\"{ x, y }\"\n :pagination=\"pagination\"\n @change=\"tableChange\"\n >\n <template #customFilterDropdown=\"{ column, selectedKeys, setSelectedKeys, confirm, clearFilters }\">\n <div\n class=\"ecan-table-filter\"\n :style=\"{\n height: filterDropdownHeight\n }\"\n >\n <a-input\n v-model:value=\"column.filterOptionsInputValue\"\n placeholder=\"请输入关键字\"\n :value=\"selectedKeys[0]\"\n class=\"filter-input\"\n @change=\"onSearchFilterOptions\"\n />\n <a-checkbox-group\n v-model:value=\"column.filterCheckboxGroupValue\"\n class=\"filter-checkbox\"\n :options=\"useFilterOptions(column)\"\n @change=\"useSetSelectedKeys(setSelectedKeys, column)\"\n >\n </a-checkbox-group>\n <div>\n <a-button\n type=\"primary\"\n size=\"small\"\n style=\"width: 90px; margin-right: 8px\"\n @click=\"() => confirm()\"\n >\n 搜索\n </a-button>\n <a-button\n size=\"small\"\n style=\"width: 90px\"\n @click=\"onResetFilter(clearFilters, column)\"\n >\n 重置\n </a-button>\n </div>\n </div>\n </template>\n <template #bodyCell=\"{ column, index, text, record }\">\n <template v-if=\"column.dataIndex === 'SEQ'\">\n <span>{{ index + 1 }}</span>\n </template>\n <!-- 操作列配置 -->\n <template v-if=\"column.dataIndex === 'ACTION'\">\n <div class=\"action-list\">\n <div class=\"action\" v-for=\"(action, index) in actionList\" :key=\"index\">\n <a\n :href=\"handleHref(action.href, record)\"\n :target=\"handleHrefTarget(action.target)\"\n :style=\"{\n color: action.color,\n fontSize,\n fontWeight\n }\"\n @click=\"onTouchHrefEvent(action.target, handleHref(action.href, record))\"\n >\n {{ action.title }}\n </a>\n </div>\n </div>\n </template>\n <template v-else>\n <div\n :class=\"[contrastClass(text, column.format)]\"\n :style=\"{\n fontSize,\n fontWeight\n }\"\n >\n {{ column.format != null ? formatFn(text, column.format) : text }}\n </div>\n </template>\n </template>\n <template #summary>\n <a-table-summary v-if=\"summaryList.length > 0\">\n <a-table-summary-row>\n <a-table-summary-cell\n v-for=\"(summary, index) in summaryList\"\n :key=\"index\"\n :index=\"index\"\n :style=\"{\n backgroundColor: cellBackgroundColor,\n textAlign: summary.cellAlign || 'center',\n color: summary.cellColor,\n borderBottomColor: borderColor,\n }\"\n >\n <div\n :class=\"[contrastClass(summary.total, summary.format)]\"\n :style=\"{\n fontSize,\n fontWeight\n }\"\n >\n {{ (summary.format != null || summary.format !== '') && formatFn(summary.total, summary.format) }}\n </div>\n </a-table-summary-cell>\n </a-table-summary-row>\n </a-table-summary>\n </template>\n </a-table>\n </skeleton>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject, reactive } from 'vue'\nimport {\n Input as AInput,\n CheckboxGroup as ACheckboxGroup,\n // Checkbox as ACheckbox,\n Table as ATable,\n TableSummary as ATableSummary,\n TableSummaryRow as ATableSummaryRow,\n TableSummaryCell as ATableSummaryCell\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/input/style'\nimport 'ant-design-vue/es/checkbox/style'\nimport 'ant-design-vue/es/table/style'\nimport {\n usePickComponentStyle,\n useEmitEvent,\n useRequestData,\n useOnEvent,\n useIndicatorData,\n useVariablesInText\n} from '@/hooks'\nimport { tableComponentProps } from './props'\nimport { formatMoney, formatPercentage } from '@/utils/util'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from '@/utils/constant'\nimport Skeleton from '@/common/skeleton/Skeleton.vue'\nimport { cloneDeep } from 'lodash-es'\nimport { RequestModalParam } from '@/utils/types'\nexport default defineComponent({\n name: 'EcanTable',\n components: {\n Skeleton,\n AInput,\n ACheckboxGroup,\n ATable,\n ATableSummary,\n ATableSummaryRow,\n ATableSummaryCell\n },\n props: {\n ...tableComponentProps\n },\n setup (props, { expose }) {\n const style = usePickComponentStyle(props)\n const splitY = computed(() => {\n if (props.paginationShow) {\n switch (props.size) {\n case 'small':\n return 90\n case 'middle':\n return 100\n default:\n return 120\n }\n } else {\n switch (props.size) {\n case 'small':\n return 40\n case 'middle':\n return 47\n default:\n return 55\n }\n }\n })\n const x = computed(() => props.scrollX)\n const y = computed(() => parseFloat(props.height as string) - unref(splitY))\n const myColumns = ref<{ [key: string]: any } []>([])\n const myDataSource = ref<{ [key: string]: any } []>([])\n const tableColumns = ref<{ [key: string]: any } []>([])\n const tableDataSource = ref<{ [key: string]: any } []>([])\n const total = ref(0)\n const pageNum = ref(1)\n const pageSize = computed(() => props.paginationPageSize as number)\n const filterDataIndexList = reactive([])\n const handleChildrenColumns = (_columns: { [key: string]: any } [] = []) => {\n if (Array.isArray(_columns) && _columns.length > 0) {\n const len = _columns.length\n const columnsFixedNum = props.columnsFixedNum as number\n // 这里的循环为了 props 是引用类型,会造成脏数据(上次修改后,还会存在上次的数据)\n // 如果使用深拷贝会造成性能的浪费,循环来说相对更快\n for (let i = 0; i < len; i++) {\n const column = _columns[i]\n if (i < columnsFixedNum) {\n column.fixed = 'left'\n } else {\n column.fixed = false\n }\n const {\n cellAlign = 'center',\n cellColor,\n dataIndex,\n title,\n tableFilter,\n headerCellAlign,\n headerCellColor\n } = column\n if (tableFilter) {\n filterDataIndexList.push(dataIndex)\n column.filterOptionsInputValue = ''\n column.filterCheckboxGroupValue = []\n column.customFilterDropdown = true\n column.onFilter = (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase())\n }\n // 通用配置\n // 头部单元格\n column.customHeaderCell = () => ({\n style: {\n display: 'table-cell',\n verticalAlign: 'middle',\n fontSize: props.headerFontSize,\n fontWeight: props.headerFontWeight,\n textAlign: headerCellAlign || 'center',\n color: headerCellColor,\n borderBottomColor: props.borderColor\n }\n })\n // 表格单元格\n column.customCell = (record, rowIndex) => ({\n style: {\n textAlign: cellAlign,\n color: cellColor,\n backgroundColor: props.cellBackgroundColor,\n borderBottomColor: props.borderColor\n },\n class: {\n highlight: unref(useRowIndex) === rowIndex && props.clickHighlight\n },\n onClick: emitEvent('click', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n record = {\n dataIndex,\n title,\n ...record\n }\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n })\n })\n if (Array.isArray(column.children)) {\n handleChildrenColumns(column.children)\n }\n }\n }\n }\n const handleColumns = (columns: { [key: string]: any } [] = []) => {\n // 复制表头数据\n if (props.isUseSeq) {\n // 添加序号\n columns.unshift({\n title: '序号',\n dataIndex: 'SEQ',\n align: 'center'\n })\n }\n // 添加操作列\n if (props.isUseAction) {\n columns.push({\n title: '操作',\n dataIndex: 'ACTION',\n width: props.actionColumnWidth\n })\n }\n handleChildrenColumns(columns)\n return columns\n }\n watch(() => [\n props.columns,\n props.isUseSeq,\n props.isUseAction,\n props.columnsFixedNum,\n props.actionColumnWidth,\n props.cellBackgroundColor,\n props.borderColor\n ], () => {\n myColumns.value = handleColumns(cloneDeep(props.columns as any []))\n }, {\n immediate: true,\n deep: true\n })\n watch(() => [props.data, props.dataType], ([data, dataType]) => {\n if (dataType !== 'static') return\n myDataSource.value = data as { [key:string]:any } []\n }, {\n immediate: true\n })\n const allFilterOptions = ref({})\n const handleFilterCheckboxOptions = (dataSource: { [key:string]: any } []) => {\n if (Array.isArray(dataSource)) {\n const dataLen = dataSource.length\n const keys = filterDataIndexList\n const keysLen = keys.length\n const filterOptionsMap: { [key:string]: Set<string> } = {}\n for (let i = 0; i < dataLen; i++) {\n const record = dataSource[i]\n for (let j = 0; j < keysLen; j++) {\n const key = keys[j]\n if (filterOptionsMap[key]) {\n filterOptionsMap[key].add(record[key])\n } else {\n const set = new Set<string>()\n set.add(record[key])\n filterOptionsMap[key] = set\n }\n }\n }\n const _allFilterOptions: { [key:string]: { label:string, value: string } [] } = {}\n for (const key in filterOptionsMap) {\n if (Object.prototype.hasOwnProperty.call(filterOptionsMap, key)) {\n const optionsSet = filterOptionsMap[key]\n const options = Array.from(optionsSet)\n _allFilterOptions[key] = options.map((option) => ({ label: option, value: option }))\n }\n }\n allFilterOptions.value = _allFilterOptions\n }\n }\n watch(() => [props.isReverse, myColumns.value, myDataSource.value], () => {\n const _columns = unref(myColumns)\n const _dataSource = unref(myDataSource)\n handleFilterCheckboxOptions(_dataSource)\n if (props.isReverse) {\n const { columns, dataSource } = handleReverseTable(cloneDeep(_columns), cloneDeep(_dataSource))\n tableColumns.value = columns\n tableDataSource.value = dataSource\n } else {\n tableColumns.value = _columns\n tableDataSource.value = _dataSource\n }\n }, {\n immediate: true,\n flush: 'post'\n })\n const handleReverseTable = (columns: { [key:string]: any} [], dataSource: { [key:string]: any} []) => {\n const firstColumns = columns[0]\n const _columns = [{\n title: firstColumns.title,\n dataIndex: 'col0',\n key: 'col0',\n align: 'center'\n }] as { [key:string]: any } []\n for (let i = 0; i < dataSource.length; i++) {\n const data = dataSource[i]\n const dataIndex = 'col' + (i + 1)\n _columns.push({\n title: data[firstColumns.dataIndex],\n dataIndex,\n key: dataIndex,\n align: 'center'\n })\n }\n const _dataSource = [] as { [key:string]: any } []\n for (let i = 1; i < columns.length; i++) {\n const column = columns[i]\n const _data = { col0: column.title }\n for (let j = 0; j < dataSource.length; j++) {\n const data = dataSource[j]\n _data[`col${j + 1}`] = data[column.dataIndex]\n }\n _dataSource.push(_data)\n }\n return {\n columns: _columns,\n dataSource: _dataSource\n }\n }\n const orderCondition = ref<string>('')\n const requestData = useRequestData(props)\n const loading = ref(false)\n const handleRequestData = async (isUseLoading: boolean = true) => {\n try {\n if (isUseLoading) loading.value = true\n // 初始参数:排序\n let params = {} as { [key:string]: any }\n if (unref(orderCondition)) {\n params.orderCondition = unref(orderCondition)\n }\n // 分页\n if (props.paginationShow) {\n params = {\n pageNum: unref(pageNum),\n pageSize: unref(pageSize),\n layer: '1',\n ...params\n }\n }\n const res = await requestData(params)\n const { rows = [], total: tableTotal = 0 } = res?.data?.data || {}\n total.value = tableTotal\n if (Array.isArray(rows)) {\n myDataSource.value = rows\n }\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n const tableChange = ({ current }: { current: number }, _filters, sorter) => {\n pageNum.value = current\n if (sorter && Object.keys(sorter).length > 0) {\n const { field, order } = sorter as { field: string | null, order: 'ascend' | 'descend' }\n const map = {\n ascend: 'asc',\n descend: 'desc'\n }\n const fieldOrder = map[order]\n if (field != null && fieldOrder != null) {\n orderCondition.value = field + ' ' + fieldOrder\n pageNum.value = 1\n }\n }\n refreshData(false)\n }\n const pagination = computed(() => {\n const simple = props.simple\n const position = [props.paginationPosition]\n return props.paginationShow && {\n simple,\n position,\n total: unref(total),\n current: unref(pageNum),\n pageSize: unref(pageSize),\n showSizeChanger: false\n }\n })\n const formatBoolean = (value: string | number) => {\n if (+value === 1) return '是'\n if (+value === 0) return '否'\n return value\n }\n type Format = 'money' | 'percentage' | 'contrast' | 'boolean' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage,\n boolean: formatBoolean\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n\n const emitEvent = useEmitEvent(props)\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const handleIndicatorDataset = (dataColumns: any [] = [], dataRows: { [key:string]: any }[] = []) => {\n const _columns = dataColumns.map((column: string) => ({ title: column, dataIndex: column, key: column }))\n myColumns.value = handleColumns(_columns)\n myDataSource.value = dataRows\n }\n\n // 指标库\n const indicatorData = useIndicatorData(props)\n const handleIndicatorData = async () => {\n try {\n loading.value = true\n const res = await indicatorData()\n handleIndicatorDataset(res?.data?.data?.columns, res?.data?.data?.rows)\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n //\n // const customHeaderRow = () => ({\n // style: {\n // backgroundColor: props.headerBackgroundColor\n // }\n // })\n const useRowIndex = ref(-1)\n\n const customRow = (record, index) => ({\n onClick: emitEvent('rowClick', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n useRowIndex.value = index\n })\n })\n\n const refreshData = (isUseLoading: boolean = true) => {\n if (unref(pageMode) === 'design') return\n switch (props.dataType) {\n case 'request':\n handleRequestData(isUseLoading)\n break\n case 'indicator':\n handleIndicatorData()\n break\n }\n }\n\n const resetRecord = () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n setGlobalModel(id, { ...modal, RECORD: '' })\n }\n\n useOnEvent(props, {\n resetRecord,\n refreshData\n })\n const summaryList = computed(() => {\n const columns = unref(tableColumns)\n const summaryList = [] as { [key: string]: any } []\n let calcTotalCount = 0\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i]\n const { isCalcTotal } = column\n if (props.isUseSeq && i === 0) {\n summaryList.push({\n ...column,\n total: '小计'\n })\n } else if (isCalcTotal) {\n summaryList.push({\n ...column,\n index: i,\n total: 0\n })\n calcTotalCount++\n } else {\n summaryList.push({\n ...column\n })\n }\n }\n // 为空直接返回\n if (calcTotalCount === 0) return []\n const start = (unref(pageNum) - 1) * unref(pageSize)\n const end = start + unref(pageSize)\n const records = unref(tableDataSource).slice(start, end)\n for (let i = 0; i < summaryList.length; i++) {\n const summary = summaryList[i]\n let total: number = 0\n const { isCalcTotal, dataIndex } = summary\n if (isCalcTotal === true) {\n for (let j = 0; j < records.length; j++) {\n const record = records[j]\n const num = record[dataIndex]\n if (!isNaN(num)) {\n total = num + total\n }\n }\n summary.total = total\n }\n }\n return summaryList\n })\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n\n setRequest({\n id: props.id as string,\n requestFn: refreshData,\n sortNum: props.requestSort as number\n })\n\n expose({\n refreshData\n })\n\n const handleHref = (href: string = '', data: { [key:string]: any }) => {\n return useVariablesInText(href, data)\n }\n\n const handleHrefTarget = (target: 'self' | 'blank' | 'event') => {\n if (target === 'event') {\n return undefined\n } else {\n const map = {\n self: '_self',\n blank: '_blank'\n }\n return map[target]\n }\n }\n\n const onTouchHrefEvent = (target: 'self' | 'blank' | 'event', href: string = '') => {\n if (target === 'event') {\n window.parent.postMessage({\n type: 'openPage',\n url: href\n }, '*')\n }\n }\n\n const useSetSelectedKeys = (setSelectedKeys, column) => {\n setSelectedKeys(column.filterCheckboxGroupValue)\n }\n\n const onResetFilter = (clearFilters, column) => {\n clearFilters({ confirm: true })\n column.filterOptionsInputValue = ''\n column.filterCheckboxGroupValue = []\n }\n const onSearchFilterOptions = () => {}\n const useFilterOptions = (column) => {\n const key = column.dataIndex\n if (typeof key === 'string') {\n let filterOptions = unref(allFilterOptions)[key]\n const _inputValue = unref(column.filterOptionsInputValue).trim()\n if (Array.isArray(filterOptions)) {\n filterOptions = filterOptions.filter((filterOption) => {\n if (typeof filterOption.label === 'string') {\n return filterOption.label.toLowerCase().includes(_inputValue.toLowerCase())\n }\n return true\n })\n return filterOptions\n }\n return []\n }\n return []\n }\n return {\n x,\n y,\n style,\n customRow,\n pagination,\n formatFn,\n contrastClass,\n tableChange,\n summaryList,\n loading,\n onTouchHrefEvent,\n handleHref,\n handleHrefTarget,\n useRowIndex,\n tableColumns,\n tableDataSource,\n useFilterOptions,\n useSetSelectedKeys,\n onResetFilter,\n onSearchFilterOptions\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.table {\n width: 100%;\n}\n\n.goUp {\n color: #FF512E;\n display: flex;\n align-items: center;\n justify-content: center;\n &:before {\n content: '';\n display: block;\n background-image: url(\"../../assets/go-up.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n}\n\n.goDown {\n color: #39cf93;\n display: flex;\n align-items: center;\n justify-content: center;\n &:before {\n content: '';\n display: block;\n background-image: url(\"../../assets/go-down.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n}\n\n.action-list {\n display: flex;\n width: 100%;\n}\n.action {\n flex: 1;\n}\n\n.filter-input {\n width: 188px;\n margin-bottom: 8px;\n display: block\n}\n\n.filter-checkbox {\n width: 188px;\n margin-bottom: 8px;\n}\n</style>\n\n<style lang=\"less\">\n.ecan-table-filter {\n padding: 8px;\n display: flex;\n flex-direction: column;\n .ant-checkbox-group {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n }\n\n .ant-checkbox-wrapper {\n width: 100%;\n padding: 5px 0;\n font-size: 16px;\n &:hover {\n background-color: #f5f5f5;\n }\n .ant-checkbox + span {\n width: 100%;\n word-break: break-all;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical\n }\n }\n}\n\n.ecan-table {\n .highlight {\n background: #e6f7ff !important;\n }\n\n *::-webkit-scrollbar {\n //width: 6px;\n //height: 6px;\n }\n\n *::-webkit-scrollbar-thumb {\n border-radius: 3px;\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);\n background-color: #c8c9ca !important;\n }\n\n *::-webkit-scrollbar-track {\n background-color: #fff;\n }\n\n .ant-table-cell-scrollbar {\n box-shadow: 0 1px 0 1px transparent;\n }\n\n .ant-table {\n color: rgba(0, 0, 0, .65);\n background: #ffffff;\n }\n\n .ant-table-thead > tr > th {\n color: rgba(0, 0, 0, .85);\n background: #fafafa;\n border-bottom: 1px solid #f0f0f0;\n }\n\n .ant-table-tbody > tr > td {\n border-bottom: 1px solid #f0f0f0;\n }\n\n .ant-table-bordered {\n .ant-table-container {\n border: 1px solid #f0f0f0 !important;\n }\n\n .ant-table-cell {\n border-right: 1px solid #f0f0f0 !important;\n }\n }\n\n .anticon {\n color: #bfbfbf;\n }\n\n}\n\n[datav-theme='darkBlue'] {\n .ecan-table {\n .highlight {\n background: #225b98 !important;\n }\n\n *::-webkit-scrollbar-thumb {\n background-color: #2f4dac !important;\n }\n\n *::-webkit-scrollbar-track {\n background-color: #192c70;\n }\n\n *::-webkit-scrollbar-corner {\n background-color: #192c70 !important;\n }\n .ant-table {\n color: #e8e8e8;\n background: #071655;\n }\n\n .ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table,\n .ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table {\n border-top: 1px solid #3e8ee3 !important;\n }\n\n .ant-table-thead > tr > th {\n color: #cdd0f7;\n background: #17338c;\n border-bottom: 1px solid #3e8ee3;\n }\n\n .ant-table-tbody > tr > td {\n border-bottom: 1px solid #3e8ee3;\n }\n\n .ant-table-bordered {\n .ant-table-container {\n border: 1px solid #3e8ee3 !important;\n }\n\n .ant-table-cell {\n border-right: 1px solid #3e8ee3 !important;\n }\n }\n\n .ant-pagination-item-link {\n background: #17338c !important;\n }\n\n .ant-pagination-item {\n background: #17338c !important;\n }\n\n .anticon {\n color: rgba(255, 255, 255, .65) !important;\n }\n\n .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {\n background: #225b98;\n }\n }\n\n td.ant-table-column-sort {\n background: #225b98;\n }\n}\n</style>\n"],"names":["AInput","ACheckboxGroup","ATable","ATableSummary","ATableSummaryRow","ATableSummaryCell","summaryList","total"],"mappings":"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"}
1
+ {"version":3,"file":"Table.vue2.js","sources":["../../../src/table/table/Table.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { computed, defineComponent, unref, ref, watch, inject, reactive } from 'vue'\nimport {\n Input as AInput,\n CheckboxGroup as ACheckboxGroup,\n // Checkbox as ACheckbox,\n Table as ATable,\n TableSummary as ATableSummary,\n TableSummaryRow as ATableSummaryRow,\n TableSummaryCell as ATableSummaryCell\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/input/style'\nimport 'ant-design-vue/es/checkbox/style'\nimport 'ant-design-vue/es/table/style'\nimport {\n usePickComponentStyle,\n useEmitEvent,\n useRequestData,\n useOnEvent,\n useIndicatorData,\n useVariablesInText\n} from '@/hooks'\nimport { tableComponentProps } from './props'\nimport { formatMoney, formatPercentage } from '@/utils/util'\nimport { GLOBAL_CONFIG, GLOBAL_MODEL, REQUEST_MODEL } from '@/utils/constant'\nimport Skeleton from '@/common/skeleton/Skeleton.vue'\nimport { cloneDeep } from 'lodash-es'\nimport { RequestModalParam } from '@/utils/types'\nexport default defineComponent({\n name: 'EcanTable',\n components: {\n Skeleton,\n AInput,\n ACheckboxGroup,\n ATable,\n ATableSummary,\n ATableSummaryRow,\n ATableSummaryCell\n },\n props: {\n ...tableComponentProps\n },\n setup (props, { expose }) {\n const style = usePickComponentStyle(props)\n const splitY = computed(() => {\n if (props.paginationShow) {\n switch (props.size) {\n case 'small':\n return 90\n case 'middle':\n return 100\n default:\n return 120\n }\n } else {\n switch (props.size) {\n case 'small':\n return 40\n case 'middle':\n return 47\n default:\n return 55\n }\n }\n })\n const x = computed(() => props.scrollX)\n const y = computed(() => parseFloat(props.height as string) - unref(splitY))\n const myColumns = ref<{ [key: string]: any } []>([])\n const myDataSource = ref<{ [key: string]: any } []>([])\n const tableColumns = ref<{ [key: string]: any } []>([])\n const tableDataSource = ref<{ [key: string]: any } []>([])\n const total = ref(0)\n const pageNum = ref(1)\n const pageSize = computed(() => props.paginationPageSize as number)\n const filterDataIndexList = reactive([])\n const handleChildrenColumns = (_columns: { [key: string]: any } [] = []) => {\n if (Array.isArray(_columns) && _columns.length > 0) {\n const len = _columns.length\n const columnsFixedNum = props.columnsFixedNum as number\n // 这里的循环为了 props 是引用类型,会造成脏数据(上次修改后,还会存在上次的数据)\n // 如果使用深拷贝会造成性能的浪费,循环来说相对更快\n for (let i = 0; i < len; i++) {\n const column = _columns[i]\n if (i < columnsFixedNum) {\n column.fixed = 'left'\n } else {\n column.fixed = false\n }\n const {\n cellAlign = 'center',\n cellColor,\n dataIndex,\n title,\n tableFilter,\n headerCellAlign,\n headerCellColor\n } = column\n if (tableFilter) {\n filterDataIndexList.push(dataIndex)\n column.filterOptionsInputValue = ''\n column.filterCheckboxGroupValue = []\n column.customFilterDropdown = true\n column.onFilter = (value, record) => record[dataIndex].toString().toLowerCase().includes(value.toLowerCase())\n }\n // 通用配置\n // 头部单元格\n column.customHeaderCell = () => ({\n style: {\n display: 'table-cell',\n verticalAlign: 'middle',\n fontSize: props.headerFontSize,\n fontWeight: props.headerFontWeight,\n textAlign: headerCellAlign || 'center',\n color: headerCellColor,\n borderBottomColor: props.borderColor\n }\n })\n // 表格单元格\n column.customCell = (record, rowIndex) => ({\n style: {\n textAlign: cellAlign,\n color: cellColor,\n backgroundColor: props.cellBackgroundColor,\n borderBottomColor: props.borderColor\n },\n class: {\n highlight: unref(useRowIndex) === rowIndex && props.clickHighlight\n },\n onClick: emitEvent('click', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n record = {\n dataIndex,\n title,\n ...record\n }\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n })\n })\n if (Array.isArray(column.children)) {\n handleChildrenColumns(column.children)\n }\n }\n }\n }\n const handleColumns = (columns: { [key: string]: any } [] = []) => {\n // 复制表头数据\n if (props.isUseSeq) {\n // 添加序号\n columns.unshift({\n title: '序号',\n dataIndex: 'SEQ',\n align: 'center'\n })\n }\n // 添加操作列\n if (props.isUseAction) {\n columns.push({\n title: '操作',\n dataIndex: 'ACTION',\n width: props.actionColumnWidth\n })\n }\n handleChildrenColumns(columns)\n return columns\n }\n watch(() => [\n props.columns,\n props.isUseSeq,\n props.isUseAction,\n props.columnsFixedNum,\n props.actionColumnWidth,\n props.cellBackgroundColor,\n props.borderColor\n ], () => {\n myColumns.value = handleColumns(cloneDeep(props.columns as any []))\n }, {\n immediate: true,\n deep: true\n })\n watch(() => [props.data, props.dataType], ([data, dataType]) => {\n if (dataType !== 'static') return\n myDataSource.value = data as { [key:string]:any } []\n }, {\n immediate: true\n })\n const allFilterOptions = ref({})\n const handleFilterCheckboxOptions = (dataSource: { [key:string]: any } []) => {\n if (Array.isArray(dataSource)) {\n const dataLen = dataSource.length\n const keys = filterDataIndexList\n const keysLen = keys.length\n const filterOptionsMap: { [key:string]: Set<string> } = {}\n for (let i = 0; i < dataLen; i++) {\n const record = dataSource[i]\n for (let j = 0; j < keysLen; j++) {\n const key = keys[j]\n if (filterOptionsMap[key]) {\n filterOptionsMap[key].add(record[key])\n } else {\n const set = new Set<string>()\n set.add(record[key])\n filterOptionsMap[key] = set\n }\n }\n }\n const _allFilterOptions: { [key:string]: { label:string, value: string } [] } = {}\n for (const key in filterOptionsMap) {\n if (Object.prototype.hasOwnProperty.call(filterOptionsMap, key)) {\n const optionsSet = filterOptionsMap[key]\n const options = Array.from(optionsSet)\n _allFilterOptions[key] = options.map((option) => ({ label: option, value: option }))\n }\n }\n allFilterOptions.value = _allFilterOptions\n }\n }\n watch(() => [props.isReverse, myColumns.value, myDataSource.value], () => {\n const _columns = unref(myColumns)\n const _dataSource = unref(myDataSource)\n handleFilterCheckboxOptions(_dataSource)\n if (props.isReverse) {\n const { columns, dataSource } = handleReverseTable(cloneDeep(_columns), cloneDeep(_dataSource))\n tableColumns.value = columns\n tableDataSource.value = dataSource\n } else {\n tableColumns.value = _columns\n tableDataSource.value = _dataSource\n }\n }, {\n immediate: true,\n flush: 'post'\n })\n const handleReverseTable = (columns: { [key:string]: any} [], dataSource: { [key:string]: any} []) => {\n const firstColumns = columns[0]\n const _columns = [{\n title: firstColumns.title,\n dataIndex: 'col0',\n key: 'col0',\n align: 'center'\n }] as { [key:string]: any } []\n for (let i = 0; i < dataSource.length; i++) {\n const data = dataSource[i]\n const dataIndex = 'col' + (i + 1)\n _columns.push({\n title: data[firstColumns.dataIndex],\n dataIndex,\n key: dataIndex,\n align: 'center'\n })\n }\n const _dataSource = [] as { [key:string]: any } []\n for (let i = 1; i < columns.length; i++) {\n const column = columns[i]\n const _data = { col0: column.title }\n for (let j = 0; j < dataSource.length; j++) {\n const data = dataSource[j]\n _data[`col${j + 1}`] = data[column.dataIndex]\n }\n _dataSource.push(_data)\n }\n return {\n columns: _columns,\n dataSource: _dataSource\n }\n }\n const orderCondition = ref<string>('')\n const requestData = useRequestData(props)\n const loading = ref(false)\n const handleRequestData = async (isUseLoading: boolean = true) => {\n try {\n if (isUseLoading) loading.value = true\n // 初始参数:排序\n let params = {} as { [key:string]: any }\n if (unref(orderCondition)) {\n params.orderCondition = unref(orderCondition)\n }\n // 分页\n if (props.paginationShow) {\n params = {\n pageNum: unref(pageNum),\n pageSize: unref(pageSize),\n layer: '1',\n ...params\n }\n }\n const res = await requestData(params)\n const { rows = [], total: tableTotal = 0 } = res?.data?.data || {}\n total.value = tableTotal\n if (Array.isArray(rows)) {\n myDataSource.value = rows\n }\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n const tableChange = ({ current }: { current: number }, _filters, sorter) => {\n pageNum.value = current\n if (sorter && Object.keys(sorter).length > 0) {\n const { field, order } = sorter as { field: string | null, order: 'ascend' | 'descend' }\n const map = {\n ascend: 'asc',\n descend: 'desc'\n }\n const fieldOrder = map[order]\n if (field != null && fieldOrder != null) {\n orderCondition.value = field + ' ' + fieldOrder\n pageNum.value = 1\n }\n }\n refreshData(false)\n }\n const pagination = computed(() => {\n const simple = props.simple\n const position = [props.paginationPosition]\n return props.paginationShow && {\n simple,\n position,\n total: unref(total),\n current: unref(pageNum),\n pageSize: unref(pageSize),\n showSizeChanger: false\n }\n })\n const formatBoolean = (value: string | number) => {\n if (+value === 1) return '是'\n if (+value === 0) return '否'\n return value\n }\n type Format = 'money' | 'percentage' | 'contrast' | 'boolean' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage,\n boolean: formatBoolean\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n\n const emitEvent = useEmitEvent(props)\n\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n\n const { getGlobalModel, setGlobalModel } = inject(GLOBAL_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n getGlobalModel: (key: string) => void 0,\n // @ts-ignore\n // eslint-disable-next-line no-void\n setGlobalModel: (key: string, value: any) => void 0\n })\n\n const handleIndicatorDataset = (dataColumns: any [] = [], dataRows: { [key:string]: any }[] = []) => {\n const _columns = dataColumns.map((column: string) => ({ title: column, dataIndex: column, key: column }))\n myColumns.value = handleColumns(_columns)\n myDataSource.value = dataRows\n }\n\n // 指标库\n const indicatorData = useIndicatorData(props)\n const handleIndicatorData = async () => {\n try {\n loading.value = true\n const res = await indicatorData()\n handleIndicatorDataset(res?.data?.data?.columns, res?.data?.data?.rows)\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n //\n // const customHeaderRow = () => ({\n // style: {\n // backgroundColor: props.headerBackgroundColor\n // }\n // })\n const useRowIndex = ref(-1)\n\n const customRow = (record, index) => ({\n onClick: emitEvent('rowClick', () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n // 约定获取数据\n setGlobalModel(id, { ...modal, RECORD: record })\n useRowIndex.value = index\n })\n })\n\n const refreshData = (isUseLoading: boolean = true) => {\n if (unref(pageMode) === 'design') return\n switch (props.dataType) {\n case 'request':\n handleRequestData(isUseLoading)\n break\n case 'indicator':\n handleIndicatorData()\n break\n }\n }\n\n const resetRecord = () => {\n const id = props.id as string\n const modal = getGlobalModel(id)\n setGlobalModel(id, { ...modal, RECORD: '' })\n }\n\n useOnEvent(props, {\n resetRecord,\n refreshData\n })\n const summaryList = computed(() => {\n const columns = unref(tableColumns)\n const summaryList = [] as { [key: string]: any } []\n let calcTotalCount = 0\n for (let i = 0; i < columns.length; i++) {\n const column = columns[i]\n const { isCalcTotal } = column\n if (props.isUseSeq && i === 0) {\n summaryList.push({\n ...column,\n total: '小计'\n })\n } else if (isCalcTotal) {\n summaryList.push({\n ...column,\n index: i,\n total: 0\n })\n calcTotalCount++\n } else {\n summaryList.push({\n ...column\n })\n }\n }\n // 为空直接返回\n if (calcTotalCount === 0) return []\n const start = (unref(pageNum) - 1) * unref(pageSize)\n const end = start + unref(pageSize)\n const records = unref(tableDataSource).slice(start, end)\n for (let i = 0; i < summaryList.length; i++) {\n const summary = summaryList[i]\n let total: number = 0\n const { isCalcTotal, dataIndex } = summary\n if (isCalcTotal === true) {\n for (let j = 0; j < records.length; j++) {\n const record = records[j]\n const num = record[dataIndex]\n if (!isNaN(num)) {\n total = num + total\n }\n }\n summary.total = total\n }\n }\n return summaryList\n })\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n\n setRequest({\n id: props.id as string,\n requestFn: refreshData,\n sortNum: props.requestSort as number\n })\n\n expose({\n refreshData\n })\n\n const handleHref = (href: string = '', data: { [key:string]: any }) => {\n return useVariablesInText(href, data)\n }\n\n const handleHrefTarget = (target: 'self' | 'blank' | 'event') => {\n if (target === 'event') {\n return undefined\n } else {\n const map = {\n self: '_self',\n blank: '_blank'\n }\n return map[target]\n }\n }\n\n const onTouchHrefEvent = (target: 'self' | 'blank' | 'event', href: string = '') => {\n if (target === 'event') {\n window.parent.postMessage({\n type: 'openPage',\n url: href\n }, '*')\n }\n }\n\n const useSetSelectedKeys = (setSelectedKeys, column) => {\n setSelectedKeys(column.filterCheckboxGroupValue)\n }\n\n const onResetFilter = (clearFilters, column) => {\n clearFilters({ confirm: true })\n column.filterOptionsInputValue = ''\n column.filterCheckboxGroupValue = []\n }\n const onSearchFilterOptions = () => {}\n const useFilterOptions = (column) => {\n const key = column.dataIndex\n if (typeof key === 'string') {\n let filterOptions = unref(allFilterOptions)[key]\n const _inputValue = unref(column.filterOptionsInputValue).trim()\n if (Array.isArray(filterOptions)) {\n filterOptions = filterOptions.filter((filterOption) => {\n if (typeof filterOption.label === 'string') {\n return filterOption.label.toLowerCase().includes(_inputValue.toLowerCase())\n }\n return true\n })\n return filterOptions\n }\n return []\n }\n return []\n }\n return {\n x,\n y,\n style,\n customRow,\n pagination,\n formatFn,\n contrastClass,\n tableChange,\n summaryList,\n loading,\n onTouchHrefEvent,\n handleHref,\n handleHrefTarget,\n useRowIndex,\n tableColumns,\n tableDataSource,\n useFilterOptions,\n useSetSelectedKeys,\n onResetFilter,\n onSearchFilterOptions\n }\n }\n})\n"],"names":["AInput","ACheckboxGroup","ATable","ATableSummary","ATableSummaryRow","ATableSummaryCell","summaryList","total"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"List.vue.js","sources":["../../../src/text/list/List.vue"],"sourcesContent":["<template>\n <div class=\"ecan-list\" :style=\"style\">\n <skeleton :loading=\"loading\">\n <div\n class=\"title\"\n v-if=\"useTitle\"\n >\n <div\n class=\"title-inner\"\n :style=\"{\n backgroundColor: backgroundColor,\n height: itemHeight,\n width: `calc(100% / ${columnCount} - ${itemColSpan} * ${columnCount - 1}/ ${columnCount})`,\n marginRight: count % columnCount !== 0 ? itemColSpan : ''\n }\"\n v-for=\"count in columnCount\"\n :key=\"count\"\n >\n <div class=\"ranking\" v-if=\"useRanking\" />\n <div\n class=\"column\"\n v-for=\"(column, i) in columns\"\n :key=\"column.key || i\"\n :style=\"{\n color: column.titleColor,\n ...columnStyle\n }\"\n >\n {{ column.title }}\n </div>\n </div>\n </div>\n <div class=\"ecan-list-content\" v-if=\"dataSource.length > 0\">\n <div\n class=\"title-placeholder\"\n :style=\"{\n marginBottom: itemRowSpan\n }\"\n v-if=\"useTitle\"\n />\n <div\n class=\"item\"\n :style=\"{\n backgroundColor: backgroundColor,\n height: itemHeight,\n width: `calc(100% / ${columnCount} - ${itemColSpan} * ${columnCount - 1} / ${columnCount})`,\n marginRight: (i + 1) % columnCount !== 0 ? itemColSpan : '',\n marginBottom: itemRowSpan\n }\"\n v-for=\"(item, i) in dataSource.slice(0, sliceCount)\"\n :key=\"item.id || i\"\n @click=\"click\"\n >\n <div class=\"ranking\" v-if=\"useRanking\">\n <div class=\"icon\"/>\n <div class=\"sort\">\n Top {{ i + 1 }}\n </div>\n </div>\n <div\n :class=\"['column', contrastClass(item[column.key], column.format)]\"\n v-for=\"column in columns\"\n :key=\"column.key\"\n :style=\"{\n fontSize: column.fontSize,\n color: contrastClass(item[column.key], column.format) === '' ? column.color : '',\n fontWeight: column.fontWeight,\n ...columnStyle\n }\"\n >\n {{ (column.format != null || column.format !== '') && formatFn(item[column.key], column.format) }}\n </div>\n </div>\n </div>\n <div class=\"empty\" v-else>\n 暂无数据\n </div>\n </skeleton>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref } from 'vue'\nimport { listComponentProps, ListEvents } from './props'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useRequestData } from '@/hooks'\nimport { formatMoney, formatPercentage } from '@/utils/util'\nimport { GLOBAL_CONFIG, REQUEST_MODEL } from '@/utils/constant'\nimport { RequestModalParam } from '@/utils/types'\nimport Skeleton from '@/common/skeleton'\nexport default defineComponent({\n name: 'EcanList',\n components: { Skeleton },\n props: {\n ...listComponentProps\n },\n setup (props) {\n const dataSource = ref<{[key:string]: any} []>(props.data as {[key:string]: any} [])\n const style = usePickComponentStyle(props, ['backgroundColor'])\n const columnStyle = computed(() => {\n if (props.useRanking) {\n return {\n textAlign: 'center'\n }\n } else {\n return {\n textAlign: 'left'\n }\n }\n })\n type Format = 'money' | 'percentage' | 'contrast' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n const requestData = useRequestData(props)\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const loading = ref(false)\n const handleRequestData = async () => {\n if (props.dataType !== 'request' || unref(pageMode) === 'design') return\n\n try {\n loading.value = true\n const res = await requestData()\n dataSource.value = res?.data?.data.rows || []\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const refreshData = () => {\n handleRequestData()\n }\n\n const emitEvent = useEmitEvent(props)\n\n const click = emitEvent('click', () => {})\n\n useOnEvent(props, {\n refreshData\n } as ListEvents)\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n setRequest({\n id: props.id as string,\n requestFn: handleRequestData,\n sortNum: props.requestSort as number\n })\n return {\n style,\n formatFn,\n columnStyle,\n contrastClass,\n dataSource,\n loading,\n click\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n .ecan-list {\n overflow: hidden;\n }\n .ecan-list-content {\n width: 100%;\n height: 100%;\n overflow: auto;\n display: flex;\n align-content: flex-start;\n flex-wrap: wrap;\n }\n .title {\n position: absolute;\n z-index: 9;\n display: flex;\n align-items: center;\n height: 32px;\n width: 100%;\n font-size: 16px;\n color: #ffffff;\n }\n .title-inner {\n padding-left: 28px;\n padding-right: 20px;\n flex: 1;\n display: flex;\n height: 100%;\n }\n .title-placeholder {\n width: 100%;\n height: 32px;\n }\n .item {\n display: flex;\n align-items: center;\n height: 32px;\n padding-left: 28px;\n padding-right: 20px;\n width: 100%;\n font-size: 16px;\n color: #ffffff;\n }\n .column {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .ranking {\n flex: 1;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .icon {\n width: 12px;\n height: 8px;\n background: #21BEF7;\n margin-right: 17px;\n opacity: .6;\n }\n .item:nth-child(2) .icon {\n opacity: .8;\n }\n .item:first-child .icon{\n opacity: 1;\n }\n .sort {\n font-weight: 600;\n }\n .goUp {\n color: #FF512E;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-up.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n }\n\n .goDown {\n color: #39cf93;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-down.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n }\n .empty {\n text-align: center;\n margin-top: 15%;\n }\n</style>\n\n<style lang=\"less\">\n.ecan-list {\n *::-webkit-scrollbar-track {\n background-color: #fff;\n }\n\n .ant-table-cell-scrollbar {\n box-shadow: 0 1px 0 1px transparent;\n }\n *::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n *::-webkit-scrollbar-thumb {\n border-radius: 6px;\n -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);\n background-color: #c8c9ca;\n }\n}\n[datav-theme='darkBlue'] {\n .ecan-list {\n *::-webkit-scrollbar-thumb {\n background-color: #2f4dac !important;\n }\n *::-webkit-scrollbar-track{\n background-color: #192c70;\n }\n *::-webkit-scrollbar-corner {\n background-color: #192c70 !important;\n }\n .empty {\n color: #ffffff;\n }\n }\n}\n</style>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeStyle","_withCtx","_Fragment","_renderList","_createCommentVNode","_normalizeClass"],"mappings":"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"}
1
+ {"version":3,"file":"List.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"List.vue2.js","sources":["../../../src/text/list/List.vue"],"sourcesContent":["<template>\n <div class=\"ecan-list\" :style=\"style\">\n <skeleton :loading=\"loading\">\n <div\n class=\"title\"\n v-if=\"useTitle\"\n >\n <div\n class=\"title-inner\"\n :style=\"{\n backgroundColor: backgroundColor,\n height: itemHeight,\n width: `calc(100% / ${columnCount} - ${itemColSpan} * ${columnCount - 1}/ ${columnCount})`,\n marginRight: count % columnCount !== 0 ? itemColSpan : ''\n }\"\n v-for=\"count in columnCount\"\n :key=\"count\"\n >\n <div class=\"ranking\" v-if=\"useRanking\" />\n <div\n class=\"column\"\n v-for=\"(column, i) in columns\"\n :key=\"column.key || i\"\n :style=\"{\n color: column.titleColor,\n ...columnStyle\n }\"\n >\n {{ column.title }}\n </div>\n </div>\n </div>\n <div class=\"ecan-list-content\" v-if=\"dataSource.length > 0\">\n <div\n class=\"title-placeholder\"\n :style=\"{\n marginBottom: itemRowSpan\n }\"\n v-if=\"useTitle\"\n />\n <div\n class=\"item\"\n :style=\"{\n backgroundColor: backgroundColor,\n height: itemHeight,\n width: `calc(100% / ${columnCount} - ${itemColSpan} * ${columnCount - 1} / ${columnCount})`,\n marginRight: (i + 1) % columnCount !== 0 ? itemColSpan : '',\n marginBottom: itemRowSpan\n }\"\n v-for=\"(item, i) in dataSource.slice(0, sliceCount)\"\n :key=\"item.id || i\"\n @click=\"click\"\n >\n <div class=\"ranking\" v-if=\"useRanking\">\n <div class=\"icon\"/>\n <div class=\"sort\">\n Top {{ i + 1 }}\n </div>\n </div>\n <div\n :class=\"['column', contrastClass(item[column.key], column.format)]\"\n v-for=\"column in columns\"\n :key=\"column.key\"\n :style=\"{\n fontSize: column.fontSize,\n color: contrastClass(item[column.key], column.format) === '' ? column.color : '',\n fontWeight: column.fontWeight,\n ...columnStyle\n }\"\n >\n {{ (column.format != null || column.format !== '') && formatFn(item[column.key], column.format) }}\n </div>\n </div>\n </div>\n <div class=\"empty\" v-else>\n 暂无数据\n </div>\n </skeleton>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref } from 'vue'\nimport { listComponentProps, ListEvents } from './props'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useRequestData } from '@/hooks'\nimport { formatMoney, formatPercentage } from '@/utils/util'\nimport { GLOBAL_CONFIG, REQUEST_MODEL } from '@/utils/constant'\nimport { RequestModalParam } from '@/utils/types'\nimport Skeleton from '@/common/skeleton'\nexport default defineComponent({\n name: 'EcanList',\n components: { Skeleton },\n props: {\n ...listComponentProps\n },\n setup (props) {\n const dataSource = ref<{[key:string]: any} []>(props.data as {[key:string]: any} [])\n const style = usePickComponentStyle(props, ['backgroundColor'])\n const columnStyle = computed(() => {\n if (props.useRanking) {\n return {\n textAlign: 'center'\n }\n } else {\n return {\n textAlign: 'left'\n }\n }\n })\n type Format = 'money' | 'percentage' | 'contrast' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n const requestData = useRequestData(props)\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const loading = ref(false)\n const handleRequestData = async () => {\n if (props.dataType !== 'request' || unref(pageMode) === 'design') return\n\n try {\n loading.value = true\n const res = await requestData()\n dataSource.value = res?.data?.data.rows || []\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const refreshData = () => {\n handleRequestData()\n }\n\n const emitEvent = useEmitEvent(props)\n\n const click = emitEvent('click', () => {})\n\n useOnEvent(props, {\n refreshData\n } as ListEvents)\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n setRequest({\n id: props.id as string,\n requestFn: handleRequestData,\n sortNum: props.requestSort as number\n })\n return {\n style,\n formatFn,\n columnStyle,\n contrastClass,\n dataSource,\n loading,\n click\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n .ecan-list {\n overflow: hidden;\n }\n .ecan-list-content {\n width: 100%;\n height: 100%;\n overflow: auto;\n display: flex;\n align-content: flex-start;\n flex-wrap: wrap;\n }\n .title {\n position: absolute;\n z-index: 9;\n display: flex;\n align-items: center;\n height: 32px;\n width: 100%;\n font-size: 16px;\n color: #ffffff;\n }\n .title-inner {\n padding-left: 28px;\n padding-right: 20px;\n flex: 1;\n display: flex;\n height: 100%;\n }\n .title-placeholder {\n width: 100%;\n height: 32px;\n }\n .item {\n display: flex;\n align-items: center;\n height: 32px;\n padding-left: 28px;\n padding-right: 20px;\n width: 100%;\n font-size: 16px;\n color: #ffffff;\n }\n .column {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .ranking {\n flex: 1;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .icon {\n width: 12px;\n height: 8px;\n background: #21BEF7;\n margin-right: 17px;\n opacity: .6;\n }\n .item:nth-child(2) .icon {\n opacity: .8;\n }\n .item:first-child .icon{\n opacity: 1;\n }\n .sort {\n font-weight: 600;\n }\n .goUp {\n color: #FF512E;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-up.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n }\n\n .goDown {\n color: #39cf93;\n display: flex;\n align-items: center;\n &:before {\n content: '';\n display: block;\n background: url(\"../../assets/go-down.png\");\n width: 12px;\n height: 12px;\n background-repeat: no-repeat;\n background-size: cover;\n margin-right: 2px;\n }\n }\n .empty {\n text-align: center;\n margin-top: 15%;\n }\n</style>\n\n<style lang=\"less\">\n.ecan-list {\n *::-webkit-scrollbar-track {\n background-color: #fff;\n }\n\n .ant-table-cell-scrollbar {\n box-shadow: 0 1px 0 1px transparent;\n }\n *::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n }\n *::-webkit-scrollbar-thumb {\n border-radius: 6px;\n -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);\n background-color: #c8c9ca;\n }\n}\n[datav-theme='darkBlue'] {\n .ecan-list {\n *::-webkit-scrollbar-thumb {\n background-color: #2f4dac !important;\n }\n *::-webkit-scrollbar-track{\n background-color: #192c70;\n }\n *::-webkit-scrollbar-corner {\n background-color: #192c70 !important;\n }\n .empty {\n color: #ffffff;\n }\n }\n}\n</style>\n"],"names":[],"mappings":";;;;;;;;;AAyFA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY,EAAE,SAAS;AAAA,EACvB,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AACN,UAAA,aAAa,IAA4B,MAAM,IAA8B;AACnF,UAAM,QAAQ,sBAAsB,OAAO,CAAC,iBAAiB,CAAC;AACxD,UAAA,cAAc,SAAS,MAAM;AACjC,UAAI,MAAM,YAAY;AACb,eAAA;AAAA,UACL,WAAW;AAAA,QAAA;AAAA,MACb,OACK;AACE,eAAA;AAAA,UACL,WAAW;AAAA,QAAA;AAAA,MAEf;AAAA,IAAA,CACD;AAEK,UAAA,WAAW,CAAC,OAAwB,WAAoB;AACxD,UAAA,UAAU,QAAQ,WAAW;AAAW,eAAA;AAC5C,YAAM,MAAM;AAAA,QACV,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,UAAU;AAAA,MAAA;AAEZ,aAAO,IAAI,MAAM,EAAE,KAAK,KAAK;AAAA,IAAA;AAEzB,UAAA,gBAAgB,CAAC,OAAwB,WAAmB;AAC1D,YAAA,SAAS,WAAW,QAAQ,EAAE;AACpC,UAAI,WAAW,YAAY;AAClB,eAAA;AAAA,MACT;AACA,cAAQ,MAAM;AAAA,QACZ,KAAK,UAAU;AACN,iBAAA;AAAA,QACT,KAAK,SAAS;AACL,iBAAA;AAAA,MACX;AAAA,IAAA;AAEI,UAAA,cAAc,eAAe,KAAK;AACxC,UAAM,EAAE,SAAA,IAAa,OAAO,eAAe;AAAA,MACzC,UAAU;AAAA,IAAA,CACX;AACK,UAAA,UAAU,IAAI,KAAK;AACzB,UAAM,oBAAoB,YAAY;;AACpC,UAAI,MAAM,aAAa,aAAa,MAAM,QAAQ,MAAM;AAAU;AAE9D,UAAA;AACF,gBAAQ,QAAQ;AACV,cAAA,MAAM,MAAM;AAClB,mBAAW,UAAQ,gCAAK,SAAL,mBAAW,KAAK,SAAQ;eACpC;AACP,gBAAQ,MAAM,CAAC;AAAA,MAAA,UACf;AACA,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAGF,UAAM,cAAc,MAAM;AACN;IAAA;AAGd,UAAA,YAAY,aAAa,KAAK;AAE9B,UAAA,QAAQ,UAAU,SAAS,MAAM;AAAA,IAAA,CAAE;AAEzC,eAAW,OAAO;AAAA,MAChB;AAAA,IAAA,CACa;AAEf,UAAM,EAAE,WAAA,IAAe,OAAO,eAAe;AAAA;AAAA;AAAA,MAG3C,YAAY,CAAC,EAAE,IAAI,SAAS,gBAAmC;AAAA,IAAA,CAChE;AACU,eAAA;AAAA,MACT,IAAI,MAAM;AAAA,MACV,WAAW;AAAA,MACX,SAAS,MAAM;AAAA,IAAA,CAChB;AACM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
1
+ {"version":3,"file":"List.vue2.js","sources":["../../../src/text/list/List.vue?vue&type=script&lang.ts"],"sourcesContent":["\nimport { computed, defineComponent, inject, ref, unref } from 'vue'\nimport { listComponentProps, ListEvents } from './props'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useRequestData } from '@/hooks'\nimport { formatMoney, formatPercentage } from '@/utils/util'\nimport { GLOBAL_CONFIG, REQUEST_MODEL } from '@/utils/constant'\nimport { RequestModalParam } from '@/utils/types'\nimport Skeleton from '@/common/skeleton'\nexport default defineComponent({\n name: 'EcanList',\n components: { Skeleton },\n props: {\n ...listComponentProps\n },\n setup (props) {\n const dataSource = ref<{[key:string]: any} []>(props.data as {[key:string]: any} [])\n const style = usePickComponentStyle(props, ['backgroundColor'])\n const columnStyle = computed(() => {\n if (props.useRanking) {\n return {\n textAlign: 'center'\n }\n } else {\n return {\n textAlign: 'left'\n }\n }\n })\n type Format = 'money' | 'percentage' | 'contrast' | ''\n const formatFn = (value: string | number, format?: Format) => {\n if (format == null || format === '') return value\n const map = {\n money: formatMoney,\n percentage: formatPercentage,\n contrast: formatPercentage\n }\n return map[format](value) || ''\n }\n const contrastClass = (value: string | number, format: Format) => {\n const _value = parseFloat(value + '')\n if (format !== 'contrast') {\n return ''\n }\n switch (true) {\n case _value >= 0:\n return 'goUp'\n case _value < 0:\n return 'goDown'\n }\n }\n const requestData = useRequestData(props)\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const loading = ref(false)\n const handleRequestData = async () => {\n if (props.dataType !== 'request' || unref(pageMode) === 'design') return\n\n try {\n loading.value = true\n const res = await requestData()\n dataSource.value = res?.data?.data.rows || []\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n\n const refreshData = () => {\n handleRequestData()\n }\n\n const emitEvent = useEmitEvent(props)\n\n const click = emitEvent('click', () => {})\n\n useOnEvent(props, {\n refreshData\n } as ListEvents)\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n setRequest({\n id: props.id as string,\n requestFn: handleRequestData,\n sortNum: props.requestSort as number\n })\n return {\n style,\n formatFn,\n columnStyle,\n contrastClass,\n dataSource,\n loading,\n click\n }\n }\n})\n"],"names":[],"mappings":";;;;;;;;;AAQA,MAAA,YAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY,EAAE,SAAS;AAAA,EACvB,OAAO;AAAA,IACL,GAAG;AAAA,EACL;AAAA,EACA,MAAO,OAAO;AACN,UAAA,aAAa,IAA4B,MAAM,IAA8B;AACnF,UAAM,QAAQ,sBAAsB,OAAO,CAAC,iBAAiB,CAAC;AACxD,UAAA,cAAc,SAAS,MAAM;AACjC,UAAI,MAAM,YAAY;AACb,eAAA;AAAA,UACL,WAAW;AAAA,QAAA;AAAA,MACb,OACK;AACE,eAAA;AAAA,UACL,WAAW;AAAA,QAAA;AAAA,MAEf;AAAA,IAAA,CACD;AAEK,UAAA,WAAW,CAAC,OAAwB,WAAoB;AACxD,UAAA,UAAU,QAAQ,WAAW;AAAW,eAAA;AAC5C,YAAM,MAAM;AAAA,QACV,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,UAAU;AAAA,MAAA;AAEZ,aAAO,IAAI,MAAM,EAAE,KAAK,KAAK;AAAA,IAAA;AAEzB,UAAA,gBAAgB,CAAC,OAAwB,WAAmB;AAC1D,YAAA,SAAS,WAAW,QAAQ,EAAE;AACpC,UAAI,WAAW,YAAY;AAClB,eAAA;AAAA,MACT;AACA,cAAQ,MAAM;AAAA,QACZ,KAAK,UAAU;AACN,iBAAA;AAAA,QACT,KAAK,SAAS;AACL,iBAAA;AAAA,MACX;AAAA,IAAA;AAEI,UAAA,cAAc,eAAe,KAAK;AACxC,UAAM,EAAE,SAAA,IAAa,OAAO,eAAe;AAAA,MACzC,UAAU;AAAA,IAAA,CACX;AACK,UAAA,UAAU,IAAI,KAAK;AACzB,UAAM,oBAAoB,YAAY;;AACpC,UAAI,MAAM,aAAa,aAAa,MAAM,QAAQ,MAAM;AAAU;AAE9D,UAAA;AACF,gBAAQ,QAAQ;AACV,cAAA,MAAM,MAAM;AAClB,mBAAW,UAAQ,gCAAK,SAAL,mBAAW,KAAK,SAAQ;eACpC;AACP,gBAAQ,MAAM,CAAC;AAAA,MAAA,UACf;AACA,gBAAQ,QAAQ;AAAA,MAClB;AAAA,IAAA;AAGF,UAAM,cAAc,MAAM;AACN;IAAA;AAGd,UAAA,YAAY,aAAa,KAAK;AAE9B,UAAA,QAAQ,UAAU,SAAS,MAAM;AAAA,IAAA,CAAE;AAEzC,eAAW,OAAO;AAAA,MAChB;AAAA,IAAA,CACa;AAEf,UAAM,EAAE,WAAA,IAAe,OAAO,eAAe;AAAA;AAAA;AAAA,MAG3C,YAAY,CAAC,EAAE,IAAI,SAAS,gBAAmC;AAAA,IAAA,CAChE;AACU,eAAA;AAAA,MACT,IAAI,MAAM;AAAA,MACV,WAAW;AAAA,MACX,SAAS,MAAM;AAAA,IAAA,CAChB;AACM,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AACF,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Proportion.vue.js","sources":["../../../src/text/proportion/Proportion.vue"],"sourcesContent":["<template>\n <div class=\"ecan-proportion\" :style=\"style\">\n <a-progress\n class=\"progress\"\n :percent=\"myValue\"\n :width=\"myWidth\"\n :type=\"strokeType\"\n :strokeColor=\"strokeColor\"\n :strokeLinecap=\"strokeLinecap\"\n :trailColor=\"trailColor\"\n :strokeWidth=\"strokeWidth\"\n :gapDegree=\"strokeType === 'dashboard' ? 75 : 0\"\n @click=\"click\"\n >\n <template #format>\n <skeleton v-if=\"loading\" :loading=\"loading\"/>\n <div\n v-else\n class=\"format\"\n :style=\"{\n width: strokeTextWidth,\n fontSize,\n color,\n fontWeight,\n lineHeight\n }\">\n {{ text }}\n </div>\n </template>\n </a-progress>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport 'ant-design-vue/es/progress/style'\nimport { Progress as AProgress } from 'ant-design-vue'\nimport { useEmitEvent, useOnEvent, usePickComponentStyle, useRequestData } from '@/hooks'\nimport { proportionComponentProps } from './props'\nimport { GLOBAL_CONFIG, REQUEST_MODEL } from '@/utils/constant'\nimport Skeleton from '../../common/skeleton'\nimport { RequestModalParam } from '@/utils/types'\nexport default defineComponent({\n name: 'EcanProportion',\n components: {\n AProgress,\n Skeleton\n },\n props: {\n ...proportionComponentProps\n },\n setup (props) {\n const { pageMode } = inject(GLOBAL_CONFIG, {\n pageMode: 'normal'\n })\n const style = usePickComponentStyle(props)\n const myWidth = computed(() => {\n const width = props.width as string\n return parseFloat(width)\n })\n const myData = ref<{ [key:string]: any }>({})\n watch(() => props.data, () => {\n if (props.dataType === 'static' || unref(pageMode) === 'design') {\n myData.value = props.data as { [key:string]: any }\n }\n }, {\n immediate: true,\n deep: true\n })\n const myValue = computed(() => {\n const data = unref(myData)\n const defaultValue = +(props.variableDefaultValue)\n if (data == null) {\n if (!isNaN(defaultValue)) {\n return defaultValue\n } else {\n return 0\n }\n }\n const variables = (props.text as string).match(/\\{.+\\}/g) || []\n let value\n const valueSet = new Set(Object.keys(data))\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n const key = variable.slice(1, variable.length - 1)\n if (valueSet.has(key)) {\n value = data[key]\n break\n }\n }\n\n if (typeof value === 'number') {\n value = value * 100\n } else if (typeof value === 'string' && !isNaN(+value)) {\n value = (+value) * 100\n } else if (!isNaN(defaultValue)) {\n value = defaultValue * 100\n } else {\n value = 0\n }\n\n if (props.decimalFormat) {\n value = +value.toFixed(2)\n }\n return value\n })\n const text = computed(() => {\n let text = props.text as string\n if (text === '') return unref(myValue)\n const defaultValue = props.variableDefaultValue as string // 变量默认值\n const data = unref(myData) // { a: 1, b: 2 }\n const variables = (text).match(/\\{.+\\}/g) || []\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n let statement = variable.slice(1, variable.length - 1) // { a - b} => a - b\n const textVariables = statement.match(/.*/g) // a - b => [a,b]\n for (let j = 0; j < textVariables?.length; j++) { // \"1 - 2\"\n const textVariable = textVariables[i]?.trim()\n if (data[textVariable] != null) {\n statement = statement.replace(textVariable, data[textVariable])\n } else {\n statement = statement.replace(textVariable, defaultValue)\n }\n }\n // 匹配加减乘除\n let usedVariable:number | string = statement\n // 运行表达式\n try {\n if ((/\\w+[+\\-*/%]+\\w+/g).test(statement)) {\n // eslint-disable-next-line no-eval\n const eval2 = eval\n usedVariable = eval2(statement)\n }\n } catch (e) {\n console.error(e)\n }\n if (typeof usedVariable === 'number' || !isNaN(+usedVariable)) {\n usedVariable = (+usedVariable * 100)\n if (props.decimalFormat) {\n usedVariable = usedVariable.toFixed(2)\n }\n }\n text = text.replace(variable, usedVariable + '')\n }\n return text\n })\n const requestData = useRequestData(props)\n const loading = ref(false)\n const handleRequestData = async () => {\n if (props.dataType !== 'request' || unref(pageMode) === 'design') return\n try {\n loading.value = true\n const res = await requestData()\n myData.value = res?.data?.data || {}\n } catch (e) {\n console.error(e)\n } finally {\n loading.value = false\n }\n }\n const refreshData = () => {\n handleRequestData()\n }\n useOnEvent(props, {\n refreshData\n })\n\n const emitEvent = useEmitEvent(props)\n\n const click = emitEvent('click', () => {})\n\n const { setRequest } = inject(REQUEST_MODEL, {\n // @ts-ignore\n // eslint-disable-next-line no-void\n setRequest: ({ id, sortNum, requestFn }: RequestModalParam) => void 0\n })\n\n setRequest({\n id: props.id as string,\n requestFn: handleRequestData,\n sortNum: props.requestSort as number\n })\n\n return {\n style,\n myWidth,\n text,\n myValue,\n loading,\n click\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.ecan-proportion {\n overflow: hidden;\n}\n\n.progress {\n width: 100%;\n height: 100%;\n}\n\n.format {\n margin: 0 auto;\n}\n</style>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeStyle","_withCtx","_createBlock"],"mappings":";;;;;;gCACEA,iBA6BM,YAAA;SA7B6BC,UAAO,GAAAC,mBAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IACxC,OA2BaC,eAAA,KAAA,KAAA;AAAA,EAAA,GAAA;AAAA,gBAzBD,uBAAO;AAAA,MAChB,OAAO;AAAA,MACP,SAAM,KAAA;AAAA,MACN,OAAW,KAAA;AAAA,MACX,MAAA,KAAA;AAAA,MACA,aAAY,KAAA;AAAA,MACZ,eAAa,KAAA;AAAA,MACb,YAAW,KAAA;AAAA,MACX,aAAO,KAAA;AAAA,MAAA,WAAA,KAAA,eAAA,cAAA,KAAA;AAAA,MAEG,SAAM,KAAA;AAAA,IAAA,GAAA;AAAA,MACf,QAAAC,QAAA,MAAA;AAAA,QAAA,KAAA,WAAAH,aAA0CI,YAAA,qBAAA;AAAA,UAAA,KAAA;AAAA,UAC1C,SAAA,KAAA;AAAA,QAAA,GAAA,MAAA,GAAA,CAAA,SAAA,CAAA,MAAAJ,UAEgB,GAAAC,mBAAA,OAAA;AAAA,UACb,KAAK;AAAA,UAAuB,OAAA;AAAA,UAAqC,OAAAC,eAAA;AAAA,YAAc,OAAA,KAAA;AAAA,YAAmB,UAAA,KAAA;AAAA,YAAwB,OAAA,KAAA;AAAA,YAAA,YAAA,KAAA;AAAA;;;;;;;;;"}
1
+ {"version":3,"file":"Proportion.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}