@ecan-bi/indicator-library 1.0.26 → 1.0.27
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.
- package/dist/assets/editor.worker-02df2e61.js +1 -1
- package/dist/assets/json.worker-867823a6.js +1 -1
- package/dist/assets/ts.worker-7254b425.js +1 -1
- package/dist/index.es.js +3423 -3350
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +10 -10
- package/dist/index.umd.js.map +1 -1
- package/dist/style.css +2 -2
- package/package.json +1 -1
- package/types/indicator/indicator-library/IndicatorLibrary.vue.d.ts +3 -1
- package/types/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue.d.ts +5 -0
- package/types/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue.d.ts +14 -2
- package/types/indicator/indicator-library/data-config/style-config-group/props-to-form/switch/Switch.vue.d.ts +1 -1
- package/types/indicator/indicator-library/index.d.ts +3 -1
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/utils/withInstall.ts","../src/utils/constant.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/bar/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/line/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/pie/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/custom-graph/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/combo-graph/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/index.ts","../src/indicator/indicator-library/data-list/DataViewList.vue","../src/indicator/indicator-library/data-list/DataViewList.vue","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@ant-design/icons-vue/es/insert-css.js","../node_modules/@ant-design/icons-vue/es/utils.js","../node_modules/@ant-design/icons-vue/es/components/IconBase.js","../node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons-vue/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretDownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CloseOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CopyOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DoubleRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MinusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/MinusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/SettingOutlined.js","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/directives/focus.ts","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../node_modules/dayjs/plugin/quarterOfYear.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/TruncationList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/TruncationList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../node_modules/nanoid/index.prod.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/utils/util.ts","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data.ts","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/data.ts","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/data.tsx","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/radio-group/RadioGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/switch/Switch.vue","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/vue-pick-colors/dist/index.esm.js","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/editor/Editor.vue","../src/indicator/editor/Editor.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/hooks/useIndicatorData.ts","../src/utils/runCode.ts","../src/hooks/useVariablesInText.ts","../src/hooks/useValueFormatter.ts","../src/indicator/chart-graph/transformProps.ts","../src/hooks/useTransformChartDataByAttrKey.ts","../src/hooks/useTransformChartDataByAttrValue.ts","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/index.ts","../src/indicator/chart-graph/index.ts","../src/index.ts"],"sourcesContent":["import { NOOP } from '@vue/shared'\nimport { Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport const withInstall = <T, E extends Record<string, any>>(\n main: T,\n extra?: E\n) => {\n (main as SFCWithInstall<T>).install = (app): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp)\n }\n }\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp\n }\n }\n return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app) => {\n app.config.globalProperties[name] = fn\n }\n\n return fn as SFCWithInstall<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n (component as SFCWithInstall<T>).install = NOOP\n\n return component as SFCWithInstall<T>\n}\n","export const REQUEST = '$request'\n// @ts-ignore\nexport const INDICATOR_URL = window?.config?.indicatorURL || ''\n\nexport const INDICATOR_TOKEN = 'INDICATOR_TOKEN'\n\nexport const CONTAINER_TYPES = ['tabs', 'border']\n\nexport const CACHE_STEP = 'CACHE_STEP'\n\nexport const UPDATE_SNAPSHOT_LIST = 'UPDATE_SNAPSHOT_LIST'\n\nexport const REQUEST_MODEL = 'REQUEST_MODEL'\n\nexport const DATA_LIST = 'DATA_LIST'\n\nexport const SELECTED_COMPONENT = 'SELECTED_COMPONENT'\n\nexport const GRAPHIC_CONFIG = 'GRAPHIC_CONFIG'\n\nexport const UPDATE_GRAPHIC_CONFIG = 'UPDATE_GRAPHIC_CONFIG'\n\nexport const SHOW_STYLE_CONFIG = 'SHOW_STYLE_CONFIG'\n\nexport const REFRESH_DATA = 'REFRESH_DATA'\n\nexport const CHARTS_OPTIONS = 'CHARTS_OPTIONS'\n\nexport const ZOOM_FONT_SIZE = 18\n\nexport const UPDATE_CHARTS_OPTIONS = 'UPDATE_CHARTS_OPTIONS'\n\nexport const SOURCE_TYPE = 'SOURCE_TYPE'\n\nexport const CHANGE_CONDITION = 'CHANGE_CONDITION'\n\nexport const DATA_VIEW_COLUMNS = 'DATA_VIEW_COLUMNS'\n","\nexport interface BarProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n titleText: string\n titleSubtext: string\n colors: string []\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisInverse: boolean\n xAxisMinInterval: number\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisLabelWidth: number | undefined // y轴名称宽度\n yAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // y轴名称溢出操作\n yAxisLabelRotate: number // y轴名称旋转\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLabelFormatter: string\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string,\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n barWidth: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n isUseHorizontalAxis: boolean\n axisInverse: boolean\n isStack: boolean\n labelShow: boolean\n labelFontSize: string\n labelPosition: 'inside' | 'top' | 'bottom' | 'right' | 'left'\n labelColor: string\n}\n\nexport const barProps: BarProps = {\n name: '柱状图',\n type: 'bar',\n width: '400px',\n height: '400px',\n xAxisLabelFormatter: '{value}',\n yAxisLabelFormatter: '{value}',\n yAxisLineAlwaysDisplay: false,\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelInterval: 0,\n xAxisLabelColor: '#333',\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisLabelWidth: undefined,\n yAxisLabelRotate: 0,\n yAxisLabelOverflow: 'none',\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n barWidth: '40%',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n isUseHorizontalAxis: false,\n axisInverse: false,\n xAxisInverse: false,\n yAxisInverse: false,\n isStack: false,\n labelShow: false,\n labelFontSize: '12px',\n labelPosition: 'inside',\n labelColor: '',\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true\n}\n","export interface LineProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n legendShow: boolean,\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal' // 标记点大小\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string // 格式化\n xAxisInverse: boolean\n xAxisMinInterval: number\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n yAxisLabelFormatter: string // 格式化\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n tooltipFormatter: string\n tooltipShow: boolean\n toolboxShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n areaStyleOpacity: number\n}\n\nexport const lineProps = {\n name: '折线图',\n type: 'line',\n width: '400px',\n height: '400px',\n legendShow: true,\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisLabelFormatter: '{value}', // 格式化\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n yAxisLabelFormatter: '{value}',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n tooltipShow: true,\n tooltipFormatter: '{marker} {a} {c}',\n toolboxShow: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0\n}\n","\nexport interface PieProps{\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n backgroundColor: string\n tooltipShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n legendShow: boolean\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n legendTextStyleColor: string\n innerRadius: string\n outerRadius: string\n centerLeft: string\n centerTop: string\n minAngle: number\n labelShow: boolean\n labelFormatter: string\n labelFontSize: number\n labelPosition: 'outside' | 'inside' | 'center'\n labelLineShow: boolean\n labelColor: string\n isUseLabelColors: boolean\n labelLineLength: number\n labelLineLength2: number\n roseType: '' | 'radius' | 'area'\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n}\n\nexport const pieProps: PieProps = {\n name: '饼图',\n type: 'pie',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n backgroundColor: '',\n tooltipShow: true,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {b} {c} ({d}%)',\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'vertical',\n legendTop: 'top',\n legendLeft: 'left',\n innerRadius: '0%',\n outerRadius: '60%',\n centerLeft: '50%',\n centerTop: '50%',\n minAngle: 0,\n labelShow: true,\n labelColor: '#333',\n isUseLabelColors: false,\n labelFontSize: 12,\n labelPosition: 'outside',\n labelFormatter: '{b}\\\\n{d}%',\n labelLineShow: true,\n labelLineLength: 10,\n labelLineLength2: 15,\n roseType: '',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息'\n}\n","export interface CustomGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n option: { [key:string]: any }\n optionCode: string\n}\n\nexport const customGraphProps: CustomGraphProps = {\n name: '自定义图表',\n type: 'customGraph',\n width: '400px',\n height: '400px',\n option: {},\n optionCode: ''\n}\n","\nexport interface ComboGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string []\n titleText: string\n titleSubtext: string\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisMinInterval: number // 最小间距\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelRotate: number\n xAxisLabelOverflow: string\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n yAxisSplitLineShow: boolean // y轴展示分割线\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n seriesTypes: { [key: string]: any } []\n yAxis: { [key: string]: any } []\n yAxisMinInterval: number\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n areaStyleOpacity: number\n barWidth: string\n}\n\nexport const comboGraphProps: ComboGraphProps = {\n name: '组合图表',\n type: 'comboGraph',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelWidth: undefined,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n seriesTypes: [\n {\n type: 'bar',\n axisIndex: 0\n },\n {\n type: 'line',\n axisIndex: 0\n }\n ],\n yAxis: [\n {\n axisLabelFormatter: '{value}'\n },\n {\n axisLabelFormatter: '{value}'\n }\n ],\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0,\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n barWidth: '40%'\n}\n","import { barProps } from './bar'\nimport { lineProps } from './line'\nimport { pieProps } from './pie'\nimport { customGraphProps } from './custom-graph'\nimport { comboGraphProps } from './combo-graph'\n\nexport default {\n bar: barProps,\n line: lineProps,\n pie: pieProps,\n customGraph: customGraphProps,\n comboGraph: comboGraphProps\n}\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <draggable\n v-model=\"dataViewList\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n @start=\"onDragStart($event, dataViewList)\"\n >\n <template #item=\"{ element: dataView }\">\n <div class=\"column-item\">\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </template>\n </draggable>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect,\n Draggable\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n const copyItem = {\n ...dataView,\n label: dataView.name,\n name: dataView.label\n }\n sessionStorage.setItem('indicator-list-item', JSON.stringify(copyItem))\n }\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <draggable\n v-model=\"dataViewList\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n @start=\"onDragStart($event, dataViewList)\"\n >\n <template #item=\"{ element: dataView }\">\n <div class=\"column-item\">\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </template>\n </draggable>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect,\n Draggable\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n const copyItem = {\n ...dataView,\n label: dataView.name,\n name: dataView.label\n }\n sessionStorage.setItem('indicator-list-item', JSON.stringify(copyItem))\n }\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { inputToRGB, rgbToHex, rgbToHsv } from '@ctrl/tinycolor';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b;\n var hsv = rgbToHsv(r, g, b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v\n };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n var r = _ref2.r,\n g = _ref2.g,\n b = _ref2.b;\n return \"#\".concat(rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n var p = amount / 100;\n var rgb = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b\n };\n return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = inputToRGB(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = toHsv(pColor);\n var colorString = toHex(inputToRGB({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }));\n patterns.push(colorString);\n }\n\n patterns.push(toHex(pColor));\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = toHsv(pColor);\n\n var _colorString = toHex(inputToRGB({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }));\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref3) {\n var index = _ref3.index,\n opacity = _ref3.opacity;\n var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || '#141414'), inputToRGB(patterns[index]), opacity * 100));\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","// https://github.com/substack/insert-css\nvar containers = []; // will store container HTMLElement references\n\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container); // first time we see this container, create the necessary entries\n\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n } // try to get the correponding container + position styleElement, create it otherwise\n\n\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n } // strip potential UTF-8 BOM if css was read from a file\n\n\n if (css.charCodeAt(0) === 0xfeff) {\n css = css.substr(1, css.length);\n } // actually add the stylesheet\n\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css;\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n}\n\nexport default insertCss;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { nextTick, h } from 'vue';\nimport { generate as generateColor } from '@ant-design/colors';\nimport insertCss from './insert-css';\nexport function warn(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nexport function warning(valid, message) {\n warn(valid, \"[@ant-design/icons-vue] \".concat(message));\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nexport function isIconDefinition(target) {\n return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(attrs).reduce(function (acc, key) {\n var val = attrs[key];\n\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc[\"class\"];\n break;\n\n default:\n acc[key] = val;\n }\n\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return h(node.tag, _objectSpread({\n key: key\n }, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n }\n\n return h(node.tag, _objectSpread({\n key: key\n }, rootProps, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n} // These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n\nexport var svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n display: inline-block;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n line-height: 1;\\n}\\n\\n.anticon svg {\\n display: inline-block;\\n}\\n\\n.anticon::before {\\n display: none;\\n}\\n\\n.anticon .anticon-icon {\\n display: block;\\n}\\n\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n display: inline-block;\\n -webkit-animation: loadingCircle 1s infinite linear;\\n animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\";\nvar cssInjectedFlag = false;\nexport var useInsertStyles = function useInsertStyles() {\n var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles;\n nextTick(function () {\n if (!cssInjectedFlag) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n insertCss(styleStr, {\n prepend: true\n });\n }\n\n cssInjectedFlag = true;\n }\n });\n};","var _excluded = [\"icon\", \"primaryColor\", \"secondaryColor\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from '../utils';\nvar twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\n\nfunction setTwoToneColors(_ref) {\n var primaryColor = _ref.primaryColor,\n secondaryColor = _ref.secondaryColor;\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\n\nfunction getTwoToneColors() {\n return _objectSpread({}, twoToneColorPalette);\n}\n\nvar IconBase = function IconBase(props, context) {\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n icon = _props$context$attrs.icon,\n primaryColor = _props$context$attrs.primaryColor,\n secondaryColor = _props$context$attrs.secondaryColor,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var colors = twoToneColorPalette;\n\n if (primaryColor) {\n colors = {\n primaryColor: primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n\n useInsertStyles();\n warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n\n if (!isIconDefinition(icon)) {\n return null;\n }\n\n var target = icon;\n\n if (target && typeof target.icon === 'function') {\n target = _objectSpread({}, target, {\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n });\n }\n\n return generate(target.icon, \"svg-\".concat(target.name), _objectSpread({}, restProps, {\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n })); // },\n};\n\nIconBase.props = {\n icon: Object,\n primaryColor: String,\n secondaryColor: String,\n focusable: String\n};\nIconBase.inheritAttrs = false;\nIconBase.displayName = 'IconBase';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport VueIcon from './IconBase';\nimport { normalizeTwoToneColors } from '../utils';\nexport function setTwoToneColor(twoToneColor) {\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return VueIcon.setTwoToneColors({\n primaryColor: primaryColor,\n secondaryColor: secondaryColor\n });\n}\nexport function getTwoToneColor() {\n var colors = VueIcon.getTwoToneColors();\n\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n\n return [colors.primaryColor, colors.secondaryColor];\n}","var _excluded = [\"class\", \"icon\", \"spin\", \"rotate\", \"tabindex\", \"twoToneColor\", \"onClick\"];\nimport { createVNode as _createVNode } from \"vue\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport VueIcon from './IconBase';\nimport { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';\nimport { normalizeTwoToneColors } from '../utils'; // Initial setting\n\nsetTwoToneColor('#1890ff');\n\nvar Icon = function Icon(props, context) {\n var _classObj;\n\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n cls = _props$context$attrs[\"class\"],\n icon = _props$context$attrs.icon,\n spin = _props$context$attrs.spin,\n rotate = _props$context$attrs.rotate,\n tabindex = _props$context$attrs.tabindex,\n twoToneColor = _props$context$attrs.twoToneColor,\n onClick = _props$context$attrs.onClick,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var classObj = (_classObj = {\n anticon: true\n }, _defineProperty(_classObj, \"anticon-\".concat(icon.name), Boolean(icon.name)), _defineProperty(_classObj, cls, cls), _classObj);\n var svgClassString = spin === '' || !!spin || icon.name === 'loading' ? 'anticon-spin' : '';\n var iconTabIndex = tabindex;\n\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n restProps.tabindex = iconTabIndex;\n }\n\n var svgStyle = rotate ? {\n msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n transform: \"rotate(\".concat(rotate, \"deg)\")\n } : undefined;\n\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return _createVNode(\"span\", _objectSpread({\n \"role\": \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n \"onClick\": onClick,\n \"class\": classObj\n }), [_createVNode(VueIcon, {\n \"class\": svgClassString,\n \"icon\": icon,\n \"primaryColor\": primaryColor,\n \"secondaryColor\": secondaryColor,\n \"style\": svgStyle\n }, null)]);\n};\n\nIcon.props = {\n spin: Boolean,\n rotate: Number,\n icon: Object,\n twoToneColor: String\n};\nIcon.displayName = 'AntdIcon';\nIcon.inheritAttrs = false;\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","// This icon file is generated automatically.\nvar AppstoreAddOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"appstore-add\", \"theme\": \"outlined\" };\nexport default AppstoreAddOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport AppstoreAddOutlinedSvg from \"@ant-design/icons-svg/es/asn/AppstoreAddOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar AppstoreAddOutlined = function AppstoreAddOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": AppstoreAddOutlinedSvg\n }), null);\n};\n\nAppstoreAddOutlined.displayName = 'AppstoreAddOutlined';\nAppstoreAddOutlined.inheritAttrs = false;\nexport default AppstoreAddOutlined;","// This icon file is generated automatically.\nvar CaretDownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"outlined\" };\nexport default CaretDownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretDownOutlined = function CaretDownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretDownOutlinedSvg\n }), null);\n};\n\nCaretDownOutlined.displayName = 'CaretDownOutlined';\nCaretDownOutlined.inheritAttrs = false;\nexport default CaretDownOutlined;","// This icon file is generated automatically.\nvar CaretRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\" } }] }, \"name\": \"caret-right\", \"theme\": \"outlined\" };\nexport default CaretRightOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretRightOutlined = function CaretRightOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretRightOutlinedSvg\n }), null);\n};\n\nCaretRightOutlined.displayName = 'CaretRightOutlined';\nCaretRightOutlined.inheritAttrs = false;\nexport default CaretRightOutlined;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CloseOutlined = function CloseOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CloseOutlinedSvg\n }), null);\n};\n\nCloseOutlined.displayName = 'CloseOutlined';\nCloseOutlined.inheritAttrs = false;\nexport default CloseOutlined;","// This icon file is generated automatically.\nvar CopyOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\" } }] }, \"name\": \"copy\", \"theme\": \"outlined\" };\nexport default CopyOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CopyOutlinedSvg from \"@ant-design/icons-svg/es/asn/CopyOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CopyOutlined = function CopyOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CopyOutlinedSvg\n }), null);\n};\n\nCopyOutlined.displayName = 'CopyOutlined';\nCopyOutlined.inheritAttrs = false;\nexport default CopyOutlined;","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DeleteOutlined = function DeleteOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DeleteOutlinedSvg\n }), null);\n};\n\nDeleteOutlined.displayName = 'DeleteOutlined';\nDeleteOutlined.inheritAttrs = false;\nexport default DeleteOutlined;","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleRightOutlined = function DoubleRightOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DoubleRightOutlinedSvg\n }), null);\n};\n\nDoubleRightOutlined.displayName = 'DoubleRightOutlined';\nDoubleRightOutlined.inheritAttrs = false;\nexport default DoubleRightOutlined;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DownOutlined = function DownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DownOutlinedSvg\n }), null);\n};\n\nDownOutlined.displayName = 'DownOutlined';\nDownOutlined.inheritAttrs = false;\nexport default DownOutlined;","// This icon file is generated automatically.\nvar MinusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"minus-circle\", \"theme\": \"outlined\" };\nexport default MinusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport MinusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/MinusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar MinusCircleOutlined = function MinusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": MinusCircleOutlinedSvg\n }), null);\n};\n\nMinusCircleOutlined.displayName = 'MinusCircleOutlined';\nMinusCircleOutlined.inheritAttrs = false;\nexport default MinusCircleOutlined;","// This icon file is generated automatically.\nvar PlusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"plus-circle\", \"theme\": \"outlined\" };\nexport default PlusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusCircleOutlined = function PlusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusCircleOutlinedSvg\n }), null);\n};\n\nPlusCircleOutlined.displayName = 'PlusCircleOutlined';\nPlusCircleOutlined.inheritAttrs = false;\nexport default PlusCircleOutlined;","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusOutlined = function PlusOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusOutlinedSvg\n }), null);\n};\n\nPlusOutlined.displayName = 'PlusOutlined';\nPlusOutlined.inheritAttrs = false;\nexport default PlusOutlined;","// This icon file is generated automatically.\nvar SettingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" } }] }, \"name\": \"setting\", \"theme\": \"outlined\" };\nexport default SettingOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport SettingOutlinedSvg from \"@ant-design/icons-svg/es/asn/SettingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar SettingOutlined = function SettingOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": SettingOutlinedSvg\n }), null);\n};\n\nSettingOutlined.displayName = 'SettingOutlined';\nSettingOutlined.inheritAttrs = false;\nexport default SettingOutlined;","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n :class=\"setItemDisabled(dataSource.dataViewColumns) ? 'column-disabled' : ''\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <draggable\n v-model=\"dataSource.dataViewColumns\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n :disabled=\"setItemDisabled(dataSource.dataViewColumns)\"\n @start=\"onDragStart($event, dataSource.dataViewColumns)\"\n >\n <template #item=\"{ element: dataViewColumn }\">\n <div class=\"column-child-item\">\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.label }}\n </span>\n </div>\n </template>\n </draggable>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination,\n Draggable\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n if (column.title) {\n column.label = column.title\n }\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX' | 'BUILT_IN_DIM') => {\n const map = {\n DIM: '维度',\n BUILT_IN_DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n // 维度列表\n const dimensions = computed<any>(() => {\n const types = ['classificationList', 'rowHeaderList']\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && types.includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options\n })\n const setItemDisabled = (dataViewColumns: any[] = []) => {\n // 维度不存在指标中,则禁用该指标中所有的维度和值\n let lostDim = false\n for (const item of unref(dimensions)) {\n const target = dataViewColumns.find(v => v.typeGuid === item.typeGuid)\n if (!target) {\n lostDim = true\n break\n }\n }\n return lostDim\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n sessionStorage.setItem('indicator-list-item', JSON.stringify(dataView))\n }\n }\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText,\n setItemDisabled,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n cursor: pointer;\n}\n\n.column-disabled {\n .column-item {\n color: #b3b3b3;\n :deep(.anticon) {\n color: #b3b3b3;\n }\n }\n .column-child-item {\n color: #b3b3b3;\n }\n}\n</style>\n","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n :class=\"setItemDisabled(dataSource.dataViewColumns) ? 'column-disabled' : ''\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <draggable\n v-model=\"dataSource.dataViewColumns\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n :disabled=\"setItemDisabled(dataSource.dataViewColumns)\"\n @start=\"onDragStart($event, dataSource.dataViewColumns)\"\n >\n <template #item=\"{ element: dataViewColumn }\">\n <div class=\"column-child-item\">\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.label }}\n </span>\n </div>\n </template>\n </draggable>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination,\n Draggable\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n if (column.title) {\n column.label = column.title\n }\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX' | 'BUILT_IN_DIM') => {\n const map = {\n DIM: '维度',\n BUILT_IN_DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n // 维度列表\n const dimensions = computed<any>(() => {\n const types = ['classificationList', 'rowHeaderList']\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && types.includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options\n })\n const setItemDisabled = (dataViewColumns: any[] = []) => {\n // 维度不存在指标中,则禁用该指标中所有的维度和值\n let lostDim = false\n for (const item of unref(dimensions)) {\n const target = dataViewColumns.find(v => v.typeGuid === item.typeGuid)\n if (!target) {\n lostDim = true\n break\n }\n }\n return lostDim\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n sessionStorage.setItem('indicator-list-item', JSON.stringify(dataView))\n }\n }\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText,\n setItemDisabled,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n cursor: pointer;\n}\n\n.column-disabled {\n .column-item {\n color: #b3b3b3;\n :deep(.anticon) {\n color: #b3b3b3;\n }\n }\n .column-child-item {\n color: #b3b3b3;\n }\n}\n</style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export default {\n mounted (el: HTMLElement) {\n // 自动聚焦\n el.focus()\n }\n}\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n @change=\"onFieldChange\"\n >\n <template v-for=\"(option, _index) in fieldOptions\" :key=\"_index\">\n <a-select-option :value=\"option.value\">\n <span :title=\"option.label\">{{ option.label }}</span>\n </a-select-option>\n </template>\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n SelectOption as ASelectOption,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, CHANGE_CONDITION, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber,\n ASelectOption\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const dataViewColumns = inject(DATA_VIEW_COLUMNS) as any\n const controlList = computed(() => unref(graphicConfig)?.controlList?.map((item: any) => {\n const { keyName = '', id = '', prop = '' } = item\n let propName = ''\n if (prop === 'startTime') {\n propName = '-开始时间值'\n } else if (prop === 'endTime') {\n propName = '-结束时间值'\n }\n return {\n ...item,\n label: `${keyName || id}${propName}`,\n value: `${keyName || id}-${prop}`\n }\n }))\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n // const { getDataList } = inject(DATA_LIST, {\n // getDataList: () => ([] as { key:string } [])\n // })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n let result = []\n if (['classificationList', 'seriesList', 'rowHeaderList'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n result = options\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators'].includes(type)) {\n // return unref(getDataList())\n result = unref(dataViewColumns)\n }\n return result.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label,\n value: v.name\n }\n })\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (value: string) => {\n const option = unref(fieldOptions).find(v => v.value === value) || {}\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n onMounted(() => {\n if (unref(condition).fieldType === 'DATE') {\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).dataType = props.data?.dataType || ''\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n @change=\"onFieldChange\"\n >\n <template v-for=\"(option, _index) in fieldOptions\" :key=\"_index\">\n <a-select-option :value=\"option.value\">\n <span :title=\"option.label\">{{ option.label }}</span>\n </a-select-option>\n </template>\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n SelectOption as ASelectOption,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, CHANGE_CONDITION, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber,\n ASelectOption\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const dataViewColumns = inject(DATA_VIEW_COLUMNS) as any\n const controlList = computed(() => unref(graphicConfig)?.controlList?.map((item: any) => {\n const { keyName = '', id = '', prop = '' } = item\n let propName = ''\n if (prop === 'startTime') {\n propName = '-开始时间值'\n } else if (prop === 'endTime') {\n propName = '-结束时间值'\n }\n return {\n ...item,\n label: `${keyName || id}${propName}`,\n value: `${keyName || id}-${prop}`\n }\n }))\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n // const { getDataList } = inject(DATA_LIST, {\n // getDataList: () => ([] as { key:string } [])\n // })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n let result = []\n if (['classificationList', 'seriesList', 'rowHeaderList'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n result = options\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators'].includes(type)) {\n // return unref(getDataList())\n result = unref(dataViewColumns)\n }\n return result.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label,\n value: v.name\n }\n })\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (value: string) => {\n const option = unref(fieldOptions).find(v => v.value === value) || {}\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n onMounted(() => {\n if (unref(condition).fieldType === 'DATE') {\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).dataType = props.data?.dataType || ''\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\r\n <div class=\"truncations\">\r\n <!-- <div class=\"title\">截断配置</div> -->\r\n <div\r\n class=\"item\"\r\n v-for=\"(item, _index) in truncationList\"\r\n :key=\"_index\"\r\n >\r\n <div class=\"rule\">\r\n <a-select\r\n style=\"width: 100%;\"\r\n v-model:value=\"item.rule\"\r\n :options=\"ruleOptions\"\r\n >\r\n </a-select>\r\n </div>\r\n <div class=\"field-value\">\r\n N=\r\n <a-input-number v-model:value=\"item.num\" :min=\"0\" />\r\n </div>\r\n <div class=\"field-value\">\r\n <div class=\"text\">将其余项设为</div>\r\n <a-input v-model:value=\"item.name\" style=\"width: 100px;margin: 0 10px;\"/>\r\n <div class=\"text\">分组</div>\r\n </div>\r\n <div class=\"clear-truncation\" @click=\"clearData(item)\">清空</div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { PropType, defineComponent, onMounted, ref, watch } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Input as AInput,\r\n InputNumber as AInputNumber\r\n} from 'ant-design-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'TruncationList',\r\n props: {\r\n list: {\r\n type: Array as PropType<any[]>,\r\n default: () => ([])\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AInput,\r\n AInputNumber\r\n },\r\n setup (props, { emit }) {\r\n const ruleOptions = [\r\n { label: '前N个', value: 'TOP' },\r\n { label: '后N个', value: 'BOTTOM' }\r\n ]\r\n const truncationList = ref<any[]>([])\r\n watch(truncationList, (val) => {\r\n if (val?.length) {\r\n emit('update', val)\r\n }\r\n }, {\r\n deep: true\r\n })\r\n onMounted(() => {\r\n if (props.list?.length) {\r\n truncationList.value = cloneDeep(props.list)\r\n } else {\r\n truncationList.value = [{\r\n num: 0,\r\n rule: '',\r\n name: '其他'\r\n }]\r\n }\r\n })\r\n\r\n const clearData = (item: any) => {\r\n item.rule = ''\r\n item.num = 0\r\n item.name = ''\r\n }\r\n return {\r\n ruleOptions,\r\n truncationList,\r\n clearData\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.truncations {\r\n width: 100%;\r\n margin-top: 10px;\r\n background-color: #fff;\r\n border: 1px solid #e8e8e8;\r\n padding: 8px;\r\n .title {\r\n font-size: 16px;\r\n color: #333;\r\n padding-bottom: 8px;\r\n }\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n }\r\n .field-value {\r\n display: flex;\r\n align-items: center;\r\n margin-left: 20px;\r\n .text {\r\n word-break: keep-all;\r\n }\r\n }\r\n\r\n .rule {\r\n width: 180px;\r\n }\r\n\r\n .clear-truncation {\r\n margin: auto 0 auto auto;\r\n color: red;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"truncations\">\r\n <!-- <div class=\"title\">截断配置</div> -->\r\n <div\r\n class=\"item\"\r\n v-for=\"(item, _index) in truncationList\"\r\n :key=\"_index\"\r\n >\r\n <div class=\"rule\">\r\n <a-select\r\n style=\"width: 100%;\"\r\n v-model:value=\"item.rule\"\r\n :options=\"ruleOptions\"\r\n >\r\n </a-select>\r\n </div>\r\n <div class=\"field-value\">\r\n N=\r\n <a-input-number v-model:value=\"item.num\" :min=\"0\" />\r\n </div>\r\n <div class=\"field-value\">\r\n <div class=\"text\">将其余项设为</div>\r\n <a-input v-model:value=\"item.name\" style=\"width: 100px;margin: 0 10px;\"/>\r\n <div class=\"text\">分组</div>\r\n </div>\r\n <div class=\"clear-truncation\" @click=\"clearData(item)\">清空</div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { PropType, defineComponent, onMounted, ref, watch } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Input as AInput,\r\n InputNumber as AInputNumber\r\n} from 'ant-design-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'TruncationList',\r\n props: {\r\n list: {\r\n type: Array as PropType<any[]>,\r\n default: () => ([])\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AInput,\r\n AInputNumber\r\n },\r\n setup (props, { emit }) {\r\n const ruleOptions = [\r\n { label: '前N个', value: 'TOP' },\r\n { label: '后N个', value: 'BOTTOM' }\r\n ]\r\n const truncationList = ref<any[]>([])\r\n watch(truncationList, (val) => {\r\n if (val?.length) {\r\n emit('update', val)\r\n }\r\n }, {\r\n deep: true\r\n })\r\n onMounted(() => {\r\n if (props.list?.length) {\r\n truncationList.value = cloneDeep(props.list)\r\n } else {\r\n truncationList.value = [{\r\n num: 0,\r\n rule: '',\r\n name: '其他'\r\n }]\r\n }\r\n })\r\n\r\n const clearData = (item: any) => {\r\n item.rule = ''\r\n item.num = 0\r\n item.name = ''\r\n }\r\n return {\r\n ruleOptions,\r\n truncationList,\r\n clearData\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.truncations {\r\n width: 100%;\r\n margin-top: 10px;\r\n background-color: #fff;\r\n border: 1px solid #e8e8e8;\r\n padding: 8px;\r\n .title {\r\n font-size: 16px;\r\n color: #333;\r\n padding-bottom: 8px;\r\n }\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n }\r\n .field-value {\r\n display: flex;\r\n align-items: center;\r\n margin-left: 20px;\r\n .text {\r\n word-break: keep-all;\r\n }\r\n }\r\n\r\n .rule {\r\n width: 180px;\r\n }\r\n\r\n .clear-truncation {\r\n margin: auto 0 auto auto;\r\n color: red;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n paddingTop: '10px'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <a-tabs v-model:activeKey=\"activeKey\" v-if=\"type === 'classificationList'\">\n <a-tab-pane key=\"1\" tab=\"过滤条件\" style=\"overflow: auto;\">\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-tab-pane>\n <a-tab-pane key=\"2\" tab=\"截断配置\">\n <truncation-list\n :list=\"truncationList\"\n @update=\"onUpdatetruncation\"\n />\n </a-tab-pane>\n </a-tabs>\n <template v-else>\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </template>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject, computed } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton,\n Tabs as ATabs,\n TabPane as ATabPane\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport TruncationList from './TruncationList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n TruncationList,\n AModal,\n AButton,\n ATabs,\n ATabPane\n },\n setup (props, { expose }) {\n const activeKey = ref('1')\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataSourceId = computed(() => unref(graphicConfig)?.dataSourceId)\n const conditionList = ref<{ [key: string]: any } []>([])\n const truncationList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible) {\n if (Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n if (Array.isArray(props.item?.truncations)) {\n truncationList.value = cloneDeep(props.item?.truncations) || []\n }\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const onUpdatetruncation = (list: any[]) => {\n isDataChange = true\n truncationList.value = list\n }\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n if (props.type === 'classificationList' && unref(truncationList)?.length) {\n list[props.index].truncations = unref(truncationList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const PAGE_ID = (window as any)?.config?.pageId\n const dataViewColumns = ref([])\n provide(DATA_VIEW_COLUMNS, dataViewColumns)\n const getHrpIndexWithComplex = async (indexGuid: string) => {\n if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n indexGuid\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.dataViewColumns?.length) {\n dataViewColumns.value = data.dataViewColumns\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data && visible.value) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n truncationList,\n addCondition,\n onUpdatetruncation,\n activeKey\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n paddingTop: '10px'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <a-tabs v-model:activeKey=\"activeKey\" v-if=\"type === 'classificationList'\">\n <a-tab-pane key=\"1\" tab=\"过滤条件\" style=\"overflow: auto;\">\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-tab-pane>\n <a-tab-pane key=\"2\" tab=\"截断配置\">\n <truncation-list\n :list=\"truncationList\"\n @update=\"onUpdatetruncation\"\n />\n </a-tab-pane>\n </a-tabs>\n <template v-else>\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </template>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject, computed } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton,\n Tabs as ATabs,\n TabPane as ATabPane\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport TruncationList from './TruncationList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n TruncationList,\n AModal,\n AButton,\n ATabs,\n ATabPane\n },\n setup (props, { expose }) {\n const activeKey = ref('1')\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataSourceId = computed(() => unref(graphicConfig)?.dataSourceId)\n const conditionList = ref<{ [key: string]: any } []>([])\n const truncationList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible) {\n if (Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n if (Array.isArray(props.item?.truncations)) {\n truncationList.value = cloneDeep(props.item?.truncations) || []\n }\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const onUpdatetruncation = (list: any[]) => {\n isDataChange = true\n truncationList.value = list\n }\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n if (props.type === 'classificationList' && unref(truncationList)?.length) {\n list[props.index].truncations = unref(truncationList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const PAGE_ID = (window as any)?.config?.pageId\n const dataViewColumns = ref([])\n provide(DATA_VIEW_COLUMNS, dataViewColumns)\n const getHrpIndexWithComplex = async (indexGuid: string) => {\n if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n indexGuid\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.dataViewColumns?.length) {\n dataViewColumns.value = data.dataViewColumns\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data && visible.value) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n truncationList,\n addCondition,\n onUpdatetruncation,\n activeKey\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","import { urlAlphabet } from './url-alphabet/index.js'\nif (false) {\n if (\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative' &&\n typeof crypto === 'undefined'\n ) {\n throw new Error(\n 'React Native does not have a built-in secure random generator. ' +\n 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' +\n 'For secure IDs, import `react-native-get-random-values` ' +\n 'before Nano ID.'\n )\n }\n if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') {\n throw new Error(\n 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' +\n ' before importing Nano ID to fix IE 11 support'\n )\n }\n if (typeof crypto === 'undefined') {\n throw new Error(\n 'Your browser does not have secure random generator. ' +\n 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n )\n }\n}\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, size, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * size) / alphabet.length)\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n let byte = bytes[size] & 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte < 63) {\n id += '_'\n } else {\n id += '-'\n }\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"selectedElem(field.label, 'name')\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n id=\"calTextArea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n <div class=\"cal_right_bottom\">\n <ul class=\"cal_fu\">\n <li\n v-for=\"(item, index) in calculMethods\"\n @click=\"selectedElem(item, 'symbol')\"\n :key=\"index\"\n >\n {{ item }}\n </li>\n </ul>\n <a-popover\n placement=\"topRight\"\n trigger=\"click\"\n overlayClassName=\"func-popover\">\n <template #content>\n <div class=\"function-wrap\">\n <div class=\"wrap-search\">\n <a-input-search\n v-model:value=\"searchFuncValue\"\n style=\"margin-bottom: 8px\"\n placeholder=\"请输入关键字搜索\"\n />\n </div>\n <div class=\"tree-box\">\n <a-tree\n :expanded-keys=\"expandedKeys\"\n :auto-expand-parent=\"autoExpandParent\"\n :tree-data=\"funcDescsData\"\n @expand=\"onExpand\"\n >\n <template #title=\"{ title, leaf }\">\n <span v-if=\"title.indexOf(searchFuncValue) > -1\">\n {{ title.substr(0, title.indexOf(searchFuncValue)) }}\n <span style=\"color: #f50\">{{ searchFuncValue }}</span>\n {{ title.substr(title.indexOf(searchFuncValue) + searchFuncValue.length) }}\n </span>\n <span v-else>{{ title }}</span>\n <span\n v-if=\"leaf\"\n class=\"insertsty\"\n @click=\"selectedElem(title, 'function')\"\n >插入</span>\n </template>\n </a-tree>\n </div>\n </div>\n </template>\n <span class=\"cal_a\">\n 更多函数\n <double-right-outlined style=\"font-size: 12px;margin: 2px 0 0 2px;color: #1890ff;\"/>\n </span>\n </a-popover>\n </div>\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject, ref, onMounted, watch } from 'vue'\nimport { GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport {\n Row as ARow,\n Col as ACol,\n Textarea as ATextarea,\n Popover as APopover,\n InputSearch as AInputSearch,\n Tree as ATree,\n type TreeProps\n} from 'ant-design-vue'\nimport { DoubleRightOutlined } from '@ant-design/icons-vue'\nconst getParentKey = (\n key: string | number,\n tree: TreeProps['treeData']\n): string | number | undefined => {\n let parentKey\n for (let i = 0; i < tree.length; i++) {\n const node = tree[i]\n if (node.children) {\n if (node.children.some(item => item.key === key)) {\n parentKey = node.key\n } else if (getParentKey(key, node.children)) {\n parentKey = getParentKey(key, node.children)\n }\n }\n }\n return parentKey\n}\n\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n },\n item: {\n type: Object,\n default: () => ({})\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea,\n APopover,\n AInputSearch,\n ATree,\n DoubleRightOutlined\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n // return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n return fieldList?.filter((field) => field.id !== props.item.id) || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const searchFuncValue = ref('')\n const insertText = (str: string) => {\n const obj: any = document.getElementById('calTextArea')\n let tmpStr = myValue.value\n if ((document as any).selection) {\n const sel = (document as any).selection.createRange()\n sel.text = str\n } else if (\n typeof obj.selectionStart === 'number' &&\n typeof obj.selectionEnd === 'number'\n ) {\n const startPos = obj.selectionStart\n const endPos = obj.selectionEnd\n let cursorPos = startPos\n tmpStr =\n tmpStr.substring(0, startPos) +\n str +\n tmpStr.substring(endPos, tmpStr.length)\n cursorPos += str.length\n obj.selectionStart = obj.selectionEnd = cursorPos\n } else {\n tmpStr += str\n }\n myValue.value = tmpStr\n }\n const calculMethods = ['+', '-', '*', '/', '(', ')']\n const selectedElem = (value: string, type: string) => {\n let inputVal = ''\n switch (type) {\n case 'name': {\n // 名称\n inputVal = '${' + value + '}'\n break\n }\n case 'function': {\n // 函数\n inputVal = value + '()'\n break\n }\n default: {\n // 加减符号\n inputVal = value\n }\n }\n insertText(inputVal)\n }\n const dataList: TreeProps['treeData'] = []\n const expandedKeys = ref<(string | number)[]>([])\n const autoExpandParent = ref<boolean>(true)\n const funcDescsData = ref([])\n const setDataList = (data: any) => {\n for (const item of data) {\n if (item?.children?.length) {\n setDataList(item.children)\n } else {\n dataList.push({\n key: item.key,\n title: item.title\n })\n }\n }\n }\n const getFuncDescs = async () => {\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/funcdescs`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.length) {\n setDataList(data)\n funcDescsData.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onExpand = (keys: string[]) => {\n expandedKeys.value = keys\n autoExpandParent.value = false\n }\n watch(searchFuncValue, value => {\n console.log('dataList', dataList)\n\n const expanded = dataList\n .map((item: any) => {\n if (item.title.indexOf(value) > -1) {\n return getParentKey(item.key, funcDescsData.value)\n }\n return null\n })\n .filter((item, i, self) => item && self.indexOf(item) === i)\n expandedKeys.value = expanded\n searchFuncValue.value = value\n autoExpandParent.value = true\n })\n onMounted(() => {\n getFuncDescs()\n })\n return {\n fieldList,\n myValue,\n calculMethods,\n funcDescsData,\n searchFuncValue,\n expandedKeys,\n autoExpandParent,\n selectedElem,\n onExpand\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n // border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n border: 1px solid #d9d9d9;\n border-right: none;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n border-radius: 0;\n}\n.cal_right_bottom {\n height: 26px;\n width: 100%;\n border: 1px solid #d9d9d9;\n border-top: none;\n line-height: 26px;\n .cal_fu {\n padding: 0;\n width: 200px;\n float: left;\n margin: 0;\n li {\n width: 20px;\n float: left;\n text-align: center;\n margin: 0 5px;\n cursor: pointer;\n &:hover {\n background: #eff1f4;\n }\n }\n }\n .cal_a {\n color: #1890ff;\n font-size: 13px;\n cursor: pointer;\n display: flex;\n align-items: center;\n float: right;\n margin-right: 10px;\n height: 13px;\n margin-top: 6px;\n &:hover {\n color: #40a9ff;\n }\n }\n}\n.function-wrap {\n width: 240px;\n height: 200px;\n .wrap-search {\n height: 40px;\n background-color: #ffffff;\n border-bottom: 1px solid #d9d9d9;\n padding: 0 10px;\n }\n .tree-box {\n height: calc(100% - 40px);\n overflow: auto;\n }\n}\n</style>\n<style lang=\"less\">\n.func-popover {\n .ant-popover-inner-content {\n padding: 12px 0;\n }\n .insertsty {\n color: #1890ff;\n margin-left: 6px;\n display: none;\n &:hover {\n color: red;\n }\n }\n .ant-tree-title {\n &:hover {\n .insertsty {\n display: inline-block;\n }\n }\n }\n}\n</style>\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"selectedElem(field.label, 'name')\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n id=\"calTextArea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n <div class=\"cal_right_bottom\">\n <ul class=\"cal_fu\">\n <li\n v-for=\"(item, index) in calculMethods\"\n @click=\"selectedElem(item, 'symbol')\"\n :key=\"index\"\n >\n {{ item }}\n </li>\n </ul>\n <a-popover\n placement=\"topRight\"\n trigger=\"click\"\n overlayClassName=\"func-popover\">\n <template #content>\n <div class=\"function-wrap\">\n <div class=\"wrap-search\">\n <a-input-search\n v-model:value=\"searchFuncValue\"\n style=\"margin-bottom: 8px\"\n placeholder=\"请输入关键字搜索\"\n />\n </div>\n <div class=\"tree-box\">\n <a-tree\n :expanded-keys=\"expandedKeys\"\n :auto-expand-parent=\"autoExpandParent\"\n :tree-data=\"funcDescsData\"\n @expand=\"onExpand\"\n >\n <template #title=\"{ title, leaf }\">\n <span v-if=\"title.indexOf(searchFuncValue) > -1\">\n {{ title.substr(0, title.indexOf(searchFuncValue)) }}\n <span style=\"color: #f50\">{{ searchFuncValue }}</span>\n {{ title.substr(title.indexOf(searchFuncValue) + searchFuncValue.length) }}\n </span>\n <span v-else>{{ title }}</span>\n <span\n v-if=\"leaf\"\n class=\"insertsty\"\n @click=\"selectedElem(title, 'function')\"\n >插入</span>\n </template>\n </a-tree>\n </div>\n </div>\n </template>\n <span class=\"cal_a\">\n 更多函数\n <double-right-outlined style=\"font-size: 12px;margin: 2px 0 0 2px;color: #1890ff;\"/>\n </span>\n </a-popover>\n </div>\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject, ref, onMounted, watch } from 'vue'\nimport { GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport {\n Row as ARow,\n Col as ACol,\n Textarea as ATextarea,\n Popover as APopover,\n InputSearch as AInputSearch,\n Tree as ATree,\n type TreeProps\n} from 'ant-design-vue'\nimport { DoubleRightOutlined } from '@ant-design/icons-vue'\nconst getParentKey = (\n key: string | number,\n tree: TreeProps['treeData']\n): string | number | undefined => {\n let parentKey\n for (let i = 0; i < tree.length; i++) {\n const node = tree[i]\n if (node.children) {\n if (node.children.some(item => item.key === key)) {\n parentKey = node.key\n } else if (getParentKey(key, node.children)) {\n parentKey = getParentKey(key, node.children)\n }\n }\n }\n return parentKey\n}\n\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n },\n item: {\n type: Object,\n default: () => ({})\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea,\n APopover,\n AInputSearch,\n ATree,\n DoubleRightOutlined\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n // return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n return fieldList?.filter((field) => field.id !== props.item.id) || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const searchFuncValue = ref('')\n const insertText = (str: string) => {\n const obj: any = document.getElementById('calTextArea')\n let tmpStr = myValue.value\n if ((document as any).selection) {\n const sel = (document as any).selection.createRange()\n sel.text = str\n } else if (\n typeof obj.selectionStart === 'number' &&\n typeof obj.selectionEnd === 'number'\n ) {\n const startPos = obj.selectionStart\n const endPos = obj.selectionEnd\n let cursorPos = startPos\n tmpStr =\n tmpStr.substring(0, startPos) +\n str +\n tmpStr.substring(endPos, tmpStr.length)\n cursorPos += str.length\n obj.selectionStart = obj.selectionEnd = cursorPos\n } else {\n tmpStr += str\n }\n myValue.value = tmpStr\n }\n const calculMethods = ['+', '-', '*', '/', '(', ')']\n const selectedElem = (value: string, type: string) => {\n let inputVal = ''\n switch (type) {\n case 'name': {\n // 名称\n inputVal = '${' + value + '}'\n break\n }\n case 'function': {\n // 函数\n inputVal = value + '()'\n break\n }\n default: {\n // 加减符号\n inputVal = value\n }\n }\n insertText(inputVal)\n }\n const dataList: TreeProps['treeData'] = []\n const expandedKeys = ref<(string | number)[]>([])\n const autoExpandParent = ref<boolean>(true)\n const funcDescsData = ref([])\n const setDataList = (data: any) => {\n for (const item of data) {\n if (item?.children?.length) {\n setDataList(item.children)\n } else {\n dataList.push({\n key: item.key,\n title: item.title\n })\n }\n }\n }\n const getFuncDescs = async () => {\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/funcdescs`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.length) {\n setDataList(data)\n funcDescsData.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onExpand = (keys: string[]) => {\n expandedKeys.value = keys\n autoExpandParent.value = false\n }\n watch(searchFuncValue, value => {\n console.log('dataList', dataList)\n\n const expanded = dataList\n .map((item: any) => {\n if (item.title.indexOf(value) > -1) {\n return getParentKey(item.key, funcDescsData.value)\n }\n return null\n })\n .filter((item, i, self) => item && self.indexOf(item) === i)\n expandedKeys.value = expanded\n searchFuncValue.value = value\n autoExpandParent.value = true\n })\n onMounted(() => {\n getFuncDescs()\n })\n return {\n fieldList,\n myValue,\n calculMethods,\n funcDescsData,\n searchFuncValue,\n expandedKeys,\n autoExpandParent,\n selectedElem,\n onExpand\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n // border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n border: 1px solid #d9d9d9;\n border-right: none;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n border-radius: 0;\n}\n.cal_right_bottom {\n height: 26px;\n width: 100%;\n border: 1px solid #d9d9d9;\n border-top: none;\n line-height: 26px;\n .cal_fu {\n padding: 0;\n width: 200px;\n float: left;\n margin: 0;\n li {\n width: 20px;\n float: left;\n text-align: center;\n margin: 0 5px;\n cursor: pointer;\n &:hover {\n background: #eff1f4;\n }\n }\n }\n .cal_a {\n color: #1890ff;\n font-size: 13px;\n cursor: pointer;\n display: flex;\n align-items: center;\n float: right;\n margin-right: 10px;\n height: 13px;\n margin-top: 6px;\n &:hover {\n color: #40a9ff;\n }\n }\n}\n.function-wrap {\n width: 240px;\n height: 200px;\n .wrap-search {\n height: 40px;\n background-color: #ffffff;\n border-bottom: 1px solid #d9d9d9;\n padding: 0 10px;\n }\n .tree-box {\n height: calc(100% - 40px);\n overflow: auto;\n }\n}\n</style>\n<style lang=\"less\">\n.func-popover {\n .ant-popover-inner-content {\n padding: 12px 0;\n }\n .insertsty {\n color: #1890ff;\n margin-left: 6px;\n display: none;\n &:hover {\n color: red;\n }\n }\n .ant-tree-title {\n &:hover {\n .insertsty {\n display: inline-block;\n }\n }\n }\n}\n</style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '55vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\" :rules=\"formRules\" ref=\"formRef\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"label\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n :item=\"item\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInFormula\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChangeBuiltInFormula\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"数值来自\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n :disabled=\"item.label === builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_ALL_VALUE', 'BUILT_IN_ALL_VALUE_IN_GROUPO'].includes(\n formState.builtInFormula || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <div\n class=\"accesstip\"\n v-if=\"[\n 'BUILT_IN_RANK_IN_GROUPO',\n 'BUILT_IN_ALL_VALUE_IN_GROUPO'\n ].includes(formState.builtInFormula) && formState.builtInValueSource\"\n >\n 蓝色字段跟随您后续维度设置的顺序而变化,以获取相应的{{ formState.builtInValueSource }}\n </div>\n <a-textarea\n :value=\"accessLogic\"\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport type { Rule } from 'ant-design-vue/es/form'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const allValueSourceList = computed(() => {\n const values = ['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators']\n let list = []\n for (const item of values) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), item)) {\n list = list.concat(unref(graphicConfig)[item])\n }\n }\n return list\n })\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: '',\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formRef = ref()\n const visible = ref(false)\n const formState = ref()\n watch(\n visible,\n (value: boolean) => {\n if (value) {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = props.item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n } else if (props.mode === 'add') {\n formState.value = cloneDeep(formDefaultValue)\n }\n } else {\n formState.value = cloneDeep(formDefaultValue)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const validateLabel = async (_rule: Rule, value: string) => {\n if (value === '') {\n return Promise.reject(new Error('请输入指标名'))\n } else {\n const source = unref(allValueSourceList).find(v => v.label === value)\n if (source) {\n if (source.id === props.item.id) {\n return Promise.resolve()\n }\n return Promise.reject(new Error('指标名不能重复'))\n }\n return Promise.resolve()\n }\n }\n const formRules = computed(() => {\n let result: any = {\n label: [\n {\n required: true,\n validator: validateLabel,\n trigger: 'change'\n }\n ]\n }\n if (formState.value.calcType === 'BUILT_IN') {\n result = {\n ...result,\n builtInFormula: [\n {\n required: true,\n message: '请选择内置公式'\n }\n ],\n builtInValueSource: [\n {\n required: true,\n message: '请选择数值来自'\n }\n ],\n builtInCalcWay: [\n {\n required: true,\n message: '请选择取数原则'\n }\n ]\n }\n }\n return result\n })\n const onOK = () => {\n formRef.value.validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formRef.value.clearValidate()\n hideModal()\n }\n // 改变计算方式\n const onChangeBuiltInFormula = () => {\n isDataChange = true\n unref(formState).builtInCalcWay = ''\n }\n // 取数逻辑值\n const accessLogic = computed(() => {\n let data = ''\n const principle = unref(formState).builtInCalcWay\n const comefrom = unref(formState).builtInValueSource\n if (!comefrom || !principle) {\n return data\n }\n switch (unref(formState).builtInFormula) {\n case 'BUILT_IN_RANK': {\n // 排名\n if (principle === 'ASC') {\n // 升序\n data = '【' + comefrom + '】' + '由小到大在所有值中的排名'\n } else {\n // 降序\n data = '【' + comefrom + '】' + '由大到小在所有值中的排名'\n }\n break\n }\n case 'BUILT_IN_RANK_IN_GROUPO': {\n // 组内排名\n data = '所有【】的' + '\\n'\n if (principle === 'ASC') {\n // 升序\n data = data + '【' + comefrom + '】' + '由小到大的组内的排名'\n } else {\n // 降序\n data = data + '【' + comefrom + '】' + '由大到小的组内的排名'\n }\n break\n }\n case 'BUILT_IN_ALL_VALUE': {\n // 所有值\n let str = ''\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = '将所有【' + comefrom + '】' + str\n break\n }\n case 'BUILT_IN_ALL_VALUE_IN_GROUPO': {\n let str = ''\n data = '所有【】的' + '\\n'\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = data + '将所有【' + comefrom + '】' + str\n break\n }\n }\n return data\n })\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n formRules,\n accessLogic,\n formRef,\n onChangeBuiltInFormula\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.accesstip{\n color: #3f8ce8;\n}\n</style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '55vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\" :rules=\"formRules\" ref=\"formRef\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"label\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n :item=\"item\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInFormula\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChangeBuiltInFormula\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"数值来自\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n :disabled=\"item.label === builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_ALL_VALUE', 'BUILT_IN_ALL_VALUE_IN_GROUPO'].includes(\n formState.builtInFormula || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <div\n class=\"accesstip\"\n v-if=\"[\n 'BUILT_IN_RANK_IN_GROUPO',\n 'BUILT_IN_ALL_VALUE_IN_GROUPO'\n ].includes(formState.builtInFormula) && formState.builtInValueSource\"\n >\n 蓝色字段跟随您后续维度设置的顺序而变化,以获取相应的{{ formState.builtInValueSource }}\n </div>\n <a-textarea\n :value=\"accessLogic\"\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport type { Rule } from 'ant-design-vue/es/form'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const allValueSourceList = computed(() => {\n const values = ['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators']\n let list = []\n for (const item of values) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), item)) {\n list = list.concat(unref(graphicConfig)[item])\n }\n }\n return list\n })\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: '',\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formRef = ref()\n const visible = ref(false)\n const formState = ref()\n watch(\n visible,\n (value: boolean) => {\n if (value) {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = props.item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n } else if (props.mode === 'add') {\n formState.value = cloneDeep(formDefaultValue)\n }\n } else {\n formState.value = cloneDeep(formDefaultValue)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const validateLabel = async (_rule: Rule, value: string) => {\n if (value === '') {\n return Promise.reject(new Error('请输入指标名'))\n } else {\n const source = unref(allValueSourceList).find(v => v.label === value)\n if (source) {\n if (source.id === props.item.id) {\n return Promise.resolve()\n }\n return Promise.reject(new Error('指标名不能重复'))\n }\n return Promise.resolve()\n }\n }\n const formRules = computed(() => {\n let result: any = {\n label: [\n {\n required: true,\n validator: validateLabel,\n trigger: 'change'\n }\n ]\n }\n if (formState.value.calcType === 'BUILT_IN') {\n result = {\n ...result,\n builtInFormula: [\n {\n required: true,\n message: '请选择内置公式'\n }\n ],\n builtInValueSource: [\n {\n required: true,\n message: '请选择数值来自'\n }\n ],\n builtInCalcWay: [\n {\n required: true,\n message: '请选择取数原则'\n }\n ]\n }\n }\n return result\n })\n const onOK = () => {\n formRef.value.validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formRef.value.clearValidate()\n hideModal()\n }\n // 改变计算方式\n const onChangeBuiltInFormula = () => {\n isDataChange = true\n unref(formState).builtInCalcWay = ''\n }\n // 取数逻辑值\n const accessLogic = computed(() => {\n let data = ''\n const principle = unref(formState).builtInCalcWay\n const comefrom = unref(formState).builtInValueSource\n if (!comefrom || !principle) {\n return data\n }\n switch (unref(formState).builtInFormula) {\n case 'BUILT_IN_RANK': {\n // 排名\n if (principle === 'ASC') {\n // 升序\n data = '【' + comefrom + '】' + '由小到大在所有值中的排名'\n } else {\n // 降序\n data = '【' + comefrom + '】' + '由大到小在所有值中的排名'\n }\n break\n }\n case 'BUILT_IN_RANK_IN_GROUPO': {\n // 组内排名\n data = '所有【】的' + '\\n'\n if (principle === 'ASC') {\n // 升序\n data = data + '【' + comefrom + '】' + '由小到大的组内的排名'\n } else {\n // 降序\n data = data + '【' + comefrom + '】' + '由大到小的组内的排名'\n }\n break\n }\n case 'BUILT_IN_ALL_VALUE': {\n // 所有值\n let str = ''\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = '将所有【' + comefrom + '】' + str\n break\n }\n case 'BUILT_IN_ALL_VALUE_IN_GROUPO': {\n let str = ''\n data = '所有【】的' + '\\n'\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = data + '将所有【' + comefrom + '】' + str\n break\n }\n }\n return data\n })\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n formRules,\n accessLogic,\n formRef,\n onChangeBuiltInFormula\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.accesstip{\n color: #3f8ce8;\n}\n</style>\n","/**\r\n * 字符串1 中是否包含 字符串2 (会全部转成小写)\r\n * @param v1 字符串1\r\n * @param v2 字符串2 | 字符串数组\r\n * @constructor\r\n */\r\nexport const lowerCaseIncludes = (v1: any, v2: any): boolean => {\r\n if (typeof v1 === 'string' && typeof v2 === 'string') {\r\n return v1.toLocaleLowerCase().includes(v2.toLocaleLowerCase())\r\n } else if (typeof v1 === 'string' && Array.isArray(v2)) {\r\n const len = v2.length\r\n for (let i = 0; i < len; i++) {\r\n const s = v2[i]\r\n if (typeof s === 'string' && v1.toLocaleLowerCase().includes(s.toLocaleLowerCase())) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport const handleFormatter = (formatter: string) => {\r\n return formatter.replace(/\\\\n/g, '\\n')\r\n}\r\n\r\nexport const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\r\n","<template>\n <a-card\n v-if=\"type === 'formFields'\"\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n </div>\n </template>\n <div class=\"field-wrap\">\n <div class=\"field-item\">\n <div class=\"item-label\">名称:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.labelField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'labelField')\"\n >\n </a-select>\n </div>\n <div class=\"field-item\">\n <div class=\"item-label\">值:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.valueField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'valueField')\"\n >\n </a-select>\n </div>\n </div>\n </a-card>\n <a-card\n v-else\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div :class=\"type + '-list'\" style=\"height: 100%;padding: 10px;\">\n <draggable\n v-model=\"cardItemList\"\n class=\"chart-column\"\n :id=\"type\"\n group=\"cardItem\"\n item-key=\"index\"\n @add=\"onDragItemAdd\"\n @sort=\"onDragItemSort\"\n @end=\"onDragItemEnd\"\n @start=\"onDragItemStart($event, cardItemList)\"\n >\n <template #item=\"{ element: cardItem, index }\">\n <div class=\"card-item-wrap\">\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\" @visibleChange=\"onVisibleChange($event, cardItem)\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 日期维度的格式化 -->\n <template v-if=\"cardItem.genericType === 'DATE'\">\n <a-sub-menu title=\"日期格式化\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"format in formatList\"\n :key=\"format.value\"\n @click=\"onDateFormatChange(format.value, index)\"\n >\n <span\n :style=\"(cardItem.dateFormat === format.value) ||\n (!cardItem.dateFormat && format.value === 'YYYY-MM') ? 'color: #1890FF;' : ''\">\n {{ format.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name])\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name]\">\n <span style=\"font-weight: bold;\">指标名:</span>\n {{ dataViewMap[cardItem.name] }}\n </span>\n <copy-outlined\n style=\"color: #52C41A;margin-left: 10px;\"\n title=\"点击复制\"\n />\n </div>\n </a-menu-item>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n </template>\n </draggable>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject, onMounted } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider,\n Select as ASelect,\n message\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined,\n CopyOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, SOURCE_TYPE } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nimport Draggable from 'vuedraggable'\nimport { hasOwn } from '@/utils/util'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CopyOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider,\n ASelect,\n Draggable\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' }\n ]\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const idxList = ['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList']\n const dimList = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList']\n const source = inject(SOURCE_TYPE)\n const isAllowAdd = (data: any = {}) => {\n if (unref(source) === 'SQL_VIEW') {\n // 视图不需要判断\n return true\n }\n let result = false\n if (data.scope === 'IDX') {\n if (idxList.includes(props.type)) {\n result = true\n }\n } else if (['DIM', 'BUILT_IN_DIM'].includes(data.scope)) {\n if (dimList.includes(props.type)) {\n result = true\n }\n }\n return result\n }\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n if (!isAllowAdd(data)) {\n return\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n sessionStorage.setItem('indicator-list-item', '')\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (!isAllowAdd(cardItem)) {\n return\n }\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDragItemEnd = () => {\n sessionStorage.setItem('indicator-card-item', '')\n }\n const onDragItemAdd = () => {\n const listItemData = sessionStorage.getItem('indicator-list-item')\n const cardItemData = sessionStorage.getItem('indicator-card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragItemSort = (event: any) => {\n const { newIndex, oldIndex, from, to } = event\n const fromType = from.id\n const toType = to.id\n if (newIndex >= 0 && oldIndex >= 0) {\n if (fromType === toType) {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const currItem = list.splice(oldIndex, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n } else if (props.type === toType) {\n const list = unref(graphicConfig)[toType]?.slice() || []\n if (list?.length) {\n const currItem = list.splice(list.length - 1, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n }\n }\n }\n }\n const onDragItemStart = (event: any, dataViews: { [key: string]: any }[]) => {\n const index = event.oldIndex\n const dataView = dataViews[index]\n if (dataView) {\n sessionStorage.setItem('indicator-card-item', JSON.stringify({\n cardItem: dataView,\n type: props.type,\n index\n }))\n }\n }\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDateFormatChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].dateFormat = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const fieldOptions = ref<any[]>([])\n const fieldData = computed<any>(() => unref(graphicConfig)[props.type] || {})\n const getFieldData = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/dimFields`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n fieldOptions.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onFieldChange = (value: any, type: string) => {\n const formFields = unref(graphicConfig)[props.type] || {}\n formFields[type] = value\n updateGraphicConfig({\n [props.type]: formFields\n })\n }\n const dataViewMap = ref({})\n const onVisibleChange = async (visible: boolean, cardItem: any) => {\n const { name: itemName } = cardItem\n if (visible && hasOwn(cardItem, 'indexCode') && !hasOwn(unref(dataViewMap), itemName)) {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n dataSourceId: '',\n indexGuid: cardItem.id,\n pageId: (window as any)?.config?.pageId\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n dataViewMap.value[itemName] = data.name\n }\n }\n }\n // 复制指标名\n const copyDataViewName = (text: string) => {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.setAttribute('value', text)\n input.select()\n document.execCommand('copy')\n document.body.removeChild(input)\n message.success('复制成功')\n }\n onMounted(() => {\n if (props.type === 'formFields') {\n getFieldData()\n }\n })\n return {\n onCheckboxChange,\n onDropEnd,\n onDragItemEnd,\n onDragItemAdd,\n onDragItemSort,\n onDragItemStart,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n onDateFormatChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode,\n formatList,\n fieldOptions,\n fieldData,\n onFieldChange,\n onVisibleChange,\n copyDataViewName,\n dataViewMap\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n\n.chart-column {\n height: 100%;\n}\n\n.data-view-name {\n display: inline-block;\n max-width: 200px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n\n.field-wrap {\n padding: 10px 0;\n .field-item {\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n .item-label {\n width: 45px;\n font-size: 14px;\n text-align: right;\n }\n }\n}\n</style>\n","<template>\n <a-card\n v-if=\"type === 'formFields'\"\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n </div>\n </template>\n <div class=\"field-wrap\">\n <div class=\"field-item\">\n <div class=\"item-label\">名称:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.labelField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'labelField')\"\n >\n </a-select>\n </div>\n <div class=\"field-item\">\n <div class=\"item-label\">值:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.valueField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'valueField')\"\n >\n </a-select>\n </div>\n </div>\n </a-card>\n <a-card\n v-else\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div :class=\"type + '-list'\" style=\"height: 100%;padding: 10px;\">\n <draggable\n v-model=\"cardItemList\"\n class=\"chart-column\"\n :id=\"type\"\n group=\"cardItem\"\n item-key=\"index\"\n @add=\"onDragItemAdd\"\n @sort=\"onDragItemSort\"\n @end=\"onDragItemEnd\"\n @start=\"onDragItemStart($event, cardItemList)\"\n >\n <template #item=\"{ element: cardItem, index }\">\n <div class=\"card-item-wrap\">\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\" @visibleChange=\"onVisibleChange($event, cardItem)\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 日期维度的格式化 -->\n <template v-if=\"cardItem.genericType === 'DATE'\">\n <a-sub-menu title=\"日期格式化\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"format in formatList\"\n :key=\"format.value\"\n @click=\"onDateFormatChange(format.value, index)\"\n >\n <span\n :style=\"(cardItem.dateFormat === format.value) ||\n (!cardItem.dateFormat && format.value === 'YYYY-MM') ? 'color: #1890FF;' : ''\">\n {{ format.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name])\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name]\">\n <span style=\"font-weight: bold;\">指标名:</span>\n {{ dataViewMap[cardItem.name] }}\n </span>\n <copy-outlined\n style=\"color: #52C41A;margin-left: 10px;\"\n title=\"点击复制\"\n />\n </div>\n </a-menu-item>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n </template>\n </draggable>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject, onMounted } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider,\n Select as ASelect,\n message\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined,\n CopyOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, SOURCE_TYPE } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nimport Draggable from 'vuedraggable'\nimport { hasOwn } from '@/utils/util'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CopyOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider,\n ASelect,\n Draggable\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' }\n ]\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const idxList = ['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList']\n const dimList = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList']\n const source = inject(SOURCE_TYPE)\n const isAllowAdd = (data: any = {}) => {\n if (unref(source) === 'SQL_VIEW') {\n // 视图不需要判断\n return true\n }\n let result = false\n if (data.scope === 'IDX') {\n if (idxList.includes(props.type)) {\n result = true\n }\n } else if (['DIM', 'BUILT_IN_DIM'].includes(data.scope)) {\n if (dimList.includes(props.type)) {\n result = true\n }\n }\n return result\n }\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n if (!isAllowAdd(data)) {\n return\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n sessionStorage.setItem('indicator-list-item', '')\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (!isAllowAdd(cardItem)) {\n return\n }\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDragItemEnd = () => {\n sessionStorage.setItem('indicator-card-item', '')\n }\n const onDragItemAdd = () => {\n const listItemData = sessionStorage.getItem('indicator-list-item')\n const cardItemData = sessionStorage.getItem('indicator-card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragItemSort = (event: any) => {\n const { newIndex, oldIndex, from, to } = event\n const fromType = from.id\n const toType = to.id\n if (newIndex >= 0 && oldIndex >= 0) {\n if (fromType === toType) {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const currItem = list.splice(oldIndex, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n } else if (props.type === toType) {\n const list = unref(graphicConfig)[toType]?.slice() || []\n if (list?.length) {\n const currItem = list.splice(list.length - 1, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n }\n }\n }\n }\n const onDragItemStart = (event: any, dataViews: { [key: string]: any }[]) => {\n const index = event.oldIndex\n const dataView = dataViews[index]\n if (dataView) {\n sessionStorage.setItem('indicator-card-item', JSON.stringify({\n cardItem: dataView,\n type: props.type,\n index\n }))\n }\n }\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDateFormatChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].dateFormat = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const fieldOptions = ref<any[]>([])\n const fieldData = computed<any>(() => unref(graphicConfig)[props.type] || {})\n const getFieldData = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/dimFields`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n fieldOptions.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onFieldChange = (value: any, type: string) => {\n const formFields = unref(graphicConfig)[props.type] || {}\n formFields[type] = value\n updateGraphicConfig({\n [props.type]: formFields\n })\n }\n const dataViewMap = ref({})\n const onVisibleChange = async (visible: boolean, cardItem: any) => {\n const { name: itemName } = cardItem\n if (visible && hasOwn(cardItem, 'indexCode') && !hasOwn(unref(dataViewMap), itemName)) {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n dataSourceId: '',\n indexGuid: cardItem.id,\n pageId: (window as any)?.config?.pageId\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n dataViewMap.value[itemName] = data.name\n }\n }\n }\n // 复制指标名\n const copyDataViewName = (text: string) => {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.setAttribute('value', text)\n input.select()\n document.execCommand('copy')\n document.body.removeChild(input)\n message.success('复制成功')\n }\n onMounted(() => {\n if (props.type === 'formFields') {\n getFieldData()\n }\n })\n return {\n onCheckboxChange,\n onDropEnd,\n onDragItemEnd,\n onDragItemAdd,\n onDragItemSort,\n onDragItemStart,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n onDateFormatChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode,\n formatList,\n fieldOptions,\n fieldData,\n onFieldChange,\n onVisibleChange,\n copyDataViewName,\n dataViewMap\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n\n.chart-column {\n height: 100%;\n}\n\n.data-view-name {\n display: inline-block;\n max-width: 200px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n\n.field-wrap {\n padding: 10px 0;\n .field-item {\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n .item-label {\n width: 45px;\n font-size: 14px;\n text-align: right;\n }\n }\n}\n</style>\n","export const cardTypeMap = {\n classificationList: {\n title: '分类'\n },\n seriesList: {\n title: '系列'\n },\n leftAxisList: {\n title: '左值轴'\n },\n rightAxisList: {\n title: '右值轴'\n },\n indicators: {\n title: '数值'\n },\n queryColumnList: {\n title: '数据'\n },\n rowHeaderList: {\n title: '行表头'\n },\n formFields: {\n title: '字段'\n }\n}\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['classificationList', 'formFields'],\n checkbox: ['classificationList', 'formFields'],\n radio: ['classificationList', 'formFields']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 0;\n height: calc(100% - 58px);\n }\n}\n</style>\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['classificationList', 'formFields'],\n checkbox: ['classificationList', 'formFields'],\n radio: ['classificationList', 'formFields']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 0;\n height: calc(100% - 58px);\n }\n}\n</style>\n","export interface PropsGroup {\r\n title?: string // 标题\r\n enableProps?: string // 是否能使用(禁用)\r\n onlyType?: string | string [],\r\n excludeType?: string | string []\r\n props: string [] // 属性组\r\n}\r\n\r\nexport type PropsGroups = PropsGroup[]\r\n\r\nexport interface DetailPropsGroup {\r\n title?: string\r\n enableProps?: boolean\r\n onlyType?: string | string []\r\n excludeType?: string | string []\r\n // enablePropsName 就是 PropsGroup 的 enableProps\r\n enablePropsName?: string\r\n props: {\r\n [key: string]: any\r\n }\r\n}\r\n\r\nexport type DetailPropsGroups = DetailPropsGroup[]\r\n\r\n// 没有title属性直接展示属性\r\n// 有tilt属性才有折叠面板\r\n// 此属性控制属性配置面板的顺序\r\nexport const propsGroups: PropsGroups = [\r\n {\r\n title: '基本属性',\r\n props: [\r\n 'name',\r\n 'width',\r\n 'height',\r\n 'colors'\r\n ]\r\n },\r\n {\r\n title: '系列',\r\n props: [\r\n 'seriesTypes'\r\n ]\r\n },\r\n {\r\n title: '折线图',\r\n onlyType: ['line', 'comboGraph'],\r\n props: [\r\n 'areaStyleOpacity',\r\n 'smooth',\r\n 'lineStyleWidth',\r\n 'symbolSize'\r\n ]\r\n },\r\n {\r\n title: '柱状图',\r\n onlyType: ['bar', 'comboGraph'],\r\n props: [\r\n 'barWidth',\r\n 'isUseHorizontalAxis',\r\n 'axisInverse',\r\n 'isStack',\r\n 'labelShow'\r\n ]\r\n },\r\n {\r\n title: '饼图',\r\n onlyType: 'pie',\r\n props: [\r\n 'centerTop',\r\n 'centerLeft',\r\n 'innerRadius',\r\n 'outerRadius',\r\n 'roseType',\r\n 'minAngle'\r\n ]\r\n },\r\n {\r\n title: '布局',\r\n props: [\r\n 'gridTop',\r\n 'gridBottom',\r\n 'gridLeft',\r\n 'gridRight',\r\n 'gridContainLabel'\r\n ]\r\n },\r\n {\r\n title: 'x轴',\r\n props: [\r\n 'xAxisLabelColor',\r\n 'xAxisLineStyleColor',\r\n 'xAxisLabelWidth',\r\n 'xAxisLabelOverflow',\r\n 'xAxisLabelRotate',\r\n 'xAxisTickShow',\r\n 'xAxisSplitLineShow',\r\n 'xAxisSplitLineStyleColor',\r\n 'xAxisLabelFormatter',\r\n 'xAxisInverse',\r\n 'xAxisMinInterval',\r\n 'xAxisLabelInterval'\r\n ]\r\n },\r\n {\r\n title: 'y轴',\r\n props: [\r\n 'yAxisLabelColor',\r\n 'yAxisLineStyleColor',\r\n 'yAxisLineAlwaysDisplay',\r\n 'yAxisLabelWidth',\r\n 'yAxisLabelOverflow',\r\n 'yAxisLabelRotate',\r\n 'yAxisSplitLineShow',\r\n 'yAxisSplitLineStyleColor',\r\n 'yAxisLabelFormatter',\r\n 'yAxisInverse',\r\n 'yAxisMinInterval',\r\n 'yAxis'\r\n ]\r\n },\r\n {\r\n title: '标签',\r\n enableProps: 'labelShow',\r\n props: [\r\n 'labelFormatter',\r\n 'labelColor',\r\n 'isUseLabelColors',\r\n 'labelFontSize',\r\n 'labelPosition'\r\n ]\r\n },\r\n {\r\n title: '标签引导线',\r\n enableProps: 'labelLineShow',\r\n props: [\r\n 'labelLineLength',\r\n 'labelLineLength2'\r\n ]\r\n },\r\n {\r\n title: '图例',\r\n enableProps: 'legendShow',\r\n props: [\r\n 'legendTextStyleColor',\r\n 'legendTop',\r\n 'legendLeft',\r\n 'legendOrient'\r\n ]\r\n },\r\n {\r\n title: '提示框',\r\n enableProps: 'tooltipShow',\r\n props: [\r\n 'tooltipTrigger',\r\n 'tooltipFormatter',\r\n 'tooltipTextStyleColor'\r\n ]\r\n },\r\n {\r\n title: '工具栏',\r\n enableProps: 'toolboxShow',\r\n props: [\r\n 'toolboxOrient',\r\n 'toolboxItemSize',\r\n 'toolboxItemGap',\r\n 'toolboxLeft',\r\n 'toolboxTop',\r\n // 'toolboxLocation',\r\n // 'toolboxDownloadShow',\r\n 'toolboxDataZoomShow',\r\n 'toolboxInfoShow'\r\n // 'toolboxDownloadUrl',\r\n // 'toolboxInfoText'\r\n ]\r\n }\r\n]\r\n","export interface PropToAttributeConfig {\n label: string // 标题\n component: string // 需要转化的组件,如 width 由 numberInput 控制\n style?: string // 组件样式\n valueProp?: any // 值的属性字段\n value?: string // 值\n changeValueEventName?: string // 改变值的事件\n options?: { value: any; label?: any }[] // 子组件option\n updateMode?: 'page' | 'component' // 修改页面、组件页面供属性\n props?: { [key: string]: any } // 组件的 v-bind\n events?: { [key: string]: (e: any) => void } // 组件的 v-on\n onlyType?: string | string[] // 限定数组类型 onlyType\n excludeType?: string | string[]\n layout?: 'horizontal' | 'vertical'\n}\n\ntype PropToAttributeConfigList = PropToAttributeConfig[]\n\n// 属性转换配置(表单)\nexport type PropsToAttributeConfig = {\n [key: string]: PropToAttributeConfig | PropToAttributeConfigList\n}\n\n// 属性转表单的字典映射\nexport const mapAttributeProps: PropsToAttributeConfig = {\n name: {\n label: '控件别名',\n component: 'input'\n },\n title: {\n label: '标题',\n component: 'input'\n },\n width: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n height: {\n label: '高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 10\n }\n },\n colors: {\n label: '颜色',\n component: 'color-group-pick'\n },\n centerLeft: {\n label: '水平位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n centerTop: {\n label: '垂直位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n innerRadius: {\n label: '内半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n outerRadius: {\n label: '外半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n tooltipTrigger: {\n label: '触发条件',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '图形',\n value: 'item'\n },\n {\n label: '坐标轴',\n value: 'axis'\n },\n {\n label: '无',\n value: 'none'\n }\n ]\n }\n },\n tooltipTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n tooltipFormatter: {\n label: '格式化',\n component: 'textarea'\n },\n legendTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n legendTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'middle'\n },\n {\n label: '下',\n value: 'bottom'\n }\n ]\n }\n },\n legendLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '左',\n value: 'left'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '右',\n value: 'right'\n }\n ]\n }\n },\n legendOrient: {\n label: '布局',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '垂直',\n value: 'vertical'\n },\n {\n label: '水平',\n value: 'horizontal'\n }\n ]\n }\n },\n labelFormatter: {\n label: '格式化',\n component: 'input'\n },\n labelColor: {\n label: '标签颜色',\n component: 'color-pick'\n },\n isUseLabelColors: {\n label: '系列色',\n component: 'switch'\n },\n labelFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 12,\n suffix: 'px'\n }\n },\n labelPosition: [\n {\n label: '位置',\n component: 'radio-group',\n onlyType: 'pie',\n props: {\n options: [\n {\n label: '外侧',\n value: 'outside'\n },\n {\n label: '内侧',\n value: 'inside'\n },\n {\n label: '中心',\n value: 'center'\n }\n ]\n }\n },\n {\n label: '位置',\n component: 'select',\n onlyType: 'bar',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'inside'\n },\n {\n label: '下',\n value: 'bottom'\n },\n {\n label: '右',\n value: 'right'\n },\n {\n label: '左',\n value: 'left'\n }\n ]\n }\n }\n ],\n labelLineLength: {\n label: '第一段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n labelLineLength2: {\n label: '第二段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n symbolSize: {\n label: '标记点尺寸',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n smooth: {\n label: '线条光滑',\n component: 'switch'\n },\n lineStyleWidth: {\n label: '线条宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n xAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n xAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n xAxisLineStyleColor: {\n label: '横边颜色',\n component: 'color-pick'\n },\n xAxisTickShow: {\n label: '显示刻度',\n component: 'switch'\n },\n xAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n yAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n yAxisLineAlwaysDisplay: {\n label: '显示竖边',\n component: 'switch'\n },\n yAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n yAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n yAxisLineStyleColor: {\n label: '竖边颜色',\n component: 'color-pick'\n },\n yAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n roseType: {\n label: '玫瑰图',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '不展示',\n value: ''\n },\n {\n label: '圆心角',\n value: 'area'\n },\n {\n label: '半径',\n value: 'radius'\n }\n ]\n }\n },\n yAxis: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n max: 2,\n format: [\n {\n label: ['左轴', '右轴'],\n type: 'input',\n value: 'axisLabelFormatter',\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n }\n ]\n }\n },\n seriesTypes: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n format: [\n {\n label: '系列',\n type: 'select',\n value: 'type',\n useLabelIndex: true,\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n },\n {\n label: '对应轴',\n type: 'select',\n value: 'axisIndex',\n props: {\n options: [\n {\n label: '左轴',\n value: 0\n },\n {\n label: '右轴',\n value: 1\n }\n ]\n }\n },\n {\n label: '提示框格式化',\n type: 'input',\n value: 'tooltipFormatter'\n }\n ]\n }\n },\n barWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0\n }\n },\n gridTop: {\n label: '上侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridBottom: {\n label: '下侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridLeft: {\n label: '左侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridRight: {\n label: '右侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridContainLabel: {\n label: '包含刻度标签',\n component: 'switch'\n },\n toolboxOrient: {\n label: '排版',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '水平',\n value: 'horizontal'\n },\n {\n label: '垂直',\n value: 'vertical'\n }\n ]\n }\n },\n toolboxItemSize: {\n label: '图标大小',\n component: 'input-number'\n },\n toolboxItemGap: {\n label: '图标间距',\n component: 'input-number'\n },\n toolboxLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '居左',\n value: 'left'\n },\n {\n label: '居中',\n value: 'center'\n },\n {\n label: '居右',\n value: 'right'\n }\n ]\n }\n },\n toolboxTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '顶部',\n value: 'top'\n },\n {\n label: '居中',\n value: 'middle'\n },\n {\n label: '底部',\n value: 'bottom'\n }\n ]\n }\n },\n toolboxDownloadUrl: {\n label: '下载文件地址',\n component: 'input'\n },\n toolboxInfoText: {\n label: '说明信息内容',\n component: 'input'\n },\n isUseHorizontalAxis: {\n label: '横向排列',\n component: 'switch'\n },\n axisInverse: {\n label: '倒叙排列',\n component: 'switch'\n },\n xAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n yAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n areaStyleOpacity: {\n label: '面积透明度',\n component: 'input-number',\n props: {\n step: 0.1,\n min: 0,\n max: 1\n }\n },\n xAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n xAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n yAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n yAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n isStack: {\n label: '是否堆叠',\n component: 'switch'\n },\n labelShow: {\n label: '展示标签',\n component: 'switch'\n },\n xAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n minAngle: {\n label: '最小角度',\n component: 'input-number',\n props: {\n min: 0,\n max: 360\n }\n },\n xAxisLabelInterval: {\n label: '标签间隔',\n component: 'input-number',\n props: {\n min: -1\n }\n },\n toolboxLocation: {\n label: '快速定位',\n component: 'switch'\n },\n toolboxDownloadShow: {\n label: '使用数据下载',\n component: 'switch'\n },\n toolboxDataZoomShow: {\n label: '使用放大',\n component: 'switch'\n },\n toolboxInfoShow: {\n label: '指标信息',\n component: 'switch'\n }\n}\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-radio-group\n :value=\"value\"\n :optionType=\"optionType\"\n @change=\"onRadioChange\"\n >\n <a-radio-button\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-radio-button>\n </a-radio-group>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { RadioGroup as ARadioGroup, RadioButton as ARadioButton } from 'ant-design-vue'\nexport default defineComponent({\n name: 'RadioGroup',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array,\n default: () => []\n },\n optionType: {\n type: String,\n default: 'default'\n },\n size: {\n type: String,\n default: 'default'\n }\n },\n components: {\n ARadioGroup,\n ARadioButton\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onRadioChange = (e) => {\n emit('change', e.target.value)\n }\n return {\n onRadioChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div :style=\"{ width: `${width}px` }\">\n <a-switch :disabled=\"disabled\" :checked=\"value\" @change=\"onSwitchChange\"/>\n </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { Switch as ASwitch } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Switch',\n props: {\n value: {\n type: Boolean,\n default: false\n },\n width: {\n type: [String, Number],\n default: 150\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ASwitch\n },\n emit: ['change'],\n setup (props, { emit }) {\n const onSwitchChange = (value) => {\n emit('change', value)\n }\n return {\n onSwitchChange\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import{defineComponent as e,computed as t,openBlock as r,createElementBlock as n,normalizeStyle as o,withModifiers as a,createElementVNode as i,pushScopeId as l,popScopeId as c,ref as u,onMounted as s,watch as f,toDisplayString as d,withKeys as p,inject as h,unref as v,resolveComponent as m,Fragment as g,renderList as y,createBlock as b,createVNode as w,createCommentVNode as x,nextTick as S,onBeforeUnmount as k,provide as C,onUnmounted as O,toRaw as I,Teleport as A,Transition as P,withCtx as j}from\"vue\";import{createPopper as _}from\"@popperjs/core\";function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e,t){if(e){if(\"string\"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}function F(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function L(e){return L=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},L(e)}function z(e,t,r,n,o,a,i){try{var l=e[a](i),c=l.value}catch(e){return void r(e)}l.done?t(c):Promise.resolve(c).then(n,o)}function M(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){z(a,n,o,i,l,\"next\",e)}function l(e){z(a,n,o,i,l,\"throw\",e)}i(void 0)}))}}var R={exports:{}},B={exports:{}};!function(e){function t(r){return e.exports=t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}(B),function(e){var t=B.exports.default;function r(){e.exports=r=function(){return o},e.exports.__esModule=!0,e.exports.default=e.exports;var n,o={},a=Object.prototype,i=a.hasOwnProperty,l=Object.defineProperty||function(e,t,r){e[t]=r.value},c=\"function\"==typeof Symbol?Symbol:{},u=c.iterator||\"@@iterator\",s=c.asyncIterator||\"@@asyncIterator\",f=c.toStringTag||\"@@toStringTag\";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},\"\")}catch(n){d=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,a=Object.create(o.prototype),i=new F(n||[]);return l(a,\"_invoke\",{value:j(e,r,i)}),a}function h(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}o.wrap=p;var v=\"suspendedStart\",m=\"suspendedYield\",g=\"executing\",y=\"completed\",b={};function w(){}function x(){}function S(){}var k={};d(k,u,(function(){return this}));var C=Object.getPrototypeOf,O=C&&C(C(L([])));O&&O!==a&&i.call(O,u)&&(k=O);var I=S.prototype=w.prototype=Object.create(k);function A(e){[\"next\",\"throw\",\"return\"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,r){function n(o,a,l,c){var u=h(e[o],e,a);if(\"throw\"!==u.type){var s=u.arg,f=s.value;return f&&\"object\"==t(f)&&i.call(f,\"__await\")?r.resolve(f.__await).then((function(e){n(\"next\",e,l,c)}),(function(e){n(\"throw\",e,l,c)})):r.resolve(f).then((function(e){s.value=e,l(s)}),(function(e){return n(\"throw\",e,l,c)}))}c(u.arg)}var o;l(this,\"_invoke\",{value:function(e,t){function a(){return new r((function(r,o){n(e,t,r,o)}))}return o=o?o.then(a,a):a()}})}function j(e,t,r){var o=v;return function(a,i){if(o===g)throw new Error(\"Generator is already running\");if(o===y){if(\"throw\"===a)throw i;return{value:n,done:!0}}for(r.method=a,r.arg=i;;){var l=r.delegate;if(l){var c=_(l,r);if(c){if(c===b)continue;return c}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(o===v)throw o=y,r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);o=g;var u=h(e,t,r);if(\"normal\"===u.type){if(o=r.done?y:m,u.arg===b)continue;return{value:u.arg,done:r.done}}\"throw\"===u.type&&(o=y,r.method=\"throw\",r.arg=u.arg)}}}function _(e,t){var r=t.method,o=e.iterator[r];if(o===n)return t.delegate=null,\"throw\"===r&&e.iterator.return&&(t.method=\"return\",t.arg=n,_(e,t),\"throw\"===t.method)||\"return\"!==r&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+r+\"' method\")),b;var a=h(o,e.iterator,t.arg);if(\"throw\"===a.type)return t.method=\"throw\",t.arg=a.arg,t.delegate=null,b;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,b):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,b)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(N,this),this.reset(!0)}function L(e){if(e||\"\"===e){var r=e[u];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function t(){for(;++o<e.length;)if(i.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=n,t.done=!0,t};return a.next=a}}throw new TypeError(t(e)+\" is not iterable\")}return x.prototype=S,l(I,\"constructor\",{value:S,configurable:!0}),l(S,\"constructor\",{value:x,configurable:!0}),x.displayName=d(S,f,\"GeneratorFunction\"),o.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===x||\"GeneratorFunction\"===(t.displayName||t.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,d(e,f,\"GeneratorFunction\")),e.prototype=Object.create(I),e},o.awrap=function(e){return{__await:e}},A(P.prototype),d(P.prototype,s,(function(){return this})),o.AsyncIterator=P,o.async=function(e,t,r,n,a){void 0===a&&(a=Promise);var i=new P(p(e,t,r,n),a);return o.isGeneratorFunction(t)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},A(I),d(I,f,\"Generator\"),d(I,u,(function(){return this})),d(I,\"toString\",(function(){return\"[object Generator]\"})),o.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},o.values=L,F.prototype={constructor:F,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=n,this.tryEntries.forEach(E),!e)for(var t in this)\"t\"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return l.type=\"throw\",l.arg=e,t.next=r,o&&(t.method=\"next\",t.arg=n),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],l=a.completion;if(\"root\"===a.tryLoc)return r(\"end\");if(a.tryLoc<=this.prev){var c=i.call(a,\"catchLoc\"),u=i.call(a,\"finallyLoc\");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error(\"try statement without catch or finally\");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,\"finallyLoc\")&&this.prev<n.finallyLoc){var o=n;break}}o&&(\"break\"===e||\"continue\"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method=\"next\",this.next=o.finallyLoc,b):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),b},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),E(r),b}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;E(r)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:L(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=n),b}},o}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports}(R);var D=R.exports(),T=D;try{regeneratorRuntime=D}catch(e){\"object\"==typeof globalThis?globalThis.regeneratorRuntime=D:Function(\"r\",\"regeneratorRuntime = r\")(D)}function H(e){var t=function(e,t){if(\"object\"!==L(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!==L(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===L(t)?t:String(t)}function G(e,t,r){return(t=H(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var $=e({name:\"Saturation\",props:{size:{type:Number,default:160},hue:{type:Number,default:0},saturation:{type:Number,default:0},value:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),background:\"hsl(\".concat(e.hue,\", 100%, 50%)\")}}));return{saturationStyle:o,sliderStyle:t((function(){return{top:\"\".concat((100-e.value)/100*e.size-5,\"px\"),left:\"\".concat(e.saturation*e.size/100-5,\"px\"),width:\"\".concat(10,\"px\"),height:\"\".concat(10,\"px\")}})),onSelect:function(t){var r=t.target.getBoundingClientRect(),o=r.left,a=r.top,i=function(t){var r=t.clientX,i=t.clientY,l=r-o,c=i-a;l<0&&(l=0),c<0&&(c=0),l>e.size&&(l=e.size),c>e.size&&(c=e.size);var u=l/e.size*100,s=100-c/e.size*100;n(\"change\",u,s)};i(t),document.addEventListener(\"mousemove\",i),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",i),document.removeEventListener(\"mouseup\",e)}))}}}}),V=function(e){return l(\"data-v-24517fec\"),e=e(),c(),e},Y=V((function(){return i(\"div\",{class:\"saturation-white\"},null,-1)})),J=V((function(){return i(\"div\",{class:\"saturation-black\"},null,-1)}));function W(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&\"undefined\"!=typeof document){var n=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",\"top\"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}W(\".saturation[data-v-24517fec]{position:relative}.saturation-black[data-v-24517fec],.saturation-white[data-v-24517fec]{cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%}.saturation-white[data-v-24517fec]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-24517fec]{background:linear-gradient(0deg,#000,transparent)}.slider[data-v-24517fec]{border:1px solid #fff;border-radius:50%;box-shadow:0 0 1px 1px rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;top:0;z-index:1}\"),$.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"saturation\",style:o(e.saturationStyle),onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[Y,J,i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],36)},$.__scopeId=\"data-v-24517fec\",$.__file=\"src/picker/Saturation.vue\";var X=e({name:\"Hue\",props:{width:{type:Number,default:15},height:{type:Number,default:160},hue:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat((1-e.hue/360)*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u();s((function(){!function(){a.value.width=e.width,a.value.height=e.height;var t=a.value.getContext(\"2d\"),r=t.createLinearGradient(0,0,0,e.height);r.addColorStop(0,\"#FF0000\"),r.addColorStop(.17,\"#FF00FF\"),r.addColorStop(.34,\"#0000FF\"),r.addColorStop(.51,\"#00FFFF\"),r.addColorStop(.68,\"#00FF00\"),r.addColorStop(.17*5,\"#FFFF00\"),r.addColorStop(1,\"#FF0000\"),t.fillStyle=r,t.fillRect(0,0,e.width,e.height)}()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=-100*o/e.height+100;n(\"change\",360*a/100)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),q={ref:\"canvas\"};W(\".hue[data-v-78b9f4f0]{position:relative}.slider[data-v-78b9f4f0]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),X.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"hue\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",q,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},X.__scopeId=\"data-v-78b9f4f0\",X.__file=\"src/picker/Hue.vue\";var U=e({name:\"Alpha\",props:{width:{type:Number,default:15},height:{type:Number,default:160},color:{type:String,default:\"#000000\"},alpha:{type:Number,default:1}},setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat(e.alpha*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u(),i=function(){var t=a.value.getContext(\"2d\");a.value.width=e.width,a.value.height=e.height;var r=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(r,\"repeat\"),t.fillRect(0,0,e.width,e.height);var n=t.createLinearGradient(0,0,0,e.height);n.addColorStop(.01,\"rgba(255,255,255,0)\"),n.addColorStop(.99,e.color),t.fillStyle=n,t.fillRect(0,0,e.width,e.height)};f((function(){return e.color}),(function(){i()})),s((function(){i()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=parseFloat((o/e.height).toFixed(2));n(\"change\",a)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),K={ref:\"canvas\"};W(\".alpha[data-v-24dc9656]{position:relative}.slider[data-v-24dc9656]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),U.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"alpha\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",K,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},U.__scopeId=\"data-v-24dc9656\",U.__file=\"src/picker/Alpha.vue\";var Q=e({name:\"Input\",props:{label:{type:String,default:\"RGBA\"},value:{type:String,default:\"\"},width:{type:Number,default:168}},emits:[\"change\",\"focus\",\"blur\",\"enter\"],setup:function(e,r){var n=r.emit;return{onInput:function(e){var t;n(\"change\",null===(t=e.target)||void 0===t?void 0:t.value)},valueStyle:t((function(){return{minWidth:\"\".concat(e.width,\"px\"),maxWidth:\"\".concat(e.width,\"px\"),width:\"\".concat(e.width,\"px\")}})),onFocus:function(){n(\"focus\")},onBlur:function(){n(\"blur\")},onEnter:function(){n(\"enter\")}}}}),Z={class:\"input\"},ee={class:\"label\"},te=[\".value\"];function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,o,a,i,l=[],c=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||E(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function oe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".input[data-v-d52a4d02]{display:inline-block;font-size:12px}.label[data-v-d52a4d02]{align-items:center;background:#e7e8e9;color:#999;display:flex;float:left;font-weight:500;height:30px;justify-content:center;width:45px}[pick-colors-theme=dark] .label[data-v-d52a4d02]{background:#252930;color:#999}.value[data-v-d52a4d02]{background:#eceef0;border:1px solid #eceef0;box-sizing:border-box;color:#666;flex:1;height:30px;text-align:center}[pick-colors-theme=dark] .value[data-v-d52a4d02]{background:#2e333a;border:1px solid #2e333a;color:#fff}.value[data-v-d52a4d02]:focus{border:1px solid #1890ff;outline:none}\"),Q.render=function(e,t,a,l,c,u){return r(),n(\"div\",Z,[i(\"span\",ee,d(e.label),1),i(\"input\",{class:\"value\",style:o(e.valueStyle),\".value\":e.value,onFocus:t[0]||(t[0]=function(){return e.onFocus&&e.onFocus.apply(e,arguments)}),onInput:t[1]||(t[1]=function(){return e.onInput&&e.onInput.apply(e,arguments)}),onBlur:t[2]||(t[2]=function(){return e.onBlur&&e.onBlur.apply(e,arguments)}),onKeydown:t[3]||(t[3]=p((function(){return e.onEnter&&e.onEnter.apply(e,arguments)}),[\"enter\"]))},null,44,te)])},Q.__scopeId=\"data-v-d52a4d02\",Q.__file=\"src/picker/InputValue.vue\";var ae=function(e,t,r){return[e,t*r/((e=(2-t)*r)<1?e:2-e)||0,e/2]},ie={10:\"A\",11:\"B\",12:\"C\",13:\"D\",14:\"E\",15:\"F\"},le=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),r=e%16;return\"\".concat(ie[t]||t).concat(ie[r]||r)},ce=function(e){var t=e.r,r=e.g,n=e.b;return isNaN(t)||isNaN(r)||isNaN(n)?\"\":\"#\".concat(le(t)).concat(le(r)).concat(le(n))},ue=function(e,t){var r;\"string\"==typeof(r=e)&&-1!==r.indexOf(\".\")&&1===parseFloat(r)&&(e=\"100%\");var n=function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"%\")}(e);return e=Math.min(t,Math.max(0,parseFloat(\"\".concat(e)))),n&&(e=parseInt(\"\".concat(e*t),10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},se=function(e,t,r){e=6*ue(e,360),t=ue(t,100),r=ue(r,100);var n=Math.floor(e),o=e-n,a=r*(1-t),i=r*(1-o*t),l=r*(1-(1-o)*t),c=n%6,u=[r,i,a,a,l,r][c],s=[l,r,r,i,a,a][c],f=[a,a,l,r,r,i][c];return{r:Math.round(255*u),g:Math.round(255*s),b:Math.round(255*f)}},fe=function(e,t,r){var n=e.h,o=e.s,a=e.v,i=e.a;if(r)switch(t){case\"hsl\":var l=ae(n,o/100,a/100);return\"hsla(\".concat(n.toFixed(0),\", \").concat(Math.round(100*l[1]),\"%, \").concat(Math.round(100*l[2]),\"%, \").concat(i,\")\");case\"hsv\":return\"hsva(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%, \").concat(i,\")\");case\"rgb\":var c=se(n,o,a),u=c.r,s=c.g,f=c.b;return\"rgba(\".concat(u,\", \").concat(s,\", \").concat(f,\", \").concat(i,\")\");default:return\"\".concat(ce(se(n,o,a))).concat(le(255*i))}else switch(t){case\"hsl\":var d=ae(n,o/100,a/100);return\"hsl(\".concat(n.toFixed(0),\", \").concat(Math.round(100*d[1]),\"%, \").concat(Math.round(100*d[2]),\"%)\");case\"hsv\":return\"hsv(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%)\");case\"rgb\":var p=se(n,o,a),h=p.r,v=p.g,m=p.b;return\"rgb(\".concat(h,\", \").concat(v,\", \").concat(m,\")\");default:return ce(se(n,o,a))}},de=function(e){var t=e.r,r=e.g,n=e.b;t=ue(t,255),r=ue(r,255),n=ue(n,255);var o,a=Math.max(t,r,n),i=Math.min(t,r,n),l=a,c=a-i,u=0===a?0:c/a;if(a===i)o=0;else{switch(a){case t:o=(r-n)/c+(r<n?6:0);break;case r:o=(n-t)/c+2;break;case n:o=(t-r)/c+4}o/=6}return{h:360*o,s:100*u,v:100*l}},pe=function(e){var t=e.h,r=e.s,n=e.l;n/=100;var o=r/=100,a=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,o*=a<=1?a:2-a,{h:+t,s:100*(0===n?2*o/(a+o):2*r/(n+r)),v:100*((n+r)/2)}},he=function(e){var t=[];if(e.match(/^#([0-9a-fA-f]{3,4})$/g))for(var r=1;r<e.length;r++)t.push(parseInt(\"0x\"+e[r].repeat(2)));else if(e.match(/^#([0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/g))for(var n=1;n<e.length;n+=2)t.push(parseInt(\"0x\"+e.slice(n,n+2)));return{r:t[0],g:t[1],b:t[2],a:t[3]}},ve=function(e,t,r){if(\"string\"==typeof e&&\"\"!==e){var n=be(e,we(e),r),o=xe(n);return fe(o,t,r)}return\"\"},me=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4);return{r:t[0],g:t[1],b:t[2],a:t[3]}},ge=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:r,s:parseFloat(n),l:parseFloat(o),a:a}},ye=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:parseFloat(r),s:parseFloat(n),v:parseFloat(o),a:parseFloat(a)}},be=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])switch(t){case\"rgb\":var r=me(e),n=r.r,o=r.g,a=r.b,i=r.a;return oe(oe({},de({r:n,g:o,b:a})),{},{a:+i});case\"hsv\":var l=ye(e);return{h:l.h,s:l.s,v:l.v,a:l.a};case\"hsl\":var c=ge(e),u=c.h,s=c.s,f=c.l,d=c.a;return oe(oe({},pe({h:u,s:s,l:f})),{},{a:+d});default:var p=he(e),h=p.r,v=p.g,m=p.b,g=p.a;return oe(oe({},de({r:h,g:v,b:m})),{},{a:g/255})}else{switch(t){case\"rgb\":return oe(oe({},de(me(e))),{},{a:1});case\"hsv\":var y=ye(e);return{h:y.h,s:y.s,v:y.v,a:1};case\"hsl\":return oe(oe({},pe(ge(e))),{},{a:1});default:return oe(oe({},de(he(e))),{},{a:1})}}},we=function(e){return e.match(/^#/)?\"hex\":e.match(/^rgb/)?\"rgb\":e.match(/^hsl/)?\"hsl\":e.match(/^hsv/)?\"hsv\":\"hex\"},xe=function(e){var t=e.h,r=e.s,n=e.v,o=e.a;return isNaN(t)&&(t=0),isNaN(r)&&(r=0),isNaN(n)&&(n=0),isNaN(o)&&(o=1),{h:t,s:r,v:n,a:o}},Se=e({name:\"ColorItem\",props:{size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},value:{type:String,default:\"\"},border:{type:Boolean,default:!0},borderRadius:{type:Number,default:5},selected:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1}},emits:[\"select\"],setup:function(e){var r=u(),n=h(\"theme\",{theme:\"light\"}).theme,o=t((function(){return parseFloat((e.width||e.size)+\"\")})),a=t((function(){return parseFloat((e.height||e.size)+\"\")})),i=t((function(){return{width:\"\".concat(v(o),\"px\"),height:\"\".concat(v(a),\"px\"),border:e.border?\"1px solid \".concat(\"dark\"===v(n)?\"#434345\":\"#d9d9d9\"):\"\",borderRadius:\"\".concat(e.borderRadius,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(n)?\"#2681ff\":\"#1890ff\"):\"\"}})),l=function(){var t=r.value.getContext(\"2d\");r.value.width=v(o),r.value.height=v(a);var n=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(n,\"repeat\"),t.fillRect(0,0,v(o),v(a)),t.fillStyle=e.value,t.fillRect(0,0,v(o),v(a))};return f((function(){return e.value}),(function(){l()})),s((function(){l()})),{canvas:r,colorItemStyle:i}}}),ke=[\"draggable\"];W(\".color-item[data-v-02da71fd]{display:inline-block;vertical-align:top}\"),Se.render=function(e,t,a,i,l,c){return r(),n(\"canvas\",{class:\"color-item\",style:o(e.colorItemStyle),ref:\"canvas\",draggable:e.draggable},null,12,ke)},Se.__scopeId=\"data-v-02da71fd\",Se.__file=\"src/color-item/ColorItem.vue\";var Ce=e({name:\"Colors\",components:{ColorItem:Se},props:{colors:{type:Array,default:function(){return[]}},selectedIndex:{type:Number,default:-1}},emits:[\"change\"],setup:function(e,r){var n=r.emit;return{onSelectColor:function(e,t){n(\"change\",e,t)},useColors:t((function(){return e.colors.map((function(e){return ve(e,\"hex\",!0)}))}))}}}),Oe={class:\"colors\"};function Ie(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ie(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ie(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".colors[data-v-0f8b52a8]{align-items:center;display:flex;flex-wrap:wrap;margin-top:5px}.color-item[data-v-0f8b52a8]{margin:5px}\"),Ce.render=function(e,t,o,i,l,c){var u=m(\"color-item\");return r(),n(\"div\",Oe,[(r(!0),n(g,null,y(e.useColors,(function(t,n){return r(),b(u,{key:n,class:\"color-item\",size:16,value:t,border:!1,\"border-radius\":3,selected:e.selectedIndex===n,onClick:a((function(r){return e.onSelectColor(t,+n)}),[\"stop\",\"prevent\"])},null,8,[\"value\",\"selected\",\"onClick\"])})),128))])},Ce.__scopeId=\"data-v-0f8b52a8\",Ce.__file=\"src/picker/Colors.vue\";var Pe=e({name:\"Picker\",components:{Colors:Ce,Saturation:$,Hue:X,Alpha:U,InputValue:Q},props:{format:{type:String,default:\"hex\"},showAlpha:{type:Boolean,default:!1},value:{type:String,default:\"\"},colors:{type:Array,default:function(){return[]}},style:{type:Object,default:function(){return{}}}},emits:[\"change\",\"update:value\"],setup:function(e,r){var n=r.emit,o=t((function(){return Ae(Ae({},e.style),{},{width:e.showAlpha?\"230px\":\"205px\"})})),a=t((function(){return e.showAlpha?165:140})),i=u(),l=u(),c=u(),s=function(){var t,r=null===(t=e.value)||void 0===t?void 0:t.trim();if(null!=r&&\"\"!==r){var n=we(r);return xe(be(r,n,e.showAlpha))}return null};f((function(){return e.value}),(function(){e.value!==v(c)&&(i.value=s())}),{immediate:!0}),f(i,(function(t,r){var o=\"\";null!=t?(o=fe(Ae({},t),e.format,e.showAlpha),l.value=Ae({},t)):l.value=null,c.value=o;var a=s();JSON.stringify(t)!==JSON.stringify(a)&&JSON.stringify(t)!==JSON.stringify(r)&&n(\"change\",o)}),{immediate:!0});var d=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.h)||0})),p=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.s)||0})),h=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.v)||0})),m=t((function(){var e,t;return null!=(null===(e=v(i))||void 0===e?void 0:e.a)?null===(t=v(i))||void 0===t?void 0:t.a:1})),g=t((function(){return se(v(d),v(p),v(h))})),y=t((function(){return\"rgb(\".concat(v(g).r,\", \").concat(v(g).g,\", \").concat(v(g).b,\")\")})),b=t((function(){var t=e.format;if(e.showAlpha)switch(t){case\"hsv\":return\"HSVA\";case\"hsl\":return\"HSLA\";case\"rgb\":return\"RGBA\";default:return\"HEX\"}else switch(t){case\"hsv\":return\"HSV\";case\"hsl\":return\"HSL\";case\"rgb\":return\"RGB\";default:return\"HEX\"}})),w=u(-1),x=function(e,t,r){if(0!==e.length){var n=be(e,t,r),o=n.h,a=n.s,l=n.v;if(!(isNaN(o)||isNaN(a)||isNaN(l))){var c=1,u=n.a;isNaN(u)||(c=u),i.value={h:o,s:a,v:l,a:c}}}};return{h:d,s:p,v:h,a:m,rgbStr:y,onSelectSaturation:function(e,t){w.value=-1,null==v(i)?i.value={h:v(d),s:e,v:t,a:v(m)}:i.value=Ae(Ae({},v(i)),{},{s:e,v:t})},onSelectHue:function(e){w.value=-1,null==v(i)&&(i.value={h:e,s:v(p),v:v(h),a:v(m)}),i.value=Ae(Ae({},v(i)),{},{h:e})},onSelectAlpha:function(e){w.value=-1,null==v(i)?i.value={h:v(d),s:v(p),v:v(h),a:e}:i.value=Ae(Ae({},v(i)),{},{a:e})},label:b,colorValue:c,pickerStyle:o,inputWidth:a,onInputChange:function(e){w.value=-1,c.value=e},handleChange:function(){var t,r=null===(t=v(c))||void 0===t?void 0:t.trim();if(\"\"!==r){var n=e.showAlpha,o=e.format,a=function(e,t,r){if(r)switch(t){case\"rgb\":return/^[rR][gG][Bb][Aa][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{4}|[0-9a-fA-F]{8})$/g.test(e)}else switch(t){case\"rgb\":return/^[rR][gG][Bb][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){2}[\\s]*(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{3}|[0-9a-fA-F]{6})$/g.test(e)}}(r,o,n);a?x(r,o,n):null!=v(l)?i.value=v(l):c.value=\"\"}else i.value=null},selectColorIndex:w,onSelectColor:function(e,t){if(w.value=t,\"\"===(e=e.trim()))i.value=null;else{var r=we(e);r?x(e,r,!0):i.value=null}}}}}),je={class:\"picker-inner\"},_e={class:\"picker-header\"};W(\".picker[data-v-6ceadec6]{background:#f7f8f9;border-radius:4px;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-inner[data-v-6ceadec6]{padding:10px}[pick-colors-theme=dark] .picker-inner[data-v-6ceadec6]{background:#1d2024;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-header[data-v-6ceadec6]{display:flex;margin-bottom:5px}.alpha[data-v-6ceadec6],.hue[data-v-6ceadec6]{margin-left:10px}.colors[data-v-6ceadec6]{margin-top:5px}\"),Pe.render=function(e,t,a,l,c,u){var s=m(\"saturation\"),f=m(\"hue\"),d=m(\"alpha\"),p=m(\"input-value\"),h=m(\"Colors\");return r(),n(\"div\",{class:\"picker\",style:o(e.pickerStyle)},[i(\"div\",je,[i(\"div\",_e,[w(s,{class:\"saturation\",hue:e.h,saturation:e.s,value:e.v,onChange:e.onSelectSaturation},null,8,[\"hue\",\"saturation\",\"value\",\"onChange\"]),w(f,{class:\"hue\",hue:e.h,onChange:e.onSelectHue},null,8,[\"hue\",\"onChange\"]),e.showAlpha?(r(),b(d,{key:0,class:\"alpha\",alpha:e.a,color:e.rgbStr,onChange:e.onSelectAlpha},null,8,[\"alpha\",\"color\",\"onChange\"])):x(\"v-if\",!0)]),w(p,{label:e.label,value:e.colorValue,width:e.inputWidth,onChange:e.onInputChange,onBlur:e.handleChange,onEnter:e.handleChange},null,8,[\"label\",\"value\",\"width\",\"onChange\",\"onBlur\",\"onEnter\"]),e.colors.length>0?(r(),b(h,{key:0,class:\"colors\",colors:e.colors,\"selected-index\":e.selectColorIndex,onChange:e.onSelectColor},null,8,[\"colors\",\"selected-index\",\"onChange\"])):x(\"v-if\",!0)])],4)},Pe.__scopeId=\"data-v-6ceadec6\",Pe.__file=\"src/picker/Picker.vue\";var Ne=e({name:\"AddColorItem\",props:{size:{type:Number,default:20},selected:{type:Boolean,default:!1}},setup:function(e){var r=h(\"theme\",{theme:\"light\"}).theme;return{addColorItemStyle:t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),lineHeight:\"\".concat(e.size,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(r)?\"#2681ff\":\"#1890ff\"):\"\"}}))}}}),Ee=[function(e){return l(\"data-v-ceb1719c\"),e=e(),c(),e}((function(){return i(\"g\",{class:\"container\"},[i(\"path\",{d:\"M544 464V160h-80v304H160v80h304v304h80V544h304v-80z\"})],-1)}))];function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".add-color-item[data-v-ceb1719c]{background:#fff;border:1px solid #d9d9d9;border-radius:5px;vertical-align:top}.container[data-v-ceb1719c]{pointer-events:none;transform:scale(.9);transform-origin:center}[pick-colors-theme=dark] .add-color-item[data-v-ceb1719c]{background:#141414;border:1px solid #434343}path[data-v-ceb1719c]{fill:#000}[pick-colors-theme=dark] path[data-v-ceb1719c]{fill:#fff}\"),Ne.render=function(e,t,a,i,l,c){return r(),n(\"svg\",{style:o(e.addColorItemStyle),class:\"add-color-item\",viewBox:\"0 0 1024 1024\",xmlns:\"http://www.w3.org/2000/svg\"},[].concat(Ee),4)},Ne.__scopeId=\"data-v-ceb1719c\",Ne.__file=\"src/add-color-item/AddColorItem.vue\";var ze=null,Me=e({name:\"ColorPicker\",components:{ColorItem:Se,Picker:Pe,AddColorItem:Ne},props:{value:{type:[String,Array]},theme:{type:String,default:\"light\"},size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},format:{type:String,default:\"hex\"},showPicker:{type:Boolean,default:void 0},showAlpha:{type:Boolean,default:!1},addColor:{type:Boolean,default:!1},deleteColor:{type:Boolean,default:!0},max:{type:Number,default:13},popupContainer:{type:[String,Object,Boolean]},zIndex:{type:Number,default:1e3},colors:{type:Array,default:function(){return[\"#ff4500\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"#ff4500\",\"#ff7d4d\",\"#00babd\",\"#1f93ff\",\"#fa64c3\"]}}},emits:[\"change\",\"update:value\",\"update:showPicker\",\"overflowMax\",\"closePicker\"],setup:function(e,r){var n=r.emit,o=u([]),a=t((function(){return v(o).map((function(t){return ve(t,\"hex\",e.showAlpha)}))}));f((function(){return e.value}),(function(){var t=e.value||\"\",r=Array.isArray(t)?t:[t];o.value=r.map((function(t){return ve(t,e.format,e.showAlpha)}))}),{immediate:!0});var i=u(void 0),l=t((function(){return v(o)[v(i)]})),c=u(!1);f((function(){return e.showPicker}),(function(){c.value=e.showPicker}),{immediate:!0});var d,p,h,m,g,y,b,w=u(null),x=u(null),A=(d=w,p=x,h={zIndex:e.zIndex},m=u({}),g={strategy:\"absolute\",placement:\"auto\",onFirstUpdate:function(){ze.update()},modifiers:[{name:\"offset\",options:{offset:[0,5]}},{name:\"computeStyles\",options:{gpuAcceleration:!1,adaptive:!0}},{name:\"flip\",options:{fallbackPlacements:[\"top\"],allowedAutoPlacements:[\"top\",\"bottom\"]}},{name:\"applyStyles\",enabled:!1},{name:\"updateState\",enabled:!0,phase:\"write\",requires:[\"computeStyles\"],fn:function(e){var t=e.state,r=t.styles,n=t.placement,o=r.popper;m.value=Le(Le(Le({},o),h),{},{transformOrigin:\"top\"===n?\"center bottom\":\"\"})}}]},f((function(){return[v(d),v(p)]}),(function(e,t){var r,n=re(e,2),o=n[0],a=n[1],i=re(t,2),l=i[0],c=i[1];if(o&&a&&(l!==o||c!==l)){null===(r=ze)||void 0===r||r.destroy();var u=o.$el||o,s=a.$el||a;S((function(){ze=_(u,s,g)}))}})),k((function(){var e;ze&&(null===(e=ze)||void 0===e||e.destroy(),ze=null)})),{instance:ze,style:m}),P=A.style,j=function(){null==v(w)&&(w.value=v(V)[0],i.value=0),void 0===e.showPicker?c.value=!0:n(\"update:showPicker\",!0)},N=function(){i.value=void 0,void 0===e.showPicker?c.value=!1:n(\"update:showPicker\",!1),n(\"closePicker\",I(Array.isArray(e.value)||e.addColor?v(o):v(o)[0]))},E=u(),z=function(){var e=M(T.mark((function e(t){var r,n,o,a;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.target,null!=(o=null===(r=n.dataset)||void 0===r?void 0:r.index)&&\"\"!==o){e.next=4;break}return e.abrupt(\"return\");case 4:if(a=+o,v(i)!==a){e.next=7;break}return e.abrupt(\"return\");case 7:null!=v(i)&&v(i)!==a?(N(),y&&clearTimeout(y),y=setTimeout((function(){j(),clearTimeout(y)}),100)):j(),i.value=a,w.value=n;case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),R=function(){var e=M(T.mark((function e(t){var r,n,o,a,i;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.target,!(!(null!==(r=v(E))&&void 0!==r&&r.isEqualNode(a))&&(null===(n=v(E))||void 0===n?void 0:n.contains(a)))){e.next=4;break}return e.abrupt(\"return\");case 4:if(i=null===(o=v(x))||void 0===o?void 0:o.$el,!((null==i?void 0:i.contains(a))||!1)){e.next=8;break}return e.abrupt(\"return\");case 8:b&&clearTimeout(b),b=setTimeout((function(){v(c)&&N()}),0);case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();f(c,(function(){v(c)&&(j(),clearTimeout(b))}));var B,D=u(e.max>v(o).length),H=t((function(){return\"string\"==typeof e.popupContainer||\"object\"===L(e.popupContainer)&&null!=e.popupContainer?e.popupContainer:\"body\"})),G=t((function(){return\"boolean\"==typeof e.popupContainer&&!1===e.popupContainer})),$=t((function(){return e.theme}));f((function(){return[e.theme,v(x)]}),(function(){S((function(){var e,t;null===(e=v(E))||void 0===e||e.setAttribute(\"pick-colors-theme\",v($)),null===(t=v(x))||void 0===t||null===(t=t.$el)||void 0===t||t.setAttribute(\"pick-colors-theme\",v($))}))}),{immediate:!0}),C(\"theme\",{theme:$});var V=u([]);return s((function(){document.addEventListener(\"mouseup\",R,!1),e.showPicker&&j()})),O((function(){document.removeEventListener(\"mouseup\",R,!1),y&&(clearTimeout(y),y=null),b&&(clearTimeout(b),b=null)})),{valueList:o,colorItemSelected:function(t){return(e.addColor?v(o).length>0:v(o).length>1)&&v(i)===t},selectedColor:l,selectedIndex:i,isShowPicker:c,addColorItemShow:D,onPickerChange:function(t){var r=v(i),a=v(o).slice(),l=v(o).length;if(null!=r){r>=0?a[r]=t:(i.value=l,a.push(t));var c=\"\";c=Array.isArray(e.value)||e.addColor?a:t,void 0===e.value?o.value=Array.isArray(c)?c:[c]:(n(\"update:value\",c),n(\"change\",c,t,r)),e.addColor&&l>=e.max&&(D.value=!1,n(\"overflowMax\"))}},colorPicker:E,onColorClick:z,pickerRef:x,onColorItemDragStart:function(e){e.dataTransfer.effectAllowed=\"move\";var t=e.target;B=+t.dataset.index},onColorItemDragOver:function(e){},onColorItemDrop:function(e){var t=+e.target.dataset.index,r=F(v(o)),a=r[B];r.splice(B,1);var i=r.slice(0,t),l=r.splice(t),c=i.concat([a]).concat(l);n(\"update:value\",c),n(\"change\",c,c[B],B)},colorItemsRef:V,pickerStyle:P,values:a,teleportDisabled:G,toPopupContainer:H}}});W(\".color-picker[data-v-3c43ade8]{display:inline-block}.color-item[data-v-3c43ade8]{margin:5px}.add-color-item[data-v-3c43ade8]{display:inline-block;margin:5px}.picker[data-v-3c43ade8]{overflow:hidden}.v-enter-active[data-v-3c43ade8],.v-leave-active[data-v-3c43ade8]{opacity:1;transform:scaleY(1);transform-origin:center top;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.v-enter-from[data-v-3c43ade8],.v-leave-to[data-v-3c43ade8]{opacity:0;transform:scaleY(0)}\"),Me.render=function(e,t,i,l,c,u){var s=m(\"color-item\"),f=m(\"add-color-item\"),d=m(\"picker\");return r(),n(\"div\",{class:\"color-picker\",ref:\"colorPicker\",onDragstart:t[0]||(t[0]=a((function(){return e.onColorItemDragStart&&e.onColorItemDragStart.apply(e,arguments)}),[\"stop\"])),onDragover:t[1]||(t[1]=a((function(){return e.onColorItemDragOver&&e.onColorItemDragOver.apply(e,arguments)}),[\"prevent\",\"stop\"])),onDrop:t[2]||(t[2]=a((function(){return e.onColorItemDrop&&e.onColorItemDrop.apply(e,arguments)}),[\"prevent\",\"stop\"])),onClick:t[3]||(t[3]=a((function(){return e.onColorClick&&e.onColorClick.apply(e,arguments)}),[\"stop\"]))},[(r(!0),n(g,null,y(e.values,(function(t,n){return r(),b(s,{class:\"color-item\",key:n,ref_for:!0,ref:function(t){return e.colorItemsRef[n]=t},size:e.size,width:e.width,height:e.height,value:t,selected:e.colorItemSelected(n),\"data-index\":n,draggable:e.valueList.length>1,format:e.format},null,8,[\"size\",\"width\",\"height\",\"value\",\"selected\",\"data-index\",\"draggable\",\"format\"])})),128)),e.addColor&&e.addColorItemShow?(r(),b(f,{key:0,class:\"add-color-item\",ref:\"addColorItem\",selected:e.colorItemSelected(-1),\"data-index\":-1},null,8,[\"selected\"])):x(\"v-if\",!0),(r(),b(A,{to:e.toPopupContainer,disabled:e.teleportDisabled},[w(P,null,{default:j((function(){return[e.isShowPicker?(r(),b(d,{key:0,class:\"picker\",style:o(e.pickerStyle),ref:\"pickerRef\",value:e.selectedColor,format:e.format,\"show-alpha\":e.showAlpha,colors:e.colors,onChange:e.onPickerChange},null,8,[\"style\",\"value\",\"format\",\"show-alpha\",\"colors\",\"onChange\"])):x(\"v-if\",!0)]})),_:1})],8,[\"to\",\"disabled\"]))],544)},Me.__scopeId=\"data-v-3c43ade8\",Me.__file=\"src/ColorPicker.vue\";export{Me as default};\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n console.log('e', e)\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n console.log('e', e)\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\r\n <div class=\"style-group\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"style-group\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","import { lowerCaseIncludes } from '@/utils/util'\r\n\r\nexport const useIndicatorData = (props: { [key:string]: any } = {}) => {\r\n const handleQueryColumn = (queryColumn: { [key:string]: any } = {}) => {\r\n const { label, name, location, show, indexCode } = queryColumn\r\n return {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n calcType: 'COLUMN',\r\n hrpIndexCode: indexCode\r\n }\r\n }\r\n\r\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\r\n const handleParams = (params: any) => {\r\n if (hasOwn(params, 'dataType')) {\r\n if (params.fieldType === 'DATE') {\r\n params.label = params.fieldName\r\n if (params.dataType === 'component') {\r\n params.fieldValue = '${' + params.fieldValue + '}'\r\n }\r\n }\r\n delete params.dataType\r\n }\r\n if (hasOwn(params, 'activeKey')) {\r\n delete params.activeKey\r\n }\r\n if (hasOwn(params, 'radioValue')) {\r\n delete params.radioValue\r\n }\r\n }\r\n // 递归格式化conditions的数据\r\n const handleConditions = (list: { [key: string]: any } []) => {\r\n const result = []\r\n if (list?.length) {\r\n list.forEach((item) => {\r\n if (item.join && item.conditions) {\r\n const isSameLevel = !item.conditions.some((v: any) => v.join && v.conditions)\r\n item.conditions.forEach((cs: any, index: number) => {\r\n handleParams(cs)\r\n if (isSameLevel) {\r\n if (index < item.conditions.length - 1) {\r\n result.push({\r\n join: item.join,\r\n ...cs\r\n })\r\n } else {\r\n result.push(cs)\r\n }\r\n } else {\r\n if (cs.join && cs.conditions) {\r\n result.push({\r\n conditions: handleConditions([cs]),\r\n join: item.join\r\n })\r\n } else {\r\n result.push(cs)\r\n }\r\n }\r\n })\r\n } else {\r\n handleParams(item)\r\n result.push(item)\r\n }\r\n })\r\n }\r\n return result\r\n }\r\n\r\n const handleIndicator = (indicator: { [key:string]: any } = {}) => {\r\n const {\r\n label,\r\n name,\r\n location,\r\n show,\r\n indexCode,\r\n calcType = 'COLUMN',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions,\r\n aggregate\r\n } = indicator\r\n let conditionData\r\n if (conditions) {\r\n conditionData = handleConditions(conditions)\r\n }\r\n return {\r\n label: label.trim(),\r\n columnName: name,\r\n location,\r\n show,\r\n calcType,\r\n hrpIndexCode: indexCode,\r\n aggregate,\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions: conditionData\r\n }\r\n }\r\n\r\n return async () => {\r\n const { graphicConfig, type, request } = props\r\n // 全部属性, 为了属性可拓展,所以在设计器中自由添加\r\n let {\r\n source,\r\n dataViewId,\r\n plugin = '1', // 插件类型\r\n layer, // 后台图表类型,值分0,1\r\n chartType, // 前端图表类型,实测没用\r\n classificationList = [],\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = [],\r\n // controlList = [],\r\n dataSourceId, // 所属数据源ID\r\n idxLibMode, // 指标库模式, source= INDICATOR_LIB时候必填, NORMAL_YEAR_TABLE = 普通年表, WITH_DATE_DIM_TABLE = 带有时间维度表\r\n preview = false // 预览开关\r\n } = graphicConfig || {}\r\n // 图类型,1=表 2=图\r\n if (layer == null) {\r\n if (lowerCaseIncludes(type, 'table')) {\r\n layer = '1'\r\n } else {\r\n layer = '2'\r\n }\r\n }\r\n // console.log('classificationList', classificationList)\r\n // console.log('seriesList', seriesList)\r\n // console.log('leftAxisList', leftAxisList)\r\n // console.log('rightAxisList', rightAxisList)\r\n // console.log('indicators', indicators)\r\n // console.log('controlList', controlList)\r\n // 重点处理 classificationList、seriesList、leftAxisList、rightAxisList、indicators\r\n // classificationList (取第一项) => classification\r\n let classification: Object\r\n if (Array.isArray(classificationList) && classificationList.length > 0) {\r\n const len = classificationList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = classificationList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 classification,停止遍历\r\n if (show || len === 1) {\r\n classification = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions: handleConditions(conditions)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // seriesList (取第一项) => series\r\n let series: Object\r\n if (Array.isArray(seriesList) && seriesList.length > 0) {\r\n const len = seriesList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = seriesList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 seriesList,停止遍历\r\n if (show || len === 1) {\r\n series = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions: handleConditions(conditions)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // queryColumnList => queryColumns\r\n const queryColumns = []\r\n queryColumnList?.forEach((queryColumn: { [key:string]: any }) => {\r\n queryColumns.push(handleQueryColumn(queryColumn))\r\n })\r\n\r\n // leftAxisList + rightAxisList + indicators => indicatorList\r\n const indicatorList = []\r\n leftAxisList?.forEach((leftAxis: { [key:string]: any }) => {\r\n leftAxis.location = 'LEFT'\r\n indicatorList.push(handleIndicator(leftAxis))\r\n })\r\n rightAxisList?.forEach((rightAxis: { [key:string]: any }) => {\r\n rightAxis.location = 'RIGHT'\r\n indicatorList.push(handleIndicator(rightAxis))\r\n })\r\n indicators?.forEach((indicator: { [key:string]: any }) => {\r\n indicator.location = 'LEFT'\r\n indicatorList.push(handleIndicator(indicator))\r\n })\r\n // queryColumns 表格配置为空返回\r\n if (layer === '1' && queryColumns.length === 0) {\r\n return\r\n // queryColumns 图表配置为空返回\r\n } else if (layer === '2' && indicatorList.length === 0) {\r\n return\r\n }\r\n try {\r\n // @ts-ignore\r\n const res = await request.post('/diagram', {\r\n source,\r\n dataViewId,\r\n plugin,\r\n layer,\r\n chartType,\r\n classification,\r\n series,\r\n indicatorList,\r\n queryColumns,\r\n pageFlag: true,\r\n sqlConditions: [],\r\n dataSourceId,\r\n idxLibMode,\r\n preview\r\n })\r\n return res\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n}\r\n\r\nexport default useIndicatorData\r\n","import dayjs from 'dayjs'\nconst runCode = (code: string, data?: { [key:string]: any }) => {\n const useFn = {\n dayjs,\n ...data\n }\n let paramsStr = ''\n const params = []\n for (const key in useFn) {\n paramsStr += `${key},`\n params.push(useFn[key])\n }\n paramsStr = paramsStr.replace(/,$/, '')\n const runFn = `function (${paramsStr}){return ${code}}`\n let result\n try {\n // eslint-disable-next-line no-new-func\n result = Function(`\"use strict\";return (${runFn})`)()(...params)\n } catch (e) {\n // console.error()\n return code\n }\n return result\n}\n\nexport default runCode\n","import runCode from '@/utils/runCode'\nexport const useVariablesInText = (\n formatter: string = '',\n { textData, codeData }: { textData?: { [key:string]: any }, codeData?: { [key:string]: any } } = {},\n { useNewline = false, useSpace = false } = {}\n) => {\n // 引入全局变量\n const data = { ...textData }\n const variables = (formatter).match(/\\{(.+?)\\}/g)\n if (variables == null || variables.length === 0) {\n return formatter\n }\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n let statement = variable.slice(1, -1).trim()\n const reg = /[\\u4e00-\\u9fa5a-z-_A-Z0-9]*/g\n const textVariables = statement.match(reg)\n for (let j = 0; j < textVariables.length; j++) {\n const textVariable = textVariables[j]\n const usedVariable = data[textVariable]\n if (usedVariable != null) {\n // 使用的变量\n statement = statement.replace(textVariable, usedVariable)\n }\n }\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n statement = runCode(statement, codeData)\n }\n formatter = formatter.replace(variable, statement)\n }\n // 替换换行\n if (useNewline) {\n formatter = formatter?.replace(/\\n|\\\\n/g, '<br/>')\n }\n // 替换空格\n if (useSpace) {\n formatter = formatter?.replace(/\\s{2,}?/g, ' ')\n }\n return formatter\n}\n\nexport default useVariablesInText\n","import runCode from '@/utils/runCode'\nexport const useValueFormatter = (formatter: string, value:string) => {\n if (formatter == null) return value\n const variables = (formatter).match(/\\{.*\\}/g)\n if (variables == null || variables.length === 0) {\n return value\n }\n const len = variables.length\n for (let i = 0; i < len; i++) {\n const variable = variables[i]\n if (variable == null || variable === '') break\n let statement = variable.slice(1, -1)?.trim()\n statement = statement?.replace(/value/g, value)\n try {\n let result = statement\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n result = runCode(statement)\n }\n formatter = formatter.replace(variable, result)\n } catch (e) {\n formatter = formatter.replace(variable, statement)\n }\n }\n return formatter\n}\n\nexport default useValueFormatter\n","import { computed, unref } from 'vue'\r\nimport useVariablesInText from '@/hooks/useVariablesInText'\r\nimport useValueFormatter from '@/hooks/useValueFormatter'\r\nimport { handleFormatter } from '@/utils/util'\r\n\r\nexport const getTransformProps = (chartsOptions, chartData, fontSize) => {\r\n switch (chartsOptions.type) {\r\n case 'bar':\r\n return getBarTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'line':\r\n return getLineTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'pie':\r\n return getPieTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'comboGraph':\r\n return getComboGraphTransfromProps(chartsOptions, chartData, fontSize)\r\n default:\r\n return {}\r\n }\r\n}\r\n\r\nconst getBarTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const series = computed(() => {\r\n const ds = dataset\r\n const len = ds.length\r\n const series = []\r\n for (let i = 0; i < len; i++) {\r\n const item = {\r\n ...ds[i],\r\n type: 'bar',\r\n barWidth: chartsOptions.barWidth\r\n } as { [key: string]: any }\r\n if (chartsOptions.isStack) {\r\n item.stack = 'stack'\r\n }\r\n item.label = {\r\n show: chartsOptions.labelShow,\r\n fontSize: chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n color: chartsOptions.labelColor\r\n }\r\n series.push(item)\r\n }\r\n return series\r\n })\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'value' : 'category',\r\n data: chartsOptions.isUseHorizontalAxis ? null : unref(xAxisData),\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.xAxisInverse\r\n : chartsOptions.axisInverse,\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'category' : 'value',\r\n data: chartsOptions.isUseHorizontalAxis ? dimensions : null,\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.axisInverse\r\n : chartsOptions.yAxisInverse,\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n rotate: chartsOptions.yAxisLabelRotate,\r\n width: chartsOptions.yAxisLabelWidth,\r\n overflow: chartsOptions.yAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getLineTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n for (let i = 0; i < len; i++) {\r\n temp.push({\r\n type: 'line',\r\n ...dataset[i],\r\n symbolSize: chartsOptions.symbolSize,\r\n smooth: chartsOptions.smooth,\r\n lineStyle: {\r\n width: chartsOptions.lineStyleWidth\r\n }\r\n })\r\n }\r\n return temp\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n textStyle: {\r\n fontSize: fontSize\r\n },\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n }\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: unref(xAxisData),\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getPieTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dataset = [] } = chartData\r\n let { data = [] } = dataset[0] || {}\r\n if (Array.isArray(chartsOptions.colors)) {\r\n const isUseLabelColors = chartsOptions.isUseLabelColors\r\n const colors = chartsOptions.colors\r\n data = data.map((item, index) => ({\r\n label: isUseLabelColors ? { color: colors[index] } : {},\r\n ...item\r\n }))\r\n }\r\n return {\r\n // 提示\r\n tooltip: {\r\n show: chartsOptions.tooltipShow,\r\n trigger: chartsOptions.tooltipTrigger,\r\n formatter: (params) => {\r\n const { marker, seriesName, name, value, percent, data } = params || {}\r\n return useVariablesInText(\r\n chartsOptions.tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n percent,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n d: percent,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize\r\n }\r\n },\r\n series: [\r\n {\r\n data,\r\n type: 'pie',\r\n radius: [chartsOptions.innerRadius, chartsOptions.outerRadius],\r\n center: [chartsOptions.centerLeft, chartsOptions.centerTop],\r\n roseType: chartsOptions.roseType,\r\n avoidLabelOverlap: false,\r\n minAngle: chartsOptions.minAngle,\r\n label: {\r\n show: chartsOptions.labelPosition !== 'center' && chartsOptions.labelShow,\r\n color: chartsOptions.labelColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n formatter: handleFormatter(chartsOptions.labelFormatter)\r\n },\r\n labelLine: {\r\n show: chartsOptions.labelLineShow,\r\n length: chartsOptions.labelLineLength,\r\n length2: chartsOptions.labelLineLength2\r\n },\r\n emphasis: {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n shadowColor: 'rgba(0, 0, 0, 0.5)'\r\n },\r\n label: {}\r\n }\r\n }\r\n ]\r\n }\r\n}\r\n\r\nconst getComboGraphTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n temp.push({\r\n type: seriesType?.type,\r\n yAxisIndex: seriesType?.axisIndex,\r\n ...dataset[i]\r\n })\r\n }\r\n return temp\r\n })\r\n const yAxis = computed(() => {\r\n const yAxis = chartsOptions.yAxis\r\n return yAxis?.map((axis) => {\r\n return {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(axis.axisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n }\r\n })\r\n })\r\n return {\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n const { tooltipFormatter: _tooltipFormatter } = seriesType || {}\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n // 如果系列有提示框组件就使用自定义,没有就用默认的\r\n _tooltipFormatter || tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n seriesName,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n type: 'category',\r\n data: unref(xAxisData),\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: unref(yAxis),\r\n series: unref(series)\r\n }\r\n}\r\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface KeyTypeDataFieldNames {\n name: string\n types: {\n label: string\n value: string\n } []\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrKey = (data: Data = [], dataFieldNames: KeyTypeDataFieldNames) => {\n let { name = 'name', types = [] } = dataFieldNames || {}\n name = name?.trim() || name\n const set = new Set()\n const map = new Map<string, any []>()\n const dataLen = data.length\n const typesLen = types.length\n // 只有一条记录\n if (dataLen === 1) {\n const vs = []\n // data 为一个值取第一个\n for (let i = 0; i < typesLen; i++) {\n const type = types[i]\n const { label, value } = type\n const v = { ...data[0], value: data[0][value] }\n set.add(label)\n // 值列表\n vs.push(v)\n }\n const n = data[0][name] || ''\n map.set(n, vs)\n } else {\n for (let i = 0; i < dataLen; i++) {\n const item = data[i]\n const x = item[name]\n set.add(x)\n for (let j = 0; j < typesLen; j++) {\n const type = types[j]\n const { label, value } = type\n const v = { ...item, value: item[value] }\n if (map.has(label)) {\n const m = map.get(label)\n m.push(v)\n map.set(label, m)\n } else {\n map.set(label, [v])\n }\n }\n }\n }\n\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\n\nexport default useTransformChartDataByAttrKey\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface ValueTypeDataFieldNames {\n name: string\n value: string\n type: string\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrValue = (data: Data, dataFieldNames?: ValueTypeDataFieldNames) => {\n let { name = 'name', value = 'value', type = 'type' } = dataFieldNames || {}\n // 处去字符串\n name = name?.trim()\n value = value?.trim()\n type = type?.trim()\n const set = new Set()\n const map = new Map()\n const len = data.length\n for (let i = 0; i < len; i++) {\n const item = data[i]\n // x轴\n const x = item[name] || ''\n // y轴\n const y = item[value] || ''\n // 系列(类型)\n const t = item[type] || ''\n set.add(x)\n if (map.has(t)) {\n const arr = map.get(t)\n arr.push({ name: x, value: y, ...item })\n map.set(t, arr)\n } else {\n map.set(t, [{ name: x, value: y, ...item }])\n }\n }\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\nexport default useTransformChartDataByAttrValue\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrap\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Modal as AModal, Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return chartGraphicOptions as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return chartGraphicConfig as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const chartGraphicConfig = inject(GRAPHIC_CONFIG) || {}\r\n const chartGraphicOptions = inject(CHARTS_OPTIONS) || {}\r\n const echartRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {\r\n AModal.info({\r\n title: '说明信息',\r\n content: chartsOptionsValue.toolboxInfoText\r\n })\r\n }\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n observer = new ResizeObserver(handleResize)\r\n const chartWrap = document.getElementsByClassName('ecan-chart-graph')[0]\r\n observer.observe(chartWrap)\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrap\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Modal as AModal, Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return chartGraphicOptions as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return chartGraphicConfig as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const chartGraphicConfig = inject(GRAPHIC_CONFIG) || {}\r\n const chartGraphicOptions = inject(CHARTS_OPTIONS) || {}\r\n const echartRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {\r\n AModal.info({\r\n title: '说明信息',\r\n content: chartsOptionsValue.toolboxInfoText\r\n })\r\n }\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n observer = new ResizeObserver(handleResize)\r\n const chartWrap = document.getElementsByClassName('ecan-chart-graph')[0]\r\n observer.observe(chartWrap)\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group></style-group>\n </a-tab-pane>\n </a-tabs>\n <chart-graph\n v-if=\"isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n const refreshData = unref(componentRef)?.refreshData\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n // onMounted(() => {\n // refreshData()\n // })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n .ant-tabs-nav {\n margin-bottom: 4px;\n }\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group></style-group>\n </a-tab-pane>\n </a-tabs>\n <chart-graph\n v-if=\"isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n const refreshData = unref(componentRef)?.refreshData\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n // onMounted(() => {\n // refreshData()\n // })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n .ant-tabs-nav {\n margin-bottom: 4px;\n }\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"config-modal\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT,\n REQUEST\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n },\n request: {\n // 外部请求方法\n default: null\n }\n },\n setup (props, { expose }) {\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n const updateIndicatorData = () => {\n if (unref(component).graphicConfig) {\n graphicConfig.value = cloneDeep(unref(component).graphicConfig)\n }\n if (unref(component).chartsOptions) {\n chartsOptions.value = cloneDeep(unref(component).chartsOptions)\n }\n }\n const getIndicatorData = () => {\n return {\n graphicConfig: unref(graphicConfig),\n chartsOptions: unref(chartsOptions)\n }\n }\n (window as any).getIndicatorData = getIndicatorData\n if (props.request) {\n provide(REQUEST, props.request)\n }\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions,\n updateIndicatorData\n })\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","<template>\n <div class=\"config-modal\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT,\n REQUEST\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n },\n request: {\n // 外部请求方法\n default: null\n }\n },\n setup (props, { expose }) {\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n const updateIndicatorData = () => {\n if (unref(component).graphicConfig) {\n graphicConfig.value = cloneDeep(unref(component).graphicConfig)\n }\n if (unref(component).chartsOptions) {\n chartsOptions.value = cloneDeep(unref(component).chartsOptions)\n }\n }\n const getIndicatorData = () => {\n return {\n graphicConfig: unref(graphicConfig),\n chartsOptions: unref(chartsOptions)\n }\n }\n (window as any).getIndicatorData = getIndicatorData\n if (props.request) {\n provide(REQUEST, props.request)\n }\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions,\n updateIndicatorData\n })\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","import { withInstall } from '@/utils/withInstall'\r\nimport IndicatorLibrary from './IndicatorLibrary.vue'\r\nexport const EcanIndicatorLibrary = withInstall(IndicatorLibrary)\r\nexport default EcanIndicatorLibrary\r\n","import { withInstall } from '@/utils/withInstall'\r\nimport ChartGraph from './ChartGraph.vue'\r\nexport const EcanChartGraph = withInstall(ChartGraph)\r\nexport default EcanChartGraph\r\n","import { App } from 'vue'\nimport * as components from './components'\nconst install = (app: App, options: any) => {\n const { request } = options\n app.provide('$request', request)\n Object.keys(components).forEach((key) => {\n const component = components[key]\n if (component.install) {\n app.use(component)\n }\n })\n}\n\n// 部分导出\nexport * from './components'\n// 全局安装\nexport default {\n install\n}\n"],"names":["withInstall","main","extra","app","comp","key","REQUEST","INDICATOR_URL","_a","INDICATOR_TOKEN","DATA_LIST","SELECTED_COMPONENT","GRAPHIC_CONFIG","UPDATE_GRAPHIC_CONFIG","SHOW_STYLE_CONFIG","REFRESH_DATA","CHARTS_OPTIONS","ZOOM_FONT_SIZE","UPDATE_CHARTS_OPTIONS","SOURCE_TYPE","CHANGE_CONDITION","DATA_VIEW_COLUMNS","barProps","lineProps","pieProps","customGraphProps","comboGraphProps","propsMap","_sfc_main$r","defineComponent","ASpin","ATreeSelect","Draggable","request","inject","indicatorToken","unref","graphicConfig","updateGraphicConfig","dataViewId","computed","treeSelectLoading","ref","treeSelectData","PAGE_ID","selectedItem","reactive","echoSelectedNode","id","data","_b","transTreeData","pId","list","item","handleLoadData","treeNode","isFirst","value","onDataViewIdChange","handleDataViewColumns","setDataList","dataViewLoading","dataViewList","res","success","rows","row","columns","column","mapGenericType","genericType","onDragStart","event","dataViews","dataView","copyItem","onMounted","_hoisted_1","_component_draggable","_resolveComponent","_openBlock","_createElementBlock","_createVNode","_component_a_spin","_ctx","_withCtx","_component_a_tree_select","_createElementVNode","_hoisted_2","_cache","$event","_hoisted_3","_createTextVNode","_toDisplayString","bound01","n","max","isOnePointZero","isPercent","isPercentage","boundAlpha","a","convertToPercentage","pad2","c","rgbToRgb","r","g","b","hue2rgb","p","q","t","hslToRgb","h","s","l","rgbToHsv","min","v","d","hsvToRgb","i","f","mod","rgbToHex","allow3Char","hex","convertHexToDecimal","parseIntFromHex","val","names","inputToRGB","color","rgb","ok","format","stringInputToObject","isValidCSSUnit","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","named","match","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","toHsv","_ref","hsv","toHex","_ref2","mix","rgb1","rgb2","amount","getHue","light","hue","getSaturation","saturation","getValue","generate","opts","patterns","pColor","colorString","_i","_hsv","_colorString","_ref3","index","opacity","darkColorString","presetPrimaryColors","presetPalettes","presetDarkPalettes","containers","styleElements","usage","createStyleElement","styleElement","insertCss","css","options","position","container","containerId","_objectSpread","target","source","ownKeys","sym","_defineProperty","obj","warn","valid","message","warning","isIconDefinition","node","rootProps","child","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","iconStyles","cssInjectedFlag","useInsertStyles","styleStr","nextTick","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","twoToneColorPalette","setTwoToneColors","secondaryColor","getTwoToneColors","IconBase","props","context","_props$context$attrs","icon","restProps","colors","VueIcon","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","len","arr2","_arr","_n","_d","_s","_e","err","setTwoToneColor","_normalizeTwoToneColo","_normalizeTwoToneColo2","getTwoToneColor","Icon","_classObj","cls","spin","rotate","tabindex","onClick","classObj","svgClassString","iconTabIndex","svgStyle","AntdIcon","AppstoreAddOutlined","AppstoreAddOutlinedSvg","AppstoreAddOutlined$1","CaretDownOutlined","CaretDownOutlinedSvg","CaretDownOutlined$1","CaretRightOutlined","CaretRightOutlinedSvg","CaretRightOutlined$1","CloseOutlined","CloseOutlinedSvg","CloseOutlined$1","CopyOutlined","CopyOutlinedSvg","CopyOutlined$1","DeleteOutlined","DeleteOutlinedSvg","DeleteOutlined$1","DoubleRightOutlined","DoubleRightOutlinedSvg","DoubleRightOutlined$1","DownOutlined","DownOutlinedSvg","DownOutlined$1","MinusCircleOutlined","MinusCircleOutlinedSvg","MinusCircleOutlined$1","PlusCircleOutlined","PlusCircleOutlinedSvg","PlusCircleOutlined$1","PlusOutlined","PlusOutlinedSvg","PlusOutlined$1","SettingOutlined","SettingOutlinedSvg","SettingOutlined$1","_sfc_main$q","AInputSearch","APagination","selectedComponent","selectedConfig","dataSourceId","dataSourceList","dataSourceLoading","pagination","searchText","handleDataSourceList","params","total","mapScope","scope","onToggleGroup","onSearch","onChange","debounce","onPaginationChange","page","pageSize","dimensions","types","dataViewColumns","lostDim","_hoisted_4","_hoisted_5","_component_a_input_search","_Fragment","_renderList","dataSource","_normalizeClass","_createBlock","_component_caret_down_outlined","_component_caret_right_outlined","dataViewColumn","_hoisted_6","_component_a_pagination","_sfc_main$p","DataSourceList","DataViewList","_component_data_source_list","_createCommentVNode","focus$1","el","_sfc_main$o","AModal","AButton","expose","customSortList","handleCustomSortList","e","updateCustomSortList","label","name","isDataChange","visible","showModal","hideModal","onCancel","watch","customOrderColumns","_component_a_modal","_component_a_button","_sfc_main$n","focus","ASelect","ASelectOption","AInput","ACheckbox","ACollapse","ACollapsePanel","ATag","ACheckableTag","title","createGroupTitle","activeKey","customGroupList","customGroupTitleSet","customGroupTitleList","customGroupEditTitleList","length","selectCount","count","customGroup","onAddGroup","onDeleteGroup","selectGroupIndex","onMoveInGroup","selectList","onEditTitle","onFinishEditTitle","onTitleChange","useOtherGroup","updateCustomGroup","customGroups","otherGroupName","groupInfoMap","onUseOtherGroup","allLabelSet","handleInitData","handleCustomGroupList","_hoisted_7","_resolveDirective","_component_a_select_option","_component_a_input","_component_a_checkbox","_component_a_collapse","_component_a_collapse_panel","_withDirectives","_hoisted_8","_component_a_tag","_hoisted_9","_component_a_checkable_tag","module","this","dayjs","quarterOfYear","_sfc_main$m","ADatePicker","ADropdown","AMenu","AMenuItem","ASubMenu","APopover","ATabs","ATabPane","ARadioGroup","ARadio","AInputNumber","controlList","keyName","prop","propName","showTime","dateRadioStyle","formatList","tabDateList","compareList","menuRule","condition","_c","_f","_g","_h","_j","_k","popoverVisible","isDateType","fieldOptions","type","result","updateCondition","deleteCondition","_condition","_level","_index","onDelete","cloneDeep","onFieldChange","option","typeGuid","ruleOptions","dateBtnLabel","downIconStyle","style","valueOptions","handleValueOptions","onRuleChange","fieldValues","onFieldValueSelectChange","values","handleMenuClick","keyPath","tabItem","setTabItemData","fieldType","fieldName","rule","changeTabInitDate","changeRadioValue","beforeNum","afterNum","getDateValue","getFieldValue","tabIndex","blurCompare","flag","okDatePickConfig","radioValue","calcWays","_component_a_select","_component_a_dropdown","_component_a_menu","_normalizeStyle","mr","_component_a_sub_menu","fl","_component_DownOutlined","_component_a_date_picker","_component_a_popover","_component_a_tabs","_component_a_tab_pane","_component_a_radio_group","_component_a_radio","_component_a_input_number","_hoisted_11","_component_close_outlined","_sfc_main$l","Condition","_component_condition_list","_component_condition","_sfc_main$k","emit","truncationList","_withScopeId","_pushScopeId","_popScopeId","_sfc_main$j","ConditionList","TruncationList","handleTitle","conditionList","addCondition","join","provide","level","conditions","wrapperConditions","wrapperLevel","onUpdatetruncation","updateFilter","onOk","getHrpIndexWithComplex","indexGuid","_component_truncation_list","nanoid","size","bytes","byte","getParentKey","tree","parentKey","_sfc_main$i","ARow","ACol","ATextarea","ATree","leftAxisList","rightAxisList","indicators","queryColumnList","fieldList","field","myValue","searchFuncValue","insertText","str","tmpStr","sel","startPos","endPos","cursorPos","calculMethods","selectedElem","inputVal","dataList","expandedKeys","autoExpandParent","funcDescsData","getFuncDescs","onExpand","keys","expanded","self","_hoisted_12","_component_a_row","_component_a_col","_component_a_textarea","_component_a_tree","leaf","_hoisted_10","_hoisted_14","_sfc_main$h","FormulaCalculation","AForm","AFormItem","builtInValueSourceList","allValueSourceList","labelCol","wrapperCol","formDefaultValue","formRef","formState","calcType","formula","builtInValueSource","builtInFormula","builtInCalcWay","saveIndicator","validateLabel","_rule","formRules","onOK","onChangeBuiltInFormula","accessLogic","principle","comefrom","_component_a_form","_component_a_form_item","_component_formula_calculation","lowerCaseIncludes","v1","v2","handleFormatter","formatter","hasOwn","k","_sfc_main$g","CalculationModal","FilterModal","CustomGroupModal","CustomSortModal","ACard","AMenuDivider","idxList","dimList","isAllowAdd","handleListItemData","listData","reNameSame","handleCardItemData","cardData","cardItem","currentList","originalList","addItem","sameNums","checkItem","onCheckboxChange","onDropEnd","onDragItemEnd","onDragItemAdd","listItemData","cardItemData","onDragItemSort","newIndex","oldIndex","from","to","fromType","toType","currItem","onDragItemStart","cardItemList","editLabelList","isLabelChange","onEdit","onLabelChange","onCommitLabelChange","DEFAULT","sortList","onSort","order","handleSortTitle","text","sort","currentItem","currentIndex","customSortModalRef","customGroupModalRef","showCustomSortModal","handleCustomSortTitle","showCustomGroupModal","handleCustomGroupTitle","aggregateList","onAggregateChange","onDateFormatChange","handleAggregateTitle","handleFilterTitle","filterModalRef","showFilterModal","calculationModalRef","calculationModalMode","onShowCalculationModal","mode","fieldData","getFieldData","formFields","dataViewMap","onVisibleChange","itemName","copyDataViewName","input","_hoisted_16","_directive_focus","_component_a_card","_component_plus_outlined","_hoisted_13","_withModifiers","sortItem","_component_a_menu_item","_component_a_menu_divider","aggregate","_hoisted_17","_component_copy_outlined","_component_delete_outlined","_component_custom_sort_modal","_component_custom_group_modal","_component_filter_modal","_component_calculation_modal","cardTypeMap","_sfc_main$f","DataConfigCard","selectedComponentType","isGroupTable","cardsMap","cards","allMap","graphicConfigMap","startStr","startIndex","componentMapKeys","map","componentMapKey","card","_component_data_config_card","_mergeProps","propsGroups","mapAttributeProps","component","width","suffix","height","centerLeft","centerTop","innerRadius","outerRadius","tooltipTrigger","tooltipTextStyleColor","tooltipFormatter","legendTextStyleColor","legendTop","legendLeft","legendOrient","labelFormatter","labelColor","isUseLabelColors","labelFontSize","labelPosition","onlyType","labelLineLength","labelLineLength2","symbolSize","smooth","lineStyleWidth","xAxisSplitLineShow","xAxisSplitLineStyleColor","xAxisLabelColor","xAxisLineStyleColor","xAxisTickShow","xAxisLabelFormatter","yAxisSplitLineShow","yAxisLineAlwaysDisplay","yAxisSplitLineStyleColor","yAxisLabelColor","yAxisLineStyleColor","yAxisLabelFormatter","roseType","yAxis","layout","seriesTypes","useLabelIndex","barWidth","gridTop","gridBottom","gridLeft","gridRight","gridContainLabel","toolboxOrient","toolboxItemSize","toolboxItemGap","toolboxLeft","toolboxTop","toolboxDownloadUrl","toolboxInfoText","isUseHorizontalAxis","axisInverse","xAxisInverse","yAxisInverse","areaStyleOpacity","step","xAxisLabelWidth","xAxisLabelOverflow","optionType","xAxisLabelRotate","yAxisLabelWidth","yAxisLabelOverflow","yAxisLabelRotate","isStack","labelShow","xAxisMinInterval","yAxisMinInterval","minAngle","xAxisLabelInterval","toolboxLocation","toolboxDownloadShow","toolboxDataZoomShow","toolboxInfoShow","_sfc_main$e","_sfc_main$d","inputValue","getPrefixOrSuffixValue","prefixValue","suffixValue","_createSlots","_sfc_main","ARadioButton","_component_a_radio_button","_sfc_main$b","ASwitch","_component_a_switch","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","state","attributes","effect","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","modifiers","visited","modifier","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","fn","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","N","E","F","L","z","M","R","B","u","w","j","S","C","O","I","A","P","_","D","T","H","G","$","V","Y","J","W","X","U","K","Q","Z","ee","te","re","ne","oe","ae","ie","le","ce","ue","se","fe","de","pe","he","ve","be","we","xe","me","ge","ye","Se","ke","Ce","Oe","Ie","Ae","Pe","je","Ne","Ee","Fe","Le","ze","Me","_sfc_main$9","PickColors","colorValue","_component_pick_colors","_sfc_main$8","onColorsChange","_sfc_main$7","InputNumber","temp","firstItem","_component_appstore_add_outlined","_resolveDynamicComponent","_component_minus_circle_outlined","_sfc_main$6","_sfc_main$5","Input","RadioGroup","Select","Switch","ColorPick","ColorGroupPick","FormGroup","Textarea","chartsOptions","updateChartsOptions","setFormProps","setOptions","mapAttributeProp","valueProp","changeValueEventName","events","updateValue","attrs","reduce","excludeType","$props","$setup","$data","$options","formProp","_sfc_main$4","workerId","JsonWorker","TsWorker","EditorWorker","dom","editor","themeMap","monacoEditor","code","onUnmounted","_sfc_main$3","PropsToForm","Editor","activePanel","refreshData","handleChangeType","detailPropsGroups","propsGroup","enableProps","pickProps","pick","isRenderForm","detailPropsGroup","componentType","onSwitchClick","checked","onSwitchChange","ComponentString","updateComponentOptions","optionCode","onEditorChange","isShowOptionEditor","_component_props_to_form","_component_editor","useIndicatorData","handleQueryColumn","queryColumn","location","show","indexCode","handleParams","handleConditions","isSameLevel","cs","handleIndicator","indicator","conditionData","plugin","layer","chartType","classificationList","seriesList","idxLibMode","preview","classification","series","queryColumns","indicatorList","leftAxis","rightAxis","runCode","useFn","paramsStr","runFn","useVariablesInText","textData","codeData","useNewline","useSpace","variables","variable","statement","reg","textVariables","textVariable","usedVariable","useValueFormatter","getTransformProps","chartData","fontSize","getBarTransfromProps","getLineTransfromProps","getPieTransfromProps","getComboGraphTransfromProps","dataset","ds","xAxisData","marker","seriesName","percent","seriesType","_tooltipFormatter","useTransformChartDataByAttrKey","dataFieldNames","set","dataLen","typesLen","vs","useTransformChartDataByAttrValue","_sfc_main$2","chartGraphicOptions","chartGraphicConfig","observer","echartRef","myChart","loading","myOption","chartOption","chartsOptionsValue","handleIndicatorDataset","keyTypeDataFieldNames","useDataFieldNames","handleIndicatorPieDataset","handleIndicatorData","indicatorData","fieldNames","emptyOption","setChartOption","handleResize","evalCopy","chartWrap","echarts","onBeforeUnmount","_sfc_main$1","DataGroup","StyleGroup","ChartGraph","componentRef","isShowStyleConfig","notGraphicList","cloneComponent","pickComponent","without","config","fullWidth","_component_chart_graph","DataList","DataConfig","sourceType","isMerge","getDataList","updateIndicatorData","getIndicatorData","_component_data_list","EcanIndicatorLibrary","IndicatorLibrary","EcanChartGraph","install","components"],"mappings":"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","x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,53,62,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/utils/withInstall.ts","../src/utils/constant.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/bar/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/line/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/pie/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/custom-graph/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/combo-graph/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/index.ts","../src/indicator/indicator-library/data-list/DataViewList.vue","../src/indicator/indicator-library/data-list/DataViewList.vue","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@ant-design/icons-vue/es/insert-css.js","../node_modules/@ant-design/icons-vue/es/utils.js","../node_modules/@ant-design/icons-vue/es/components/IconBase.js","../node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons-vue/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretDownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CloseOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CopyOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CopyOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DoubleRightOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DoubleRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MinusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/MinusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/SettingOutlined.js","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/directives/focus.ts","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../node_modules/dayjs/plugin/quarterOfYear.js","../src/utils/util.ts","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/TruncationList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/TruncationList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../node_modules/nanoid/index.prod.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data.ts","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/data.ts","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/data.tsx","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/radio-group/RadioGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/switch/Switch.vue","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/vue-pick-colors/dist/index.esm.js","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/editor/Editor.vue","../src/indicator/editor/Editor.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/hooks/useIndicatorData.ts","../src/utils/runCode.ts","../src/hooks/useVariablesInText.ts","../src/hooks/useValueFormatter.ts","../src/indicator/chart-graph/transformProps.ts","../src/hooks/useTransformChartDataByAttrKey.ts","../src/hooks/useTransformChartDataByAttrValue.ts","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/index.ts","../src/indicator/chart-graph/index.ts","../src/index.ts"],"sourcesContent":["import { NOOP } from '@vue/shared'\nimport { Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport const withInstall = <T, E extends Record<string, any>>(\n main: T,\n extra?: E\n) => {\n (main as SFCWithInstall<T>).install = (app): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp)\n }\n }\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp\n }\n }\n return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app) => {\n app.config.globalProperties[name] = fn\n }\n\n return fn as SFCWithInstall<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n (component as SFCWithInstall<T>).install = NOOP\n\n return component as SFCWithInstall<T>\n}\n","export const REQUEST = '$request'\n// @ts-ignore\nexport const INDICATOR_URL = window?.config?.indicatorURL || ''\n\nexport const INDICATOR_TOKEN = 'INDICATOR_TOKEN'\n\nexport const CONTAINER_TYPES = ['tabs', 'border']\n\nexport const CACHE_STEP = 'CACHE_STEP'\n\nexport const UPDATE_SNAPSHOT_LIST = 'UPDATE_SNAPSHOT_LIST'\n\nexport const REQUEST_MODEL = 'REQUEST_MODEL'\n\nexport const DATA_LIST = 'DATA_LIST'\n\nexport const SELECTED_COMPONENT = 'SELECTED_COMPONENT'\n\nexport const GRAPHIC_CONFIG = 'GRAPHIC_CONFIG'\n\nexport const UPDATE_GRAPHIC_CONFIG = 'UPDATE_GRAPHIC_CONFIG'\n\nexport const SHOW_STYLE_CONFIG = 'SHOW_STYLE_CONFIG'\n\nexport const REFRESH_DATA = 'REFRESH_DATA'\n\nexport const CHARTS_OPTIONS = 'CHARTS_OPTIONS'\n\nexport const ZOOM_FONT_SIZE = 18\n\nexport const UPDATE_CHARTS_OPTIONS = 'UPDATE_CHARTS_OPTIONS'\n\nexport const SOURCE_TYPE = 'SOURCE_TYPE'\n\nexport const CHANGE_CONDITION = 'CHANGE_CONDITION'\n\nexport const DATA_VIEW_COLUMNS = 'DATA_VIEW_COLUMNS'\n","\nexport interface BarProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n titleText: string\n titleSubtext: string\n colors: string []\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisInverse: boolean\n xAxisMinInterval: number\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisLabelWidth: number | undefined // y轴名称宽度\n yAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // y轴名称溢出操作\n yAxisLabelRotate: number // y轴名称旋转\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLabelFormatter: string\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string,\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n barWidth: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n isUseHorizontalAxis: boolean\n axisInverse: boolean\n isStack: boolean\n labelShow: boolean\n labelFontSize: string\n labelPosition: 'inside' | 'top' | 'bottom' | 'right' | 'left'\n labelColor: string\n}\n\nexport const barProps: BarProps = {\n name: '柱状图',\n type: 'bar',\n width: '400px',\n height: '400px',\n xAxisLabelFormatter: '{value}',\n yAxisLabelFormatter: '{value}',\n yAxisLineAlwaysDisplay: false,\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelInterval: 0,\n xAxisLabelColor: '#333',\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisLabelWidth: undefined,\n yAxisLabelRotate: 0,\n yAxisLabelOverflow: 'none',\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n barWidth: '40%',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n isUseHorizontalAxis: false,\n axisInverse: false,\n xAxisInverse: false,\n yAxisInverse: false,\n isStack: false,\n labelShow: false,\n labelFontSize: '12px',\n labelPosition: 'inside',\n labelColor: '',\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true\n}\n","export interface LineProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n legendShow: boolean,\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal' // 标记点大小\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string // 格式化\n xAxisInverse: boolean\n xAxisMinInterval: number\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n yAxisLabelFormatter: string // 格式化\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n tooltipFormatter: string\n tooltipShow: boolean\n toolboxShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n areaStyleOpacity: number\n}\n\nexport const lineProps = {\n name: '折线图',\n type: 'line',\n width: '400px',\n height: '400px',\n legendShow: true,\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisLabelFormatter: '{value}', // 格式化\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n yAxisLabelFormatter: '{value}',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n tooltipShow: true,\n tooltipFormatter: '{marker} {a} {c}',\n toolboxShow: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0\n}\n","\nexport interface PieProps{\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n backgroundColor: string\n tooltipShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n legendShow: boolean\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n legendTextStyleColor: string\n innerRadius: string\n outerRadius: string\n centerLeft: string\n centerTop: string\n minAngle: number\n labelShow: boolean\n labelFormatter: string\n labelFontSize: number\n labelPosition: 'outside' | 'inside' | 'center'\n labelLineShow: boolean\n labelColor: string\n isUseLabelColors: boolean\n labelLineLength: number\n labelLineLength2: number\n roseType: '' | 'radius' | 'area'\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n}\n\nexport const pieProps: PieProps = {\n name: '饼图',\n type: 'pie',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n backgroundColor: '',\n tooltipShow: true,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {b} {c} ({d}%)',\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'vertical',\n legendTop: 'top',\n legendLeft: 'left',\n innerRadius: '0%',\n outerRadius: '60%',\n centerLeft: '50%',\n centerTop: '50%',\n minAngle: 0,\n labelShow: true,\n labelColor: '#333',\n isUseLabelColors: false,\n labelFontSize: 12,\n labelPosition: 'outside',\n labelFormatter: '{b}\\\\n{d}%',\n labelLineShow: true,\n labelLineLength: 10,\n labelLineLength2: 15,\n roseType: '',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息'\n}\n","export interface CustomGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n option: { [key:string]: any }\n optionCode: string\n}\n\nexport const customGraphProps: CustomGraphProps = {\n name: '自定义图表',\n type: 'customGraph',\n width: '400px',\n height: '400px',\n option: {},\n optionCode: ''\n}\n","\nexport interface ComboGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string []\n titleText: string\n titleSubtext: string\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisMinInterval: number // 最小间距\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelRotate: number\n xAxisLabelOverflow: string\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n yAxisSplitLineShow: boolean // y轴展示分割线\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n seriesTypes: { [key: string]: any } []\n yAxis: { [key: string]: any } []\n yAxisMinInterval: number\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n areaStyleOpacity: number\n barWidth: string\n}\n\nexport const comboGraphProps: ComboGraphProps = {\n name: '组合图表',\n type: 'comboGraph',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelWidth: undefined,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n seriesTypes: [\n {\n type: 'bar',\n axisIndex: 0\n },\n {\n type: 'line',\n axisIndex: 0\n }\n ],\n yAxis: [\n {\n axisLabelFormatter: '{value}'\n },\n {\n axisLabelFormatter: '{value}'\n }\n ],\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0,\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n barWidth: '40%'\n}\n","import { barProps } from './bar'\nimport { lineProps } from './line'\nimport { pieProps } from './pie'\nimport { customGraphProps } from './custom-graph'\nimport { comboGraphProps } from './combo-graph'\n\nexport default {\n bar: barProps,\n line: lineProps,\n pie: pieProps,\n customGraph: customGraphProps,\n comboGraph: comboGraphProps\n}\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <draggable\n v-model=\"dataViewList\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n @start=\"onDragStart($event, dataViewList)\"\n >\n <template #item=\"{ element: dataView }\">\n <div class=\"column-item\">\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </template>\n </draggable>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect,\n Draggable\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n const copyItem = {\n ...dataView,\n label: dataView.name,\n name: dataView.label\n }\n sessionStorage.setItem('indicator-list-item', JSON.stringify(copyItem))\n }\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <draggable\n v-model=\"dataViewList\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n @start=\"onDragStart($event, dataViewList)\"\n >\n <template #item=\"{ element: dataView }\">\n <div class=\"column-item\">\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </template>\n </draggable>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect,\n Draggable\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n const copyItem = {\n ...dataView,\n label: dataView.name,\n name: dataView.label\n }\n sessionStorage.setItem('indicator-list-item', JSON.stringify(copyItem))\n }\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { inputToRGB, rgbToHex, rgbToHsv } from '@ctrl/tinycolor';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b;\n var hsv = rgbToHsv(r, g, b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v\n };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n var r = _ref2.r,\n g = _ref2.g,\n b = _ref2.b;\n return \"#\".concat(rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n var p = amount / 100;\n var rgb = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b\n };\n return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = inputToRGB(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = toHsv(pColor);\n var colorString = toHex(inputToRGB({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }));\n patterns.push(colorString);\n }\n\n patterns.push(toHex(pColor));\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = toHsv(pColor);\n\n var _colorString = toHex(inputToRGB({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }));\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref3) {\n var index = _ref3.index,\n opacity = _ref3.opacity;\n var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || '#141414'), inputToRGB(patterns[index]), opacity * 100));\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","// https://github.com/substack/insert-css\nvar containers = []; // will store container HTMLElement references\n\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container); // first time we see this container, create the necessary entries\n\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n } // try to get the correponding container + position styleElement, create it otherwise\n\n\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n } // strip potential UTF-8 BOM if css was read from a file\n\n\n if (css.charCodeAt(0) === 0xfeff) {\n css = css.substr(1, css.length);\n } // actually add the stylesheet\n\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css;\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n}\n\nexport default insertCss;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { nextTick, h } from 'vue';\nimport { generate as generateColor } from '@ant-design/colors';\nimport insertCss from './insert-css';\nexport function warn(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nexport function warning(valid, message) {\n warn(valid, \"[@ant-design/icons-vue] \".concat(message));\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nexport function isIconDefinition(target) {\n return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(attrs).reduce(function (acc, key) {\n var val = attrs[key];\n\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc[\"class\"];\n break;\n\n default:\n acc[key] = val;\n }\n\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return h(node.tag, _objectSpread({\n key: key\n }, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n }\n\n return h(node.tag, _objectSpread({\n key: key\n }, rootProps, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n} // These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n\nexport var svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n display: inline-block;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n line-height: 1;\\n}\\n\\n.anticon svg {\\n display: inline-block;\\n}\\n\\n.anticon::before {\\n display: none;\\n}\\n\\n.anticon .anticon-icon {\\n display: block;\\n}\\n\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n display: inline-block;\\n -webkit-animation: loadingCircle 1s infinite linear;\\n animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\";\nvar cssInjectedFlag = false;\nexport var useInsertStyles = function useInsertStyles() {\n var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles;\n nextTick(function () {\n if (!cssInjectedFlag) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n insertCss(styleStr, {\n prepend: true\n });\n }\n\n cssInjectedFlag = true;\n }\n });\n};","var _excluded = [\"icon\", \"primaryColor\", \"secondaryColor\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from '../utils';\nvar twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\n\nfunction setTwoToneColors(_ref) {\n var primaryColor = _ref.primaryColor,\n secondaryColor = _ref.secondaryColor;\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\n\nfunction getTwoToneColors() {\n return _objectSpread({}, twoToneColorPalette);\n}\n\nvar IconBase = function IconBase(props, context) {\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n icon = _props$context$attrs.icon,\n primaryColor = _props$context$attrs.primaryColor,\n secondaryColor = _props$context$attrs.secondaryColor,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var colors = twoToneColorPalette;\n\n if (primaryColor) {\n colors = {\n primaryColor: primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n\n useInsertStyles();\n warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n\n if (!isIconDefinition(icon)) {\n return null;\n }\n\n var target = icon;\n\n if (target && typeof target.icon === 'function') {\n target = _objectSpread({}, target, {\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n });\n }\n\n return generate(target.icon, \"svg-\".concat(target.name), _objectSpread({}, restProps, {\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n })); // },\n};\n\nIconBase.props = {\n icon: Object,\n primaryColor: String,\n secondaryColor: String,\n focusable: String\n};\nIconBase.inheritAttrs = false;\nIconBase.displayName = 'IconBase';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport VueIcon from './IconBase';\nimport { normalizeTwoToneColors } from '../utils';\nexport function setTwoToneColor(twoToneColor) {\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return VueIcon.setTwoToneColors({\n primaryColor: primaryColor,\n secondaryColor: secondaryColor\n });\n}\nexport function getTwoToneColor() {\n var colors = VueIcon.getTwoToneColors();\n\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n\n return [colors.primaryColor, colors.secondaryColor];\n}","var _excluded = [\"class\", \"icon\", \"spin\", \"rotate\", \"tabindex\", \"twoToneColor\", \"onClick\"];\nimport { createVNode as _createVNode } from \"vue\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport VueIcon from './IconBase';\nimport { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';\nimport { normalizeTwoToneColors } from '../utils'; // Initial setting\n\nsetTwoToneColor('#1890ff');\n\nvar Icon = function Icon(props, context) {\n var _classObj;\n\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n cls = _props$context$attrs[\"class\"],\n icon = _props$context$attrs.icon,\n spin = _props$context$attrs.spin,\n rotate = _props$context$attrs.rotate,\n tabindex = _props$context$attrs.tabindex,\n twoToneColor = _props$context$attrs.twoToneColor,\n onClick = _props$context$attrs.onClick,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var classObj = (_classObj = {\n anticon: true\n }, _defineProperty(_classObj, \"anticon-\".concat(icon.name), Boolean(icon.name)), _defineProperty(_classObj, cls, cls), _classObj);\n var svgClassString = spin === '' || !!spin || icon.name === 'loading' ? 'anticon-spin' : '';\n var iconTabIndex = tabindex;\n\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n restProps.tabindex = iconTabIndex;\n }\n\n var svgStyle = rotate ? {\n msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n transform: \"rotate(\".concat(rotate, \"deg)\")\n } : undefined;\n\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return _createVNode(\"span\", _objectSpread({\n \"role\": \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n \"onClick\": onClick,\n \"class\": classObj\n }), [_createVNode(VueIcon, {\n \"class\": svgClassString,\n \"icon\": icon,\n \"primaryColor\": primaryColor,\n \"secondaryColor\": secondaryColor,\n \"style\": svgStyle\n }, null)]);\n};\n\nIcon.props = {\n spin: Boolean,\n rotate: Number,\n icon: Object,\n twoToneColor: String\n};\nIcon.displayName = 'AntdIcon';\nIcon.inheritAttrs = false;\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","// This icon file is generated automatically.\nvar AppstoreAddOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"appstore-add\", \"theme\": \"outlined\" };\nexport default AppstoreAddOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport AppstoreAddOutlinedSvg from \"@ant-design/icons-svg/es/asn/AppstoreAddOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar AppstoreAddOutlined = function AppstoreAddOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": AppstoreAddOutlinedSvg\n }), null);\n};\n\nAppstoreAddOutlined.displayName = 'AppstoreAddOutlined';\nAppstoreAddOutlined.inheritAttrs = false;\nexport default AppstoreAddOutlined;","// This icon file is generated automatically.\nvar CaretDownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"outlined\" };\nexport default CaretDownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretDownOutlined = function CaretDownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretDownOutlinedSvg\n }), null);\n};\n\nCaretDownOutlined.displayName = 'CaretDownOutlined';\nCaretDownOutlined.inheritAttrs = false;\nexport default CaretDownOutlined;","// This icon file is generated automatically.\nvar CaretRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\" } }] }, \"name\": \"caret-right\", \"theme\": \"outlined\" };\nexport default CaretRightOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretRightOutlined = function CaretRightOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretRightOutlinedSvg\n }), null);\n};\n\nCaretRightOutlined.displayName = 'CaretRightOutlined';\nCaretRightOutlined.inheritAttrs = false;\nexport default CaretRightOutlined;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CloseOutlined = function CloseOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CloseOutlinedSvg\n }), null);\n};\n\nCloseOutlined.displayName = 'CloseOutlined';\nCloseOutlined.inheritAttrs = false;\nexport default CloseOutlined;","// This icon file is generated automatically.\nvar CopyOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z\" } }] }, \"name\": \"copy\", \"theme\": \"outlined\" };\nexport default CopyOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CopyOutlinedSvg from \"@ant-design/icons-svg/es/asn/CopyOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CopyOutlined = function CopyOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CopyOutlinedSvg\n }), null);\n};\n\nCopyOutlined.displayName = 'CopyOutlined';\nCopyOutlined.inheritAttrs = false;\nexport default CopyOutlined;","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DeleteOutlined = function DeleteOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DeleteOutlinedSvg\n }), null);\n};\n\nDeleteOutlined.displayName = 'DeleteOutlined';\nDeleteOutlined.inheritAttrs = false;\nexport default DeleteOutlined;","// This icon file is generated automatically.\nvar DoubleRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M533.2 492.3L277.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H188c-6.7 0-10.4 7.7-6.3 12.9L447.1 512 181.7 851.1A7.98 7.98 0 00188 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5zm304 0L581.9 166.1c-3-3.9-7.7-6.1-12.6-6.1H492c-6.7 0-10.4 7.7-6.3 12.9L751.1 512 485.7 851.1A7.98 7.98 0 00492 864h77.3c4.9 0 9.6-2.3 12.6-6.1l255.3-326.1c9.1-11.7 9.1-27.9 0-39.5z\" } }] }, \"name\": \"double-right\", \"theme\": \"outlined\" };\nexport default DoubleRightOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DoubleRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/DoubleRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DoubleRightOutlined = function DoubleRightOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DoubleRightOutlinedSvg\n }), null);\n};\n\nDoubleRightOutlined.displayName = 'DoubleRightOutlined';\nDoubleRightOutlined.inheritAttrs = false;\nexport default DoubleRightOutlined;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DownOutlined = function DownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DownOutlinedSvg\n }), null);\n};\n\nDownOutlined.displayName = 'DownOutlined';\nDownOutlined.inheritAttrs = false;\nexport default DownOutlined;","// This icon file is generated automatically.\nvar MinusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"minus-circle\", \"theme\": \"outlined\" };\nexport default MinusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport MinusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/MinusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar MinusCircleOutlined = function MinusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": MinusCircleOutlinedSvg\n }), null);\n};\n\nMinusCircleOutlined.displayName = 'MinusCircleOutlined';\nMinusCircleOutlined.inheritAttrs = false;\nexport default MinusCircleOutlined;","// This icon file is generated automatically.\nvar PlusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"plus-circle\", \"theme\": \"outlined\" };\nexport default PlusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusCircleOutlined = function PlusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusCircleOutlinedSvg\n }), null);\n};\n\nPlusCircleOutlined.displayName = 'PlusCircleOutlined';\nPlusCircleOutlined.inheritAttrs = false;\nexport default PlusCircleOutlined;","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusOutlined = function PlusOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusOutlinedSvg\n }), null);\n};\n\nPlusOutlined.displayName = 'PlusOutlined';\nPlusOutlined.inheritAttrs = false;\nexport default PlusOutlined;","// This icon file is generated automatically.\nvar SettingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" } }] }, \"name\": \"setting\", \"theme\": \"outlined\" };\nexport default SettingOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport SettingOutlinedSvg from \"@ant-design/icons-svg/es/asn/SettingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar SettingOutlined = function SettingOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": SettingOutlinedSvg\n }), null);\n};\n\nSettingOutlined.displayName = 'SettingOutlined';\nSettingOutlined.inheritAttrs = false;\nexport default SettingOutlined;","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n :class=\"setItemDisabled(dataSource.dataViewColumns) ? 'column-disabled' : ''\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <draggable\n v-model=\"dataSource.dataViewColumns\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n :disabled=\"setItemDisabled(dataSource.dataViewColumns)\"\n @start=\"onDragStart($event, dataSource.dataViewColumns)\"\n >\n <template #item=\"{ element: dataViewColumn }\">\n <div class=\"column-child-item\">\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.label }}\n </span>\n </div>\n </template>\n </draggable>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination,\n Draggable\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n if (column.title) {\n column.label = column.title\n }\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX' | 'BUILT_IN_DIM') => {\n const map = {\n DIM: '维度',\n BUILT_IN_DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n // 维度列表\n const dimensions = computed<any>(() => {\n const types = ['classificationList', 'rowHeaderList']\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && types.includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options\n })\n const setItemDisabled = (dataViewColumns: any[] = []) => {\n // 维度不存在指标中,则禁用该指标中所有的维度和值\n let lostDim = false\n for (const item of unref(dimensions)) {\n const target = dataViewColumns.find(v => v.typeGuid === item.typeGuid)\n if (!target) {\n lostDim = true\n break\n }\n }\n return lostDim\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n sessionStorage.setItem('indicator-list-item', JSON.stringify(dataView))\n }\n }\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText,\n setItemDisabled,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n cursor: pointer;\n}\n\n.column-disabled {\n .column-item {\n color: #b3b3b3;\n :deep(.anticon) {\n color: #b3b3b3;\n }\n }\n .column-child-item {\n color: #b3b3b3;\n }\n}\n</style>\n","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n :class=\"setItemDisabled(dataSource.dataViewColumns) ? 'column-disabled' : ''\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <draggable\n v-model=\"dataSource.dataViewColumns\"\n :group=\"{\n name: 'cardItem',\n pull: 'clone',\n put: false\n }\"\n item-key=\"id\"\n :sort=\"false\"\n :disabled=\"setItemDisabled(dataSource.dataViewColumns)\"\n @start=\"onDragStart($event, dataSource.dataViewColumns)\"\n >\n <template #item=\"{ element: dataViewColumn }\">\n <div class=\"column-child-item\">\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.label }}\n </span>\n </div>\n </template>\n </draggable>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport Draggable from 'vuedraggable'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination,\n Draggable\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n if (column.title) {\n column.label = column.title\n }\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX' | 'BUILT_IN_DIM') => {\n const map = {\n DIM: '维度',\n BUILT_IN_DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n // 维度列表\n const dimensions = computed<any>(() => {\n const types = ['classificationList', 'rowHeaderList']\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && types.includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options\n })\n const setItemDisabled = (dataViewColumns: any[] = []) => {\n // 维度不存在指标中,则禁用该指标中所有的维度和值\n let lostDim = false\n for (const item of unref(dimensions)) {\n const target = dataViewColumns.find(v => v.typeGuid === item.typeGuid)\n if (!target) {\n lostDim = true\n break\n }\n }\n return lostDim\n }\n\n const onDragStart = (\n event: any,\n dataViews: { [key: string]: any }[]\n ) => {\n const dataView = dataViews[event.oldIndex]\n if (dataView) {\n sessionStorage.setItem('indicator-list-item', JSON.stringify(dataView))\n }\n }\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText,\n setItemDisabled,\n onDragStart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n cursor: pointer;\n}\n\n.column-disabled {\n .column-item {\n color: #b3b3b3;\n :deep(.anticon) {\n color: #b3b3b3;\n }\n }\n .column-child-item {\n color: #b3b3b3;\n }\n}\n</style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export default {\n mounted (el: HTMLElement) {\n // 自动聚焦\n el.focus()\n }\n}\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","/**\r\n * 字符串1 中是否包含 字符串2 (会全部转成小写)\r\n * @param v1 字符串1\r\n * @param v2 字符串2 | 字符串数组\r\n * @constructor\r\n */\r\nexport const lowerCaseIncludes = (v1: any, v2: any): boolean => {\r\n if (typeof v1 === 'string' && typeof v2 === 'string') {\r\n return v1.toLocaleLowerCase().includes(v2.toLocaleLowerCase())\r\n } else if (typeof v1 === 'string' && Array.isArray(v2)) {\r\n const len = v2.length\r\n for (let i = 0; i < len; i++) {\r\n const s = v2[i]\r\n if (typeof s === 'string' && v1.toLocaleLowerCase().includes(s.toLocaleLowerCase())) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport const handleFormatter = (formatter: string) => {\r\n return formatter.replace(/\\\\n/g, '\\n')\r\n}\r\n\r\nexport const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\r\n","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n @change=\"onFieldChange\"\n >\n <template v-for=\"(option, _index) in fieldOptions\" :key=\"_index\">\n <a-select-option :value=\"option.value\">\n <span :title=\"option.label\">{{ option.label }}</span>\n </a-select-option>\n </template>\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"data-type\" v-show=\"['TEXT', 'NUMBER'].includes(condition.fieldType) && condition.rule === 'EQUAL'\">\n <a-select\n style=\"width: 100%;\"\n v-model:value=\"condition.dataType\"\n @change=\"onDataTypeChange\"\n >\n <template v-for=\"(option, _index) in dataTypeList\" :key=\"_index\">\n <a-select-option :value=\"option.value\">{{ option.label }}</a-select-option>\n </template>\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-select\n class=\"field-value\"\n v-else-if=\"['TEXT', 'NUMBER'].includes(condition.fieldType) && condition.rule === 'EQUAL' && condition.dataType === 'component'\"\n v-model:value=\"condition.fieldValue\"\n :options=\"controlList\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n SelectOption as ASelectOption,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, CHANGE_CONDITION, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\nimport { hasOwn } from '@/utils/util'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber,\n ASelectOption\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const dataViewColumns = inject(DATA_VIEW_COLUMNS) as any\n const controlList = computed(() => unref(graphicConfig)?.controlList?.map((item: any) => {\n const { keyName = '', id = '', prop = '' } = item\n let propName = ''\n if (prop === 'startTime') {\n propName = '-开始时间值'\n } else if (prop === 'endTime') {\n propName = '-结束时间值'\n }\n return {\n ...item,\n label: `${keyName || id}${propName}`,\n value: `${keyName || id}-${prop}`\n }\n }))\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n const dataTypeList = [\n { label: '自定义值', value: '' },\n { label: '组件值', value: 'component' }\n ]\n // const { getDataList } = inject(DATA_LIST, {\n // getDataList: () => ([] as { key:string } [])\n // })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid,\n dataType: ''\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n let result = []\n if (['classificationList', 'seriesList', 'rowHeaderList'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n result = options\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators'].includes(type)) {\n // return unref(getDataList())\n result = unref(dataViewColumns)\n }\n return result.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label,\n value: v.name\n }\n })\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (value: string) => {\n const option = unref(fieldOptions).find(v => v.value === value) || {}\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' },\n { label: '等于', value: 'EQUAL' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const onDataTypeChange = () => {\n unref(condition).fieldValue = ''\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n watch(condition, (v) => {\n if (!hasOwn(v, 'dataType')) {\n condition.value.dataType = ''\n }\n }, {\n deep: true\n })\n\n onMounted(() => {\n condition.value.dataType = props.data?.dataType || ''\n if (unref(condition).fieldType === 'DATE') {\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onDataTypeChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n dataTypeList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.data-type {\n width: 100px;\n margin-left: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n @change=\"onFieldChange\"\n >\n <template v-for=\"(option, _index) in fieldOptions\" :key=\"_index\">\n <a-select-option :value=\"option.value\">\n <span :title=\"option.label\">{{ option.label }}</span>\n </a-select-option>\n </template>\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"data-type\" v-show=\"['TEXT', 'NUMBER'].includes(condition.fieldType) && condition.rule === 'EQUAL'\">\n <a-select\n style=\"width: 100%;\"\n v-model:value=\"condition.dataType\"\n @change=\"onDataTypeChange\"\n >\n <template v-for=\"(option, _index) in dataTypeList\" :key=\"_index\">\n <a-select-option :value=\"option.value\">{{ option.label }}</a-select-option>\n </template>\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-select\n class=\"field-value\"\n v-else-if=\"['TEXT', 'NUMBER'].includes(condition.fieldType) && condition.rule === 'EQUAL' && condition.dataType === 'component'\"\n v-model:value=\"condition.fieldValue\"\n :options=\"controlList\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n SelectOption as ASelectOption,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, CHANGE_CONDITION, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\nimport { hasOwn } from '@/utils/util'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber,\n ASelectOption\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const dataViewColumns = inject(DATA_VIEW_COLUMNS) as any\n const controlList = computed(() => unref(graphicConfig)?.controlList?.map((item: any) => {\n const { keyName = '', id = '', prop = '' } = item\n let propName = ''\n if (prop === 'startTime') {\n propName = '-开始时间值'\n } else if (prop === 'endTime') {\n propName = '-结束时间值'\n }\n return {\n ...item,\n label: `${keyName || id}${propName}`,\n value: `${keyName || id}-${prop}`\n }\n }))\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n const dataTypeList = [\n { label: '自定义值', value: '' },\n { label: '组件值', value: 'component' }\n ]\n // const { getDataList } = inject(DATA_LIST, {\n // getDataList: () => ([] as { key:string } [])\n // })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid,\n dataType: ''\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n let result = []\n if (['classificationList', 'seriesList', 'rowHeaderList'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n result = options\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators'].includes(type)) {\n // return unref(getDataList())\n result = unref(dataViewColumns)\n }\n return result.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label,\n value: v.name\n }\n })\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (value: string) => {\n const option = unref(fieldOptions).find(v => v.value === value) || {}\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' },\n { label: '等于', value: 'EQUAL' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n // { label: '前N个', value: 'TOP' },\n // { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const onDataTypeChange = () => {\n unref(condition).fieldValue = ''\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n watch(condition, (v) => {\n if (!hasOwn(v, 'dataType')) {\n condition.value.dataType = ''\n }\n }, {\n deep: true\n })\n\n onMounted(() => {\n condition.value.dataType = props.data?.dataType || ''\n if (unref(condition).fieldType === 'DATE') {\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onDataTypeChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n dataTypeList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.data-type {\n width: 100px;\n margin-left: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\r\n <div class=\"truncations\">\r\n <!-- <div class=\"title\">截断配置</div> -->\r\n <div\r\n class=\"item\"\r\n v-for=\"(item, _index) in truncationList\"\r\n :key=\"_index\"\r\n >\r\n <div class=\"rule\">\r\n <a-select\r\n style=\"width: 100%;\"\r\n v-model:value=\"item.rule\"\r\n :options=\"ruleOptions\"\r\n >\r\n </a-select>\r\n </div>\r\n <div class=\"field-value\">\r\n N=\r\n <a-input-number v-model:value=\"item.num\" :min=\"0\" />\r\n </div>\r\n <div class=\"field-value\">\r\n <div class=\"text\">将其余项设为</div>\r\n <a-input v-model:value=\"item.name\" style=\"width: 100px;margin: 0 10px;\"/>\r\n <div class=\"text\">分组</div>\r\n </div>\r\n <div class=\"clear-truncation\" @click=\"clearData(item)\">清空</div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { PropType, defineComponent, onMounted, ref, watch } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Input as AInput,\r\n InputNumber as AInputNumber\r\n} from 'ant-design-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'TruncationList',\r\n props: {\r\n list: {\r\n type: Array as PropType<any[]>,\r\n default: () => ([])\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AInput,\r\n AInputNumber\r\n },\r\n setup (props, { emit }) {\r\n const ruleOptions = [\r\n { label: '前N个', value: 'TOP' },\r\n { label: '后N个', value: 'BOTTOM' }\r\n ]\r\n const truncationList = ref<any[]>([])\r\n watch(truncationList, (val) => {\r\n if (val?.length) {\r\n emit('update', val)\r\n }\r\n }, {\r\n deep: true\r\n })\r\n onMounted(() => {\r\n if (props.list?.length) {\r\n truncationList.value = cloneDeep(props.list)\r\n } else {\r\n truncationList.value = [{\r\n num: 0,\r\n rule: '',\r\n name: '其他'\r\n }]\r\n }\r\n })\r\n\r\n const clearData = (item: any) => {\r\n item.rule = ''\r\n item.num = 0\r\n item.name = ''\r\n }\r\n return {\r\n ruleOptions,\r\n truncationList,\r\n clearData\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.truncations {\r\n width: 100%;\r\n margin-top: 10px;\r\n background-color: #fff;\r\n border: 1px solid #e8e8e8;\r\n padding: 8px;\r\n .title {\r\n font-size: 16px;\r\n color: #333;\r\n padding-bottom: 8px;\r\n }\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n }\r\n .field-value {\r\n display: flex;\r\n align-items: center;\r\n margin-left: 20px;\r\n .text {\r\n word-break: keep-all;\r\n }\r\n }\r\n\r\n .rule {\r\n width: 180px;\r\n }\r\n\r\n .clear-truncation {\r\n margin: auto 0 auto auto;\r\n color: red;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"truncations\">\r\n <!-- <div class=\"title\">截断配置</div> -->\r\n <div\r\n class=\"item\"\r\n v-for=\"(item, _index) in truncationList\"\r\n :key=\"_index\"\r\n >\r\n <div class=\"rule\">\r\n <a-select\r\n style=\"width: 100%;\"\r\n v-model:value=\"item.rule\"\r\n :options=\"ruleOptions\"\r\n >\r\n </a-select>\r\n </div>\r\n <div class=\"field-value\">\r\n N=\r\n <a-input-number v-model:value=\"item.num\" :min=\"0\" />\r\n </div>\r\n <div class=\"field-value\">\r\n <div class=\"text\">将其余项设为</div>\r\n <a-input v-model:value=\"item.name\" style=\"width: 100px;margin: 0 10px;\"/>\r\n <div class=\"text\">分组</div>\r\n </div>\r\n <div class=\"clear-truncation\" @click=\"clearData(item)\">清空</div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { PropType, defineComponent, onMounted, ref, watch } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Input as AInput,\r\n InputNumber as AInputNumber\r\n} from 'ant-design-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'TruncationList',\r\n props: {\r\n list: {\r\n type: Array as PropType<any[]>,\r\n default: () => ([])\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AInput,\r\n AInputNumber\r\n },\r\n setup (props, { emit }) {\r\n const ruleOptions = [\r\n { label: '前N个', value: 'TOP' },\r\n { label: '后N个', value: 'BOTTOM' }\r\n ]\r\n const truncationList = ref<any[]>([])\r\n watch(truncationList, (val) => {\r\n if (val?.length) {\r\n emit('update', val)\r\n }\r\n }, {\r\n deep: true\r\n })\r\n onMounted(() => {\r\n if (props.list?.length) {\r\n truncationList.value = cloneDeep(props.list)\r\n } else {\r\n truncationList.value = [{\r\n num: 0,\r\n rule: '',\r\n name: '其他'\r\n }]\r\n }\r\n })\r\n\r\n const clearData = (item: any) => {\r\n item.rule = ''\r\n item.num = 0\r\n item.name = ''\r\n }\r\n return {\r\n ruleOptions,\r\n truncationList,\r\n clearData\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.truncations {\r\n width: 100%;\r\n margin-top: 10px;\r\n background-color: #fff;\r\n border: 1px solid #e8e8e8;\r\n padding: 8px;\r\n .title {\r\n font-size: 16px;\r\n color: #333;\r\n padding-bottom: 8px;\r\n }\r\n .item {\r\n display: flex;\r\n align-items: center;\r\n }\r\n .field-value {\r\n display: flex;\r\n align-items: center;\r\n margin-left: 20px;\r\n .text {\r\n word-break: keep-all;\r\n }\r\n }\r\n\r\n .rule {\r\n width: 180px;\r\n }\r\n\r\n .clear-truncation {\r\n margin: auto 0 auto auto;\r\n color: red;\r\n cursor: pointer;\r\n opacity: 0.7;\r\n &:hover {\r\n opacity: 1;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n paddingTop: '10px'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <a-tabs v-model:activeKey=\"activeKey\" v-if=\"type === 'classificationList'\">\n <a-tab-pane key=\"1\" tab=\"过滤条件\" style=\"overflow: auto;\">\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-tab-pane>\n <a-tab-pane key=\"2\" tab=\"截断配置\">\n <truncation-list\n :list=\"truncationList\"\n @update=\"onUpdatetruncation\"\n />\n </a-tab-pane>\n </a-tabs>\n <template v-else>\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </template>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject, computed } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton,\n Tabs as ATabs,\n TabPane as ATabPane\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport TruncationList from './TruncationList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n TruncationList,\n AModal,\n AButton,\n ATabs,\n ATabPane\n },\n setup (props, { expose }) {\n const activeKey = ref('1')\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataSourceId = computed(() => unref(graphicConfig)?.dataSourceId)\n const conditionList = ref<{ [key: string]: any } []>([])\n const truncationList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible) {\n if (Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n if (Array.isArray(props.item?.truncations)) {\n truncationList.value = cloneDeep(props.item?.truncations) || []\n }\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const onUpdatetruncation = (list: any[]) => {\n isDataChange = true\n truncationList.value = list\n }\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n if (props.type === 'classificationList' && unref(truncationList)?.length) {\n list[props.index].truncations = unref(truncationList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const PAGE_ID = (window as any)?.config?.pageId\n const dataViewColumns = ref([])\n provide(DATA_VIEW_COLUMNS, dataViewColumns)\n const getHrpIndexWithComplex = async (indexGuid: string) => {\n if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n hrpIndexGuid: indexGuid,\n indexGuid\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.dataViewColumns?.length) {\n dataViewColumns.value = data.dataViewColumns\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data && visible.value) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n truncationList,\n addCondition,\n onUpdatetruncation,\n activeKey\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n paddingTop: '10px'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <a-tabs v-model:activeKey=\"activeKey\" v-if=\"type === 'classificationList'\">\n <a-tab-pane key=\"1\" tab=\"过滤条件\" style=\"overflow: auto;\">\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-tab-pane>\n <a-tab-pane key=\"2\" tab=\"截断配置\">\n <truncation-list\n :list=\"truncationList\"\n @update=\"onUpdatetruncation\"\n />\n </a-tab-pane>\n </a-tabs>\n <template v-else>\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition()\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </template>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject, computed } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton,\n Tabs as ATabs,\n TabPane as ATabPane\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport TruncationList from './TruncationList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, DATA_VIEW_COLUMNS } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n TruncationList,\n AModal,\n AButton,\n ATabs,\n ATabPane\n },\n setup (props, { expose }) {\n const activeKey = ref('1')\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataSourceId = computed(() => unref(graphicConfig)?.dataSourceId)\n const conditionList = ref<{ [key: string]: any } []>([])\n const truncationList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible) {\n if (Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n if (Array.isArray(props.item?.truncations)) {\n truncationList.value = cloneDeep(props.item?.truncations) || []\n }\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const onUpdatetruncation = (list: any[]) => {\n isDataChange = true\n truncationList.value = list\n }\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n if (props.type === 'classificationList' && unref(truncationList)?.length) {\n list[props.index].truncations = unref(truncationList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const PAGE_ID = (window as any)?.config?.pageId\n const dataViewColumns = ref([])\n provide(DATA_VIEW_COLUMNS, dataViewColumns)\n const getHrpIndexWithComplex = async (indexGuid: string) => {\n if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n hrpIndexGuid: indexGuid,\n indexGuid\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.dataViewColumns?.length) {\n dataViewColumns.value = data.dataViewColumns\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data && visible.value) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n truncationList,\n addCondition,\n onUpdatetruncation,\n activeKey\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","import { urlAlphabet } from './url-alphabet/index.js'\nif (false) {\n if (\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative' &&\n typeof crypto === 'undefined'\n ) {\n throw new Error(\n 'React Native does not have a built-in secure random generator. ' +\n 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' +\n 'For secure IDs, import `react-native-get-random-values` ' +\n 'before Nano ID.'\n )\n }\n if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') {\n throw new Error(\n 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' +\n ' before importing Nano ID to fix IE 11 support'\n )\n }\n if (typeof crypto === 'undefined') {\n throw new Error(\n 'Your browser does not have secure random generator. ' +\n 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n )\n }\n}\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, size, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * size) / alphabet.length)\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n let byte = bytes[size] & 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte < 63) {\n id += '_'\n } else {\n id += '-'\n }\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"selectedElem(field.label, 'name')\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n id=\"calTextArea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n <div class=\"cal_right_bottom\">\n <ul class=\"cal_fu\">\n <li\n v-for=\"(item, index) in calculMethods\"\n @click=\"selectedElem(item, 'symbol')\"\n :key=\"index\"\n >\n {{ item }}\n </li>\n </ul>\n <a-popover\n placement=\"topRight\"\n trigger=\"click\"\n overlayClassName=\"func-popover\">\n <template #content>\n <div class=\"function-wrap\">\n <div class=\"wrap-search\">\n <a-input-search\n v-model:value=\"searchFuncValue\"\n style=\"margin-bottom: 8px\"\n placeholder=\"请输入关键字搜索\"\n />\n </div>\n <div class=\"tree-box\">\n <a-tree\n :expanded-keys=\"expandedKeys\"\n :auto-expand-parent=\"autoExpandParent\"\n :tree-data=\"funcDescsData\"\n @expand=\"onExpand\"\n >\n <template #title=\"{ title, leaf }\">\n <span v-if=\"title.indexOf(searchFuncValue) > -1\">\n {{ title.substr(0, title.indexOf(searchFuncValue)) }}\n <span style=\"color: #f50\">{{ searchFuncValue }}</span>\n {{ title.substr(title.indexOf(searchFuncValue) + searchFuncValue.length) }}\n </span>\n <span v-else>{{ title }}</span>\n <span\n v-if=\"leaf\"\n class=\"insertsty\"\n @click=\"selectedElem(title, 'function')\"\n >插入</span>\n </template>\n </a-tree>\n </div>\n </div>\n </template>\n <span class=\"cal_a\">\n 更多函数\n <double-right-outlined style=\"font-size: 12px;margin: 2px 0 0 2px;color: #1890ff;\"/>\n </span>\n </a-popover>\n </div>\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject, ref, onMounted, watch } from 'vue'\nimport { GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport {\n Row as ARow,\n Col as ACol,\n Textarea as ATextarea,\n Popover as APopover,\n InputSearch as AInputSearch,\n Tree as ATree,\n type TreeProps\n} from 'ant-design-vue'\nimport { DoubleRightOutlined } from '@ant-design/icons-vue'\nconst getParentKey = (\n key: string | number,\n tree: TreeProps['treeData']\n): string | number | undefined => {\n let parentKey\n for (let i = 0; i < tree.length; i++) {\n const node = tree[i]\n if (node.children) {\n if (node.children.some(item => item.key === key)) {\n parentKey = node.key\n } else if (getParentKey(key, node.children)) {\n parentKey = getParentKey(key, node.children)\n }\n }\n }\n return parentKey\n}\n\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n },\n item: {\n type: Object,\n default: () => ({})\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea,\n APopover,\n AInputSearch,\n ATree,\n DoubleRightOutlined\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n // return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n return fieldList?.filter((field) => field.id !== props.item.id) || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const searchFuncValue = ref('')\n const insertText = (str: string) => {\n const obj: any = document.getElementById('calTextArea')\n let tmpStr = myValue.value\n if ((document as any).selection) {\n const sel = (document as any).selection.createRange()\n sel.text = str\n } else if (\n typeof obj.selectionStart === 'number' &&\n typeof obj.selectionEnd === 'number'\n ) {\n const startPos = obj.selectionStart\n const endPos = obj.selectionEnd\n let cursorPos = startPos\n tmpStr =\n tmpStr.substring(0, startPos) +\n str +\n tmpStr.substring(endPos, tmpStr.length)\n cursorPos += str.length\n obj.selectionStart = obj.selectionEnd = cursorPos\n } else {\n tmpStr += str\n }\n myValue.value = tmpStr\n }\n const calculMethods = ['+', '-', '*', '/', '(', ')']\n const selectedElem = (value: string, type: string) => {\n let inputVal = ''\n switch (type) {\n case 'name': {\n // 名称\n inputVal = '${' + value + '}'\n break\n }\n case 'function': {\n // 函数\n inputVal = value + '()'\n break\n }\n default: {\n // 加减符号\n inputVal = value\n }\n }\n insertText(inputVal)\n }\n const dataList: TreeProps['treeData'] = []\n const expandedKeys = ref<(string | number)[]>([])\n const autoExpandParent = ref<boolean>(true)\n const funcDescsData = ref([])\n const setDataList = (data: any) => {\n for (const item of data) {\n if (item?.children?.length) {\n setDataList(item.children)\n } else {\n dataList.push({\n key: item.key,\n title: item.title\n })\n }\n }\n }\n const getFuncDescs = async () => {\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/funcdescs`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.length) {\n setDataList(data)\n funcDescsData.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onExpand = (keys: string[]) => {\n expandedKeys.value = keys\n autoExpandParent.value = false\n }\n watch(searchFuncValue, value => {\n const expanded = dataList\n .map((item: any) => {\n if (item.title.indexOf(value) > -1) {\n return getParentKey(item.key, funcDescsData.value)\n }\n return null\n })\n .filter((item, i, self) => item && self.indexOf(item) === i)\n expandedKeys.value = expanded\n searchFuncValue.value = value\n autoExpandParent.value = true\n })\n onMounted(() => {\n getFuncDescs()\n })\n return {\n fieldList,\n myValue,\n calculMethods,\n funcDescsData,\n searchFuncValue,\n expandedKeys,\n autoExpandParent,\n selectedElem,\n onExpand\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n // border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n border: 1px solid #d9d9d9;\n border-right: none;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n border-radius: 0;\n}\n.cal_right_bottom {\n height: 26px;\n width: 100%;\n border: 1px solid #d9d9d9;\n border-top: none;\n line-height: 26px;\n .cal_fu {\n padding: 0;\n width: 200px;\n float: left;\n margin: 0;\n li {\n width: 20px;\n float: left;\n text-align: center;\n margin: 0 5px;\n cursor: pointer;\n &:hover {\n background: #eff1f4;\n }\n }\n }\n .cal_a {\n color: #1890ff;\n font-size: 13px;\n cursor: pointer;\n display: flex;\n align-items: center;\n float: right;\n margin-right: 10px;\n height: 13px;\n margin-top: 6px;\n &:hover {\n color: #40a9ff;\n }\n }\n}\n.function-wrap {\n width: 240px;\n height: 200px;\n .wrap-search {\n height: 40px;\n background-color: #ffffff;\n border-bottom: 1px solid #d9d9d9;\n padding: 0 10px;\n }\n .tree-box {\n height: calc(100% - 40px);\n overflow: auto;\n }\n}\n</style>\n<style lang=\"less\">\n.func-popover {\n .ant-popover-inner-content {\n padding: 12px 0;\n }\n .insertsty {\n color: #1890ff;\n margin-left: 6px;\n display: none;\n &:hover {\n color: red;\n }\n }\n .ant-tree-title {\n &:hover {\n .insertsty {\n display: inline-block;\n }\n }\n }\n}\n</style>\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"selectedElem(field.label, 'name')\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n id=\"calTextArea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n <div class=\"cal_right_bottom\">\n <ul class=\"cal_fu\">\n <li\n v-for=\"(item, index) in calculMethods\"\n @click=\"selectedElem(item, 'symbol')\"\n :key=\"index\"\n >\n {{ item }}\n </li>\n </ul>\n <a-popover\n placement=\"topRight\"\n trigger=\"click\"\n overlayClassName=\"func-popover\">\n <template #content>\n <div class=\"function-wrap\">\n <div class=\"wrap-search\">\n <a-input-search\n v-model:value=\"searchFuncValue\"\n style=\"margin-bottom: 8px\"\n placeholder=\"请输入关键字搜索\"\n />\n </div>\n <div class=\"tree-box\">\n <a-tree\n :expanded-keys=\"expandedKeys\"\n :auto-expand-parent=\"autoExpandParent\"\n :tree-data=\"funcDescsData\"\n @expand=\"onExpand\"\n >\n <template #title=\"{ title, leaf }\">\n <span v-if=\"title.indexOf(searchFuncValue) > -1\">\n {{ title.substr(0, title.indexOf(searchFuncValue)) }}\n <span style=\"color: #f50\">{{ searchFuncValue }}</span>\n {{ title.substr(title.indexOf(searchFuncValue) + searchFuncValue.length) }}\n </span>\n <span v-else>{{ title }}</span>\n <span\n v-if=\"leaf\"\n class=\"insertsty\"\n @click=\"selectedElem(title, 'function')\"\n >插入</span>\n </template>\n </a-tree>\n </div>\n </div>\n </template>\n <span class=\"cal_a\">\n 更多函数\n <double-right-outlined style=\"font-size: 12px;margin: 2px 0 0 2px;color: #1890ff;\"/>\n </span>\n </a-popover>\n </div>\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject, ref, onMounted, watch } from 'vue'\nimport { GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport {\n Row as ARow,\n Col as ACol,\n Textarea as ATextarea,\n Popover as APopover,\n InputSearch as AInputSearch,\n Tree as ATree,\n type TreeProps\n} from 'ant-design-vue'\nimport { DoubleRightOutlined } from '@ant-design/icons-vue'\nconst getParentKey = (\n key: string | number,\n tree: TreeProps['treeData']\n): string | number | undefined => {\n let parentKey\n for (let i = 0; i < tree.length; i++) {\n const node = tree[i]\n if (node.children) {\n if (node.children.some(item => item.key === key)) {\n parentKey = node.key\n } else if (getParentKey(key, node.children)) {\n parentKey = getParentKey(key, node.children)\n }\n }\n }\n return parentKey\n}\n\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n },\n item: {\n type: Object,\n default: () => ({})\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea,\n APopover,\n AInputSearch,\n ATree,\n DoubleRightOutlined\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n // return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n return fieldList?.filter((field) => field.id !== props.item.id) || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const searchFuncValue = ref('')\n const insertText = (str: string) => {\n const obj: any = document.getElementById('calTextArea')\n let tmpStr = myValue.value\n if ((document as any).selection) {\n const sel = (document as any).selection.createRange()\n sel.text = str\n } else if (\n typeof obj.selectionStart === 'number' &&\n typeof obj.selectionEnd === 'number'\n ) {\n const startPos = obj.selectionStart\n const endPos = obj.selectionEnd\n let cursorPos = startPos\n tmpStr =\n tmpStr.substring(0, startPos) +\n str +\n tmpStr.substring(endPos, tmpStr.length)\n cursorPos += str.length\n obj.selectionStart = obj.selectionEnd = cursorPos\n } else {\n tmpStr += str\n }\n myValue.value = tmpStr\n }\n const calculMethods = ['+', '-', '*', '/', '(', ')']\n const selectedElem = (value: string, type: string) => {\n let inputVal = ''\n switch (type) {\n case 'name': {\n // 名称\n inputVal = '${' + value + '}'\n break\n }\n case 'function': {\n // 函数\n inputVal = value + '()'\n break\n }\n default: {\n // 加减符号\n inputVal = value\n }\n }\n insertText(inputVal)\n }\n const dataList: TreeProps['treeData'] = []\n const expandedKeys = ref<(string | number)[]>([])\n const autoExpandParent = ref<boolean>(true)\n const funcDescsData = ref([])\n const setDataList = (data: any) => {\n for (const item of data) {\n if (item?.children?.length) {\n setDataList(item.children)\n } else {\n dataList.push({\n key: item.key,\n title: item.title\n })\n }\n }\n }\n const getFuncDescs = async () => {\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/funcdescs`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success && data?.length) {\n setDataList(data)\n funcDescsData.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onExpand = (keys: string[]) => {\n expandedKeys.value = keys\n autoExpandParent.value = false\n }\n watch(searchFuncValue, value => {\n const expanded = dataList\n .map((item: any) => {\n if (item.title.indexOf(value) > -1) {\n return getParentKey(item.key, funcDescsData.value)\n }\n return null\n })\n .filter((item, i, self) => item && self.indexOf(item) === i)\n expandedKeys.value = expanded\n searchFuncValue.value = value\n autoExpandParent.value = true\n })\n onMounted(() => {\n getFuncDescs()\n })\n return {\n fieldList,\n myValue,\n calculMethods,\n funcDescsData,\n searchFuncValue,\n expandedKeys,\n autoExpandParent,\n selectedElem,\n onExpand\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n // border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n border: 1px solid #d9d9d9;\n border-right: none;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n border-radius: 0;\n}\n.cal_right_bottom {\n height: 26px;\n width: 100%;\n border: 1px solid #d9d9d9;\n border-top: none;\n line-height: 26px;\n .cal_fu {\n padding: 0;\n width: 200px;\n float: left;\n margin: 0;\n li {\n width: 20px;\n float: left;\n text-align: center;\n margin: 0 5px;\n cursor: pointer;\n &:hover {\n background: #eff1f4;\n }\n }\n }\n .cal_a {\n color: #1890ff;\n font-size: 13px;\n cursor: pointer;\n display: flex;\n align-items: center;\n float: right;\n margin-right: 10px;\n height: 13px;\n margin-top: 6px;\n &:hover {\n color: #40a9ff;\n }\n }\n}\n.function-wrap {\n width: 240px;\n height: 200px;\n .wrap-search {\n height: 40px;\n background-color: #ffffff;\n border-bottom: 1px solid #d9d9d9;\n padding: 0 10px;\n }\n .tree-box {\n height: calc(100% - 40px);\n overflow: auto;\n }\n}\n</style>\n<style lang=\"less\">\n.func-popover {\n .ant-popover-inner-content {\n padding: 12px 0;\n }\n .insertsty {\n color: #1890ff;\n margin-left: 6px;\n display: none;\n &:hover {\n color: red;\n }\n }\n .ant-tree-title {\n &:hover {\n .insertsty {\n display: inline-block;\n }\n }\n }\n}\n</style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '55vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\" :rules=\"formRules\" ref=\"formRef\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"label\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n :item=\"item\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInFormula\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChangeBuiltInFormula\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"数值来自\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n :disabled=\"item.label === builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_ALL_VALUE', 'BUILT_IN_ALL_VALUE_IN_GROUPO'].includes(\n formState.builtInFormula || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <div\n class=\"accesstip\"\n v-if=\"[\n 'BUILT_IN_RANK_IN_GROUPO',\n 'BUILT_IN_ALL_VALUE_IN_GROUPO'\n ].includes(formState.builtInFormula) && formState.builtInValueSource\"\n >\n 蓝色字段跟随您后续维度设置的顺序而变化,以获取相应的{{ formState.builtInValueSource }}\n </div>\n <a-textarea\n :value=\"accessLogic\"\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport type { Rule } from 'ant-design-vue/es/form'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const allValueSourceList = computed(() => {\n const values = ['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators']\n let list = []\n for (const item of values) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), item)) {\n list = list.concat(unref(graphicConfig)[item])\n }\n }\n return list\n })\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: '',\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formRef = ref()\n const visible = ref(false)\n const formState = ref()\n watch(\n visible,\n (value: boolean) => {\n if (value) {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = props.item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n } else if (props.mode === 'add') {\n formState.value = cloneDeep(formDefaultValue)\n }\n } else {\n formState.value = cloneDeep(formDefaultValue)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const validateLabel = async (_rule: Rule, value: string) => {\n if (value === '') {\n return Promise.reject(new Error('请输入指标名'))\n } else {\n const source = unref(allValueSourceList).find(v => v.label === value)\n if (source) {\n if (source.id === props.item.id) {\n return Promise.resolve()\n }\n return Promise.reject(new Error('指标名不能重复'))\n }\n return Promise.resolve()\n }\n }\n const formRules = computed(() => {\n let result: any = {\n label: [\n {\n required: true,\n validator: validateLabel,\n trigger: 'change'\n }\n ]\n }\n if (formState.value.calcType === 'BUILT_IN') {\n result = {\n ...result,\n builtInFormula: [\n {\n required: true,\n message: '请选择内置公式'\n }\n ],\n builtInValueSource: [\n {\n required: true,\n message: '请选择数值来自'\n }\n ],\n builtInCalcWay: [\n {\n required: true,\n message: '请选择取数原则'\n }\n ]\n }\n }\n return result\n })\n const onOK = () => {\n formRef.value.validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formRef.value.clearValidate()\n hideModal()\n }\n // 改变计算方式\n const onChangeBuiltInFormula = () => {\n isDataChange = true\n unref(formState).builtInCalcWay = ''\n }\n // 取数逻辑值\n const accessLogic = computed(() => {\n let data = ''\n const principle = unref(formState).builtInCalcWay\n const comefrom = unref(formState).builtInValueSource\n if (!comefrom || !principle) {\n return data\n }\n switch (unref(formState).builtInFormula) {\n case 'BUILT_IN_RANK': {\n // 排名\n if (principle === 'ASC') {\n // 升序\n data = '【' + comefrom + '】' + '由小到大在所有值中的排名'\n } else {\n // 降序\n data = '【' + comefrom + '】' + '由大到小在所有值中的排名'\n }\n break\n }\n case 'BUILT_IN_RANK_IN_GROUPO': {\n // 组内排名\n data = '所有【】的' + '\\n'\n if (principle === 'ASC') {\n // 升序\n data = data + '【' + comefrom + '】' + '由小到大的组内的排名'\n } else {\n // 降序\n data = data + '【' + comefrom + '】' + '由大到小的组内的排名'\n }\n break\n }\n case 'BUILT_IN_ALL_VALUE': {\n // 所有值\n let str = ''\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = '将所有【' + comefrom + '】' + str\n break\n }\n case 'BUILT_IN_ALL_VALUE_IN_GROUPO': {\n let str = ''\n data = '所有【】的' + '\\n'\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = data + '将所有【' + comefrom + '】' + str\n break\n }\n }\n return data\n })\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n formRules,\n accessLogic,\n formRef,\n onChangeBuiltInFormula\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.accesstip{\n color: #3f8ce8;\n}\n</style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '55vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\" :rules=\"formRules\" ref=\"formRef\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"label\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n :item=\"item\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInFormula\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChangeBuiltInFormula\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"数值来自\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n :disabled=\"item.label === builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_ALL_VALUE', 'BUILT_IN_ALL_VALUE_IN_GROUPO'].includes(\n formState.builtInFormula || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <div\n class=\"accesstip\"\n v-if=\"[\n 'BUILT_IN_RANK_IN_GROUPO',\n 'BUILT_IN_ALL_VALUE_IN_GROUPO'\n ].includes(formState.builtInFormula) && formState.builtInValueSource\"\n >\n 蓝色字段跟随您后续维度设置的顺序而变化,以获取相应的{{ formState.builtInValueSource }}\n </div>\n <a-textarea\n :value=\"accessLogic\"\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport type { Rule } from 'ant-design-vue/es/form'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const allValueSourceList = computed(() => {\n const values = ['leftAxisList', 'rightAxisList', 'queryColumnList', 'indicators']\n let list = []\n for (const item of values) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), item)) {\n list = list.concat(unref(graphicConfig)[item])\n }\n }\n return list\n })\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: '',\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formRef = ref()\n const visible = ref(false)\n const formState = ref()\n watch(\n visible,\n (value: boolean) => {\n if (value) {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = props.item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n } else if (props.mode === 'add') {\n formState.value = cloneDeep(formDefaultValue)\n }\n } else {\n formState.value = cloneDeep(formDefaultValue)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const validateLabel = async (_rule: Rule, value: string) => {\n if (value === '') {\n return Promise.reject(new Error('请输入指标名'))\n } else {\n const source = unref(allValueSourceList).find(v => v.label === value)\n if (source) {\n if (source.id === props.item.id) {\n return Promise.resolve()\n }\n return Promise.reject(new Error('指标名不能重复'))\n }\n return Promise.resolve()\n }\n }\n const formRules = computed(() => {\n let result: any = {\n label: [\n {\n required: true,\n validator: validateLabel,\n trigger: 'change'\n }\n ]\n }\n if (formState.value.calcType === 'BUILT_IN') {\n result = {\n ...result,\n builtInFormula: [\n {\n required: true,\n message: '请选择内置公式'\n }\n ],\n builtInValueSource: [\n {\n required: true,\n message: '请选择数值来自'\n }\n ],\n builtInCalcWay: [\n {\n required: true,\n message: '请选择取数原则'\n }\n ]\n }\n }\n return result\n })\n const onOK = () => {\n formRef.value.validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formRef.value.clearValidate()\n hideModal()\n }\n // 改变计算方式\n const onChangeBuiltInFormula = () => {\n isDataChange = true\n unref(formState).builtInCalcWay = ''\n }\n // 取数逻辑值\n const accessLogic = computed(() => {\n let data = ''\n const principle = unref(formState).builtInCalcWay\n const comefrom = unref(formState).builtInValueSource\n if (!comefrom || !principle) {\n return data\n }\n switch (unref(formState).builtInFormula) {\n case 'BUILT_IN_RANK': {\n // 排名\n if (principle === 'ASC') {\n // 升序\n data = '【' + comefrom + '】' + '由小到大在所有值中的排名'\n } else {\n // 降序\n data = '【' + comefrom + '】' + '由大到小在所有值中的排名'\n }\n break\n }\n case 'BUILT_IN_RANK_IN_GROUPO': {\n // 组内排名\n data = '所有【】的' + '\\n'\n if (principle === 'ASC') {\n // 升序\n data = data + '【' + comefrom + '】' + '由小到大的组内的排名'\n } else {\n // 降序\n data = data + '【' + comefrom + '】' + '由大到小的组内的排名'\n }\n break\n }\n case 'BUILT_IN_ALL_VALUE': {\n // 所有值\n let str = ''\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = '将所有【' + comefrom + '】' + str\n break\n }\n case 'BUILT_IN_ALL_VALUE_IN_GROUPO': {\n let str = ''\n data = '所有【】的' + '\\n'\n switch (principle) {\n case 'SUM': { str = '求和'; break }\n case 'AVG': { str = '求平均值'; break }\n case 'MIN': { str = '求最小值'; break }\n case 'MAX': { str = '求最大值'; break }\n }\n data = data + '将所有【' + comefrom + '】' + str\n break\n }\n }\n return data\n })\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n formRules,\n accessLogic,\n formRef,\n onChangeBuiltInFormula\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.accesstip{\n color: #3f8ce8;\n}\n</style>\n","<template>\n <a-card\n v-if=\"type === 'formFields'\"\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n </div>\n </template>\n <div class=\"field-wrap\">\n <div class=\"field-item\">\n <div class=\"item-label\">名称:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.labelField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'labelField')\"\n >\n </a-select>\n </div>\n <div class=\"field-item\">\n <div class=\"item-label\">值:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.valueField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'valueField')\"\n >\n </a-select>\n </div>\n </div>\n </a-card>\n <a-card\n v-else\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div :class=\"type + '-list'\" style=\"height: 100%;padding: 10px;\">\n <draggable\n v-model=\"cardItemList\"\n class=\"chart-column\"\n :id=\"type\"\n group=\"cardItem\"\n item-key=\"index\"\n @add=\"onDragItemAdd\"\n @sort=\"onDragItemSort\"\n @end=\"onDragItemEnd\"\n @start=\"onDragItemStart($event, cardItemList)\"\n >\n <template #item=\"{ element: cardItem, index }\">\n <div class=\"card-item-wrap\">\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\" @visibleChange=\"onVisibleChange($event, cardItem)\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 日期维度的格式化 -->\n <template v-if=\"cardItem.genericType === 'DATE'\">\n <a-sub-menu title=\"日期格式化\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"format in formatList\"\n :key=\"format.value\"\n @click=\"onDateFormatChange(format.value, index)\"\n >\n <span\n :style=\"(cardItem.dateFormat === format.value) ||\n (!cardItem.dateFormat && format.value === 'YYYY-MM') ? 'color: #1890FF;' : ''\">\n {{ format.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name])\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name]\">\n <span style=\"font-weight: bold;\">指标名:</span>\n {{ dataViewMap[cardItem.name] }}\n </span>\n <copy-outlined\n style=\"color: #52C41A;margin-left: 10px;\"\n title=\"点击复制\"\n />\n </div>\n </a-menu-item>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n </template>\n </draggable>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject, onMounted } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider,\n Select as ASelect,\n message\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined,\n CopyOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, SOURCE_TYPE } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nimport Draggable from 'vuedraggable'\nimport { hasOwn } from '@/utils/util'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CopyOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider,\n ASelect,\n Draggable\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' }\n ]\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const idxList = ['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList']\n const dimList = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList']\n const source = inject(SOURCE_TYPE)\n const isAllowAdd = (data: any = {}) => {\n if (unref(source) === 'SQL_VIEW') {\n // 视图不需要判断\n return true\n }\n let result = false\n if (data.scope === 'IDX') {\n if (idxList.includes(props.type)) {\n result = true\n }\n } else if (['DIM', 'BUILT_IN_DIM'].includes(data.scope)) {\n if (dimList.includes(props.type)) {\n result = true\n }\n }\n return result\n }\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n if (!isAllowAdd(data)) {\n return\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n sessionStorage.setItem('indicator-list-item', '')\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (!isAllowAdd(cardItem)) {\n return\n }\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDragItemEnd = () => {\n sessionStorage.setItem('indicator-card-item', '')\n }\n const onDragItemAdd = () => {\n const listItemData = sessionStorage.getItem('indicator-list-item')\n const cardItemData = sessionStorage.getItem('indicator-card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragItemSort = (event: any) => {\n const { newIndex, oldIndex, from, to } = event\n const fromType = from.id\n const toType = to.id\n if (newIndex >= 0 && oldIndex >= 0) {\n if (fromType === toType) {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const currItem = list.splice(oldIndex, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n } else if (props.type === toType) {\n const list = unref(graphicConfig)[toType]?.slice() || []\n if (list?.length) {\n const currItem = list.splice(list.length - 1, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n }\n }\n }\n }\n const onDragItemStart = (event: any, dataViews: { [key: string]: any }[]) => {\n const index = event.oldIndex\n const dataView = dataViews[index]\n if (dataView) {\n sessionStorage.setItem('indicator-card-item', JSON.stringify({\n cardItem: dataView,\n type: props.type,\n index\n }))\n }\n }\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDateFormatChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].dateFormat = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const fieldOptions = ref<any[]>([])\n const fieldData = computed<any>(() => unref(graphicConfig)[props.type] || {})\n const getFieldData = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/dimFields`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n fieldOptions.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onFieldChange = (value: any, type: string) => {\n const formFields = unref(graphicConfig)[props.type] || {}\n formFields[type] = value\n updateGraphicConfig({\n [props.type]: formFields\n })\n }\n const dataViewMap = ref({})\n const onVisibleChange = async (visible: boolean, cardItem: any) => {\n const { name: itemName } = cardItem\n if (visible && hasOwn(cardItem, 'indexCode') && !hasOwn(unref(dataViewMap), itemName)) {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n dataSourceId: '',\n indexGuid: cardItem.id,\n pageId: (window as any)?.config?.pageId\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n dataViewMap.value[itemName] = data.name\n }\n }\n }\n // 复制指标名\n const copyDataViewName = (text: string) => {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.setAttribute('value', text)\n input.select()\n document.execCommand('copy')\n document.body.removeChild(input)\n message.success('复制成功')\n }\n onMounted(() => {\n if (props.type === 'formFields') {\n getFieldData()\n }\n })\n return {\n onCheckboxChange,\n onDropEnd,\n onDragItemEnd,\n onDragItemAdd,\n onDragItemSort,\n onDragItemStart,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n onDateFormatChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode,\n formatList,\n fieldOptions,\n fieldData,\n onFieldChange,\n onVisibleChange,\n copyDataViewName,\n dataViewMap\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n\n.chart-column {\n height: 100%;\n}\n\n.data-view-name {\n display: inline-block;\n max-width: 200px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n\n.field-wrap {\n padding: 10px 0;\n .field-item {\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n .item-label {\n width: 45px;\n font-size: 14px;\n text-align: right;\n }\n }\n}\n</style>\n","<template>\n <a-card\n v-if=\"type === 'formFields'\"\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n </div>\n </template>\n <div class=\"field-wrap\">\n <div class=\"field-item\">\n <div class=\"item-label\">名称:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.labelField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'labelField')\"\n >\n </a-select>\n </div>\n <div class=\"field-item\">\n <div class=\"item-label\">值:</div>\n <a-select\n style=\"width: 70%;\"\n class=\"item-select\"\n :value=\"fieldData.valueField\"\n :options=\"fieldOptions\"\n @change=\"onFieldChange($event, 'valueField')\"\n >\n </a-select>\n </div>\n </div>\n </a-card>\n <a-card\n v-else\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n height: '58px',\n padding: '0 10px'\n }\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div :class=\"type + '-list'\" style=\"height: 100%;padding: 10px;\">\n <draggable\n v-model=\"cardItemList\"\n class=\"chart-column\"\n :id=\"type\"\n group=\"cardItem\"\n item-key=\"index\"\n @add=\"onDragItemAdd\"\n @sort=\"onDragItemSort\"\n @end=\"onDragItemEnd\"\n @start=\"onDragItemStart($event, cardItemList)\"\n >\n <template #item=\"{ element: cardItem, index }\">\n <div class=\"card-item-wrap\">\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\" @visibleChange=\"onVisibleChange($event, cardItem)\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 日期维度的格式化 -->\n <template v-if=\"cardItem.genericType === 'DATE'\">\n <a-sub-menu title=\"日期格式化\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"format in formatList\"\n :key=\"format.value\"\n @click=\"onDateFormatChange(format.value, index)\"\n >\n <span\n :style=\"(cardItem.dateFormat === format.value) ||\n (!cardItem.dateFormat && format.value === 'YYYY-MM') ? 'color: #1890FF;' : ''\">\n {{ format.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name])\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name]\">\n <span style=\"font-weight: bold;\">指标名:</span>\n {{ dataViewMap[cardItem.name] }}\n </span>\n <copy-outlined\n style=\"color: #52C41A;margin-left: 10px;\"\n title=\"点击复制\"\n />\n </div>\n </a-menu-item>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n </template>\n </draggable>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject, onMounted } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider,\n Select as ASelect,\n message\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined,\n CopyOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN, SOURCE_TYPE } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nimport Draggable from 'vuedraggable'\nimport { hasOwn } from '@/utils/util'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CopyOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider,\n ASelect,\n Draggable\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' }\n ]\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const idxList = ['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList']\n const dimList = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList']\n const source = inject(SOURCE_TYPE)\n const isAllowAdd = (data: any = {}) => {\n if (unref(source) === 'SQL_VIEW') {\n // 视图不需要判断\n return true\n }\n let result = false\n if (data.scope === 'IDX') {\n if (idxList.includes(props.type)) {\n result = true\n }\n } else if (['DIM', 'BUILT_IN_DIM'].includes(data.scope)) {\n if (dimList.includes(props.type)) {\n result = true\n }\n }\n return result\n }\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n if (!isAllowAdd(data)) {\n return\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n sessionStorage.setItem('indicator-list-item', '')\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (!isAllowAdd(cardItem)) {\n return\n }\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDragItemEnd = () => {\n sessionStorage.setItem('indicator-card-item', '')\n }\n const onDragItemAdd = () => {\n const listItemData = sessionStorage.getItem('indicator-list-item')\n const cardItemData = sessionStorage.getItem('indicator-card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragItemSort = (event: any) => {\n const { newIndex, oldIndex, from, to } = event\n const fromType = from.id\n const toType = to.id\n if (newIndex >= 0 && oldIndex >= 0) {\n if (fromType === toType) {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const currItem = list.splice(oldIndex, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n } else if (props.type === toType) {\n const list = unref(graphicConfig)[toType]?.slice() || []\n if (list?.length) {\n const currItem = list.splice(list.length - 1, 1)[0]\n if (currItem) {\n list.splice(newIndex, 0, currItem)\n // 更新\n updateGraphicConfig({\n [props.type]: list\n })\n }\n }\n }\n }\n }\n const onDragItemStart = (event: any, dataViews: { [key: string]: any }[]) => {\n const index = event.oldIndex\n const dataView = dataViews[index]\n if (dataView) {\n sessionStorage.setItem('indicator-card-item', JSON.stringify({\n cardItem: dataView,\n type: props.type,\n index\n }))\n }\n }\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDateFormatChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].dateFormat = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const fieldOptions = ref<any[]>([])\n const fieldData = computed<any>(() => unref(graphicConfig)[props.type] || {})\n const getFieldData = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/dimFields`, {}, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n fieldOptions.value = data\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onFieldChange = (value: any, type: string) => {\n const formFields = unref(graphicConfig)[props.type] || {}\n formFields[type] = value\n updateGraphicConfig({\n [props.type]: formFields\n })\n }\n const dataViewMap = ref({})\n const onVisibleChange = async (visible: boolean, cardItem: any) => {\n const { name: itemName } = cardItem\n if (visible && hasOwn(cardItem, 'indexCode') && !hasOwn(unref(dataViewMap), itemName)) {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n dataSourceId: '',\n indexGuid: cardItem.id,\n pageId: (window as any)?.config?.pageId\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n dataViewMap.value[itemName] = data.name\n }\n }\n }\n // 复制指标名\n const copyDataViewName = (text: string) => {\n const input = document.createElement('input')\n document.body.appendChild(input)\n input.setAttribute('value', text)\n input.select()\n document.execCommand('copy')\n document.body.removeChild(input)\n message.success('复制成功')\n }\n onMounted(() => {\n if (props.type === 'formFields') {\n getFieldData()\n }\n })\n return {\n onCheckboxChange,\n onDropEnd,\n onDragItemEnd,\n onDragItemAdd,\n onDragItemSort,\n onDragItemStart,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n onDateFormatChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode,\n formatList,\n fieldOptions,\n fieldData,\n onFieldChange,\n onVisibleChange,\n copyDataViewName,\n dataViewMap\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n\n.chart-column {\n height: 100%;\n}\n\n.data-view-name {\n display: inline-block;\n max-width: 200px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n\n.field-wrap {\n padding: 10px 0;\n .field-item {\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n .item-label {\n width: 45px;\n font-size: 14px;\n text-align: right;\n }\n }\n}\n</style>\n","export const cardTypeMap = {\n classificationList: {\n title: '分类'\n },\n seriesList: {\n title: '系列'\n },\n leftAxisList: {\n title: '左值轴'\n },\n rightAxisList: {\n title: '右值轴'\n },\n indicators: {\n title: '数值'\n },\n queryColumnList: {\n title: '数据'\n },\n rowHeaderList: {\n title: '行表头'\n },\n formFields: {\n title: '字段'\n }\n}\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['classificationList', 'formFields'],\n checkbox: ['classificationList', 'formFields'],\n radio: ['classificationList', 'formFields']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 0;\n height: calc(100% - 58px);\n }\n}\n</style>\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['classificationList', 'formFields'],\n checkbox: ['classificationList', 'formFields'],\n radio: ['classificationList', 'formFields']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 0;\n height: calc(100% - 58px);\n }\n}\n</style>\n","export interface PropsGroup {\r\n title?: string // 标题\r\n enableProps?: string // 是否能使用(禁用)\r\n onlyType?: string | string [],\r\n excludeType?: string | string []\r\n props: string [] // 属性组\r\n}\r\n\r\nexport type PropsGroups = PropsGroup[]\r\n\r\nexport interface DetailPropsGroup {\r\n title?: string\r\n enableProps?: boolean\r\n onlyType?: string | string []\r\n excludeType?: string | string []\r\n // enablePropsName 就是 PropsGroup 的 enableProps\r\n enablePropsName?: string\r\n props: {\r\n [key: string]: any\r\n }\r\n}\r\n\r\nexport type DetailPropsGroups = DetailPropsGroup[]\r\n\r\n// 没有title属性直接展示属性\r\n// 有tilt属性才有折叠面板\r\n// 此属性控制属性配置面板的顺序\r\nexport const propsGroups: PropsGroups = [\r\n {\r\n title: '基本属性',\r\n props: [\r\n 'name',\r\n 'width',\r\n 'height',\r\n 'colors'\r\n ]\r\n },\r\n {\r\n title: '系列',\r\n props: [\r\n 'seriesTypes'\r\n ]\r\n },\r\n {\r\n title: '折线图',\r\n onlyType: ['line', 'comboGraph'],\r\n props: [\r\n 'areaStyleOpacity',\r\n 'smooth',\r\n 'lineStyleWidth',\r\n 'symbolSize'\r\n ]\r\n },\r\n {\r\n title: '柱状图',\r\n onlyType: ['bar', 'comboGraph'],\r\n props: [\r\n 'barWidth',\r\n 'isUseHorizontalAxis',\r\n 'axisInverse',\r\n 'isStack',\r\n 'labelShow'\r\n ]\r\n },\r\n {\r\n title: '饼图',\r\n onlyType: 'pie',\r\n props: [\r\n 'centerTop',\r\n 'centerLeft',\r\n 'innerRadius',\r\n 'outerRadius',\r\n 'roseType',\r\n 'minAngle'\r\n ]\r\n },\r\n {\r\n title: '布局',\r\n props: [\r\n 'gridTop',\r\n 'gridBottom',\r\n 'gridLeft',\r\n 'gridRight',\r\n 'gridContainLabel'\r\n ]\r\n },\r\n {\r\n title: 'x轴',\r\n props: [\r\n 'xAxisLabelColor',\r\n 'xAxisLineStyleColor',\r\n 'xAxisLabelWidth',\r\n 'xAxisLabelOverflow',\r\n 'xAxisLabelRotate',\r\n 'xAxisTickShow',\r\n 'xAxisSplitLineShow',\r\n 'xAxisSplitLineStyleColor',\r\n 'xAxisLabelFormatter',\r\n 'xAxisInverse',\r\n 'xAxisMinInterval',\r\n 'xAxisLabelInterval'\r\n ]\r\n },\r\n {\r\n title: 'y轴',\r\n props: [\r\n 'yAxisLabelColor',\r\n 'yAxisLineStyleColor',\r\n 'yAxisLineAlwaysDisplay',\r\n 'yAxisLabelWidth',\r\n 'yAxisLabelOverflow',\r\n 'yAxisLabelRotate',\r\n 'yAxisSplitLineShow',\r\n 'yAxisSplitLineStyleColor',\r\n 'yAxisLabelFormatter',\r\n 'yAxisInverse',\r\n 'yAxisMinInterval',\r\n 'yAxis'\r\n ]\r\n },\r\n {\r\n title: '标签',\r\n enableProps: 'labelShow',\r\n props: [\r\n 'labelFormatter',\r\n 'labelColor',\r\n 'isUseLabelColors',\r\n 'labelFontSize',\r\n 'labelPosition'\r\n ]\r\n },\r\n {\r\n title: '标签引导线',\r\n enableProps: 'labelLineShow',\r\n props: [\r\n 'labelLineLength',\r\n 'labelLineLength2'\r\n ]\r\n },\r\n {\r\n title: '图例',\r\n enableProps: 'legendShow',\r\n props: [\r\n 'legendTextStyleColor',\r\n 'legendTop',\r\n 'legendLeft',\r\n 'legendOrient'\r\n ]\r\n },\r\n {\r\n title: '提示框',\r\n enableProps: 'tooltipShow',\r\n props: [\r\n 'tooltipTrigger',\r\n 'tooltipFormatter',\r\n 'tooltipTextStyleColor'\r\n ]\r\n },\r\n {\r\n title: '工具栏',\r\n enableProps: 'toolboxShow',\r\n props: [\r\n 'toolboxOrient',\r\n 'toolboxItemSize',\r\n 'toolboxItemGap',\r\n 'toolboxLeft',\r\n 'toolboxTop',\r\n // 'toolboxLocation',\r\n // 'toolboxDownloadShow',\r\n 'toolboxDataZoomShow',\r\n 'toolboxInfoShow'\r\n // 'toolboxDownloadUrl',\r\n // 'toolboxInfoText'\r\n ]\r\n }\r\n]\r\n","export interface PropToAttributeConfig {\n label: string // 标题\n component: string // 需要转化的组件,如 width 由 numberInput 控制\n style?: string // 组件样式\n valueProp?: any // 值的属性字段\n value?: string // 值\n changeValueEventName?: string // 改变值的事件\n options?: { value: any; label?: any }[] // 子组件option\n updateMode?: 'page' | 'component' // 修改页面、组件页面供属性\n props?: { [key: string]: any } // 组件的 v-bind\n events?: { [key: string]: (e: any) => void } // 组件的 v-on\n onlyType?: string | string[] // 限定数组类型 onlyType\n excludeType?: string | string[]\n layout?: 'horizontal' | 'vertical'\n}\n\ntype PropToAttributeConfigList = PropToAttributeConfig[]\n\n// 属性转换配置(表单)\nexport type PropsToAttributeConfig = {\n [key: string]: PropToAttributeConfig | PropToAttributeConfigList\n}\n\n// 属性转表单的字典映射\nexport const mapAttributeProps: PropsToAttributeConfig = {\n name: {\n label: '控件别名',\n component: 'input'\n },\n title: {\n label: '标题',\n component: 'input'\n },\n width: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n height: {\n label: '高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 10\n }\n },\n colors: {\n label: '颜色',\n component: 'color-group-pick'\n },\n centerLeft: {\n label: '水平位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n centerTop: {\n label: '垂直位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n innerRadius: {\n label: '内半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n outerRadius: {\n label: '外半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n tooltipTrigger: {\n label: '触发条件',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '图形',\n value: 'item'\n },\n {\n label: '坐标轴',\n value: 'axis'\n },\n {\n label: '无',\n value: 'none'\n }\n ]\n }\n },\n tooltipTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n tooltipFormatter: {\n label: '格式化',\n component: 'textarea'\n },\n legendTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n legendTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'middle'\n },\n {\n label: '下',\n value: 'bottom'\n }\n ]\n }\n },\n legendLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '左',\n value: 'left'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '右',\n value: 'right'\n }\n ]\n }\n },\n legendOrient: {\n label: '布局',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '垂直',\n value: 'vertical'\n },\n {\n label: '水平',\n value: 'horizontal'\n }\n ]\n }\n },\n labelFormatter: {\n label: '格式化',\n component: 'input'\n },\n labelColor: {\n label: '标签颜色',\n component: 'color-pick'\n },\n isUseLabelColors: {\n label: '系列色',\n component: 'switch'\n },\n labelFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 12,\n suffix: 'px'\n }\n },\n labelPosition: [\n {\n label: '位置',\n component: 'radio-group',\n onlyType: 'pie',\n props: {\n options: [\n {\n label: '外侧',\n value: 'outside'\n },\n {\n label: '内侧',\n value: 'inside'\n },\n {\n label: '中心',\n value: 'center'\n }\n ]\n }\n },\n {\n label: '位置',\n component: 'select',\n onlyType: 'bar',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'inside'\n },\n {\n label: '下',\n value: 'bottom'\n },\n {\n label: '右',\n value: 'right'\n },\n {\n label: '左',\n value: 'left'\n }\n ]\n }\n }\n ],\n labelLineLength: {\n label: '第一段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n labelLineLength2: {\n label: '第二段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n symbolSize: {\n label: '标记点尺寸',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n smooth: {\n label: '线条光滑',\n component: 'switch'\n },\n lineStyleWidth: {\n label: '线条宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n xAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n xAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n xAxisLineStyleColor: {\n label: '横边颜色',\n component: 'color-pick'\n },\n xAxisTickShow: {\n label: '显示刻度',\n component: 'switch'\n },\n xAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n yAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n yAxisLineAlwaysDisplay: {\n label: '显示竖边',\n component: 'switch'\n },\n yAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n yAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n yAxisLineStyleColor: {\n label: '竖边颜色',\n component: 'color-pick'\n },\n yAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n roseType: {\n label: '玫瑰图',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '不展示',\n value: ''\n },\n {\n label: '圆心角',\n value: 'area'\n },\n {\n label: '半径',\n value: 'radius'\n }\n ]\n }\n },\n yAxis: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n max: 2,\n format: [\n {\n label: ['左轴', '右轴'],\n type: 'input',\n value: 'axisLabelFormatter',\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n }\n ]\n }\n },\n seriesTypes: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n format: [\n {\n label: '系列',\n type: 'select',\n value: 'type',\n useLabelIndex: true,\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n },\n {\n label: '对应轴',\n type: 'select',\n value: 'axisIndex',\n props: {\n options: [\n {\n label: '左轴',\n value: 0\n },\n {\n label: '右轴',\n value: 1\n }\n ]\n }\n },\n {\n label: '提示框格式化',\n type: 'input',\n value: 'tooltipFormatter'\n }\n ]\n }\n },\n barWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0\n }\n },\n gridTop: {\n label: '上侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridBottom: {\n label: '下侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridLeft: {\n label: '左侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridRight: {\n label: '右侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridContainLabel: {\n label: '包含刻度标签',\n component: 'switch'\n },\n toolboxOrient: {\n label: '排版',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '水平',\n value: 'horizontal'\n },\n {\n label: '垂直',\n value: 'vertical'\n }\n ]\n }\n },\n toolboxItemSize: {\n label: '图标大小',\n component: 'input-number'\n },\n toolboxItemGap: {\n label: '图标间距',\n component: 'input-number'\n },\n toolboxLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '居左',\n value: 'left'\n },\n {\n label: '居中',\n value: 'center'\n },\n {\n label: '居右',\n value: 'right'\n }\n ]\n }\n },\n toolboxTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '顶部',\n value: 'top'\n },\n {\n label: '居中',\n value: 'middle'\n },\n {\n label: '底部',\n value: 'bottom'\n }\n ]\n }\n },\n toolboxDownloadUrl: {\n label: '下载文件地址',\n component: 'input'\n },\n toolboxInfoText: {\n label: '说明信息内容',\n component: 'input'\n },\n isUseHorizontalAxis: {\n label: '横向排列',\n component: 'switch'\n },\n axisInverse: {\n label: '倒叙排列',\n component: 'switch'\n },\n xAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n yAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n areaStyleOpacity: {\n label: '面积透明度',\n component: 'input-number',\n props: {\n step: 0.1,\n min: 0,\n max: 1\n }\n },\n xAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n xAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n yAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n yAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n isStack: {\n label: '是否堆叠',\n component: 'switch'\n },\n labelShow: {\n label: '展示标签',\n component: 'switch'\n },\n xAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n minAngle: {\n label: '最小角度',\n component: 'input-number',\n props: {\n min: 0,\n max: 360\n }\n },\n xAxisLabelInterval: {\n label: '标签间隔',\n component: 'input-number',\n props: {\n min: -1\n }\n },\n toolboxLocation: {\n label: '快速定位',\n component: 'switch'\n },\n toolboxDownloadShow: {\n label: '使用数据下载',\n component: 'switch'\n },\n toolboxDataZoomShow: {\n label: '使用放大',\n component: 'switch'\n },\n toolboxInfoShow: {\n label: '指标信息',\n component: 'switch'\n }\n}\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-radio-group\n :value=\"value\"\n :optionType=\"optionType\"\n @change=\"onRadioChange\"\n >\n <a-radio-button\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-radio-button>\n </a-radio-group>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { RadioGroup as ARadioGroup, RadioButton as ARadioButton } from 'ant-design-vue'\nexport default defineComponent({\n name: 'RadioGroup',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array,\n default: () => []\n },\n optionType: {\n type: String,\n default: 'default'\n },\n size: {\n type: String,\n default: 'default'\n }\n },\n components: {\n ARadioGroup,\n ARadioButton\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onRadioChange = (e) => {\n emit('change', e.target.value)\n }\n return {\n onRadioChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div :style=\"{ width: `${width}px` }\">\n <a-switch :disabled=\"disabled\" :checked=\"value\" @change=\"onSwitchChange\"/>\n </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { Switch as ASwitch } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Switch',\n props: {\n value: {\n type: Boolean,\n default: false\n },\n width: {\n type: [String, Number],\n default: 150\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ASwitch\n },\n emit: ['change'],\n setup (props, { emit }) {\n const onSwitchChange = (value) => {\n emit('change', value)\n }\n return {\n onSwitchChange\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import{defineComponent as e,computed as t,openBlock as r,createElementBlock as n,normalizeStyle as o,withModifiers as a,createElementVNode as i,pushScopeId as l,popScopeId as c,ref as u,onMounted as s,watch as f,toDisplayString as d,withKeys as p,inject as h,unref as v,resolveComponent as m,Fragment as g,renderList as y,createBlock as b,createVNode as w,createCommentVNode as x,nextTick as S,onBeforeUnmount as k,provide as C,onUnmounted as O,toRaw as I,Teleport as A,Transition as P,withCtx as j}from\"vue\";import{createPopper as _}from\"@popperjs/core\";function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e,t){if(e){if(\"string\"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}function F(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function L(e){return L=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},L(e)}function z(e,t,r,n,o,a,i){try{var l=e[a](i),c=l.value}catch(e){return void r(e)}l.done?t(c):Promise.resolve(c).then(n,o)}function M(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){z(a,n,o,i,l,\"next\",e)}function l(e){z(a,n,o,i,l,\"throw\",e)}i(void 0)}))}}var R={exports:{}},B={exports:{}};!function(e){function t(r){return e.exports=t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}(B),function(e){var t=B.exports.default;function r(){e.exports=r=function(){return o},e.exports.__esModule=!0,e.exports.default=e.exports;var n,o={},a=Object.prototype,i=a.hasOwnProperty,l=Object.defineProperty||function(e,t,r){e[t]=r.value},c=\"function\"==typeof Symbol?Symbol:{},u=c.iterator||\"@@iterator\",s=c.asyncIterator||\"@@asyncIterator\",f=c.toStringTag||\"@@toStringTag\";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},\"\")}catch(n){d=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,a=Object.create(o.prototype),i=new F(n||[]);return l(a,\"_invoke\",{value:j(e,r,i)}),a}function h(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}o.wrap=p;var v=\"suspendedStart\",m=\"suspendedYield\",g=\"executing\",y=\"completed\",b={};function w(){}function x(){}function S(){}var k={};d(k,u,(function(){return this}));var C=Object.getPrototypeOf,O=C&&C(C(L([])));O&&O!==a&&i.call(O,u)&&(k=O);var I=S.prototype=w.prototype=Object.create(k);function A(e){[\"next\",\"throw\",\"return\"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,r){function n(o,a,l,c){var u=h(e[o],e,a);if(\"throw\"!==u.type){var s=u.arg,f=s.value;return f&&\"object\"==t(f)&&i.call(f,\"__await\")?r.resolve(f.__await).then((function(e){n(\"next\",e,l,c)}),(function(e){n(\"throw\",e,l,c)})):r.resolve(f).then((function(e){s.value=e,l(s)}),(function(e){return n(\"throw\",e,l,c)}))}c(u.arg)}var o;l(this,\"_invoke\",{value:function(e,t){function a(){return new r((function(r,o){n(e,t,r,o)}))}return o=o?o.then(a,a):a()}})}function j(e,t,r){var o=v;return function(a,i){if(o===g)throw new Error(\"Generator is already running\");if(o===y){if(\"throw\"===a)throw i;return{value:n,done:!0}}for(r.method=a,r.arg=i;;){var l=r.delegate;if(l){var c=_(l,r);if(c){if(c===b)continue;return c}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(o===v)throw o=y,r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);o=g;var u=h(e,t,r);if(\"normal\"===u.type){if(o=r.done?y:m,u.arg===b)continue;return{value:u.arg,done:r.done}}\"throw\"===u.type&&(o=y,r.method=\"throw\",r.arg=u.arg)}}}function _(e,t){var r=t.method,o=e.iterator[r];if(o===n)return t.delegate=null,\"throw\"===r&&e.iterator.return&&(t.method=\"return\",t.arg=n,_(e,t),\"throw\"===t.method)||\"return\"!==r&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+r+\"' method\")),b;var a=h(o,e.iterator,t.arg);if(\"throw\"===a.type)return t.method=\"throw\",t.arg=a.arg,t.delegate=null,b;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,b):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,b)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(N,this),this.reset(!0)}function L(e){if(e||\"\"===e){var r=e[u];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function t(){for(;++o<e.length;)if(i.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=n,t.done=!0,t};return a.next=a}}throw new TypeError(t(e)+\" is not iterable\")}return x.prototype=S,l(I,\"constructor\",{value:S,configurable:!0}),l(S,\"constructor\",{value:x,configurable:!0}),x.displayName=d(S,f,\"GeneratorFunction\"),o.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===x||\"GeneratorFunction\"===(t.displayName||t.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,d(e,f,\"GeneratorFunction\")),e.prototype=Object.create(I),e},o.awrap=function(e){return{__await:e}},A(P.prototype),d(P.prototype,s,(function(){return this})),o.AsyncIterator=P,o.async=function(e,t,r,n,a){void 0===a&&(a=Promise);var i=new P(p(e,t,r,n),a);return o.isGeneratorFunction(t)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},A(I),d(I,f,\"Generator\"),d(I,u,(function(){return this})),d(I,\"toString\",(function(){return\"[object Generator]\"})),o.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},o.values=L,F.prototype={constructor:F,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=n,this.tryEntries.forEach(E),!e)for(var t in this)\"t\"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return l.type=\"throw\",l.arg=e,t.next=r,o&&(t.method=\"next\",t.arg=n),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],l=a.completion;if(\"root\"===a.tryLoc)return r(\"end\");if(a.tryLoc<=this.prev){var c=i.call(a,\"catchLoc\"),u=i.call(a,\"finallyLoc\");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error(\"try statement without catch or finally\");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,\"finallyLoc\")&&this.prev<n.finallyLoc){var o=n;break}}o&&(\"break\"===e||\"continue\"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method=\"next\",this.next=o.finallyLoc,b):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),b},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),E(r),b}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;E(r)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:L(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=n),b}},o}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports}(R);var D=R.exports(),T=D;try{regeneratorRuntime=D}catch(e){\"object\"==typeof globalThis?globalThis.regeneratorRuntime=D:Function(\"r\",\"regeneratorRuntime = r\")(D)}function H(e){var t=function(e,t){if(\"object\"!==L(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!==L(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===L(t)?t:String(t)}function G(e,t,r){return(t=H(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var $=e({name:\"Saturation\",props:{size:{type:Number,default:160},hue:{type:Number,default:0},saturation:{type:Number,default:0},value:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),background:\"hsl(\".concat(e.hue,\", 100%, 50%)\")}}));return{saturationStyle:o,sliderStyle:t((function(){return{top:\"\".concat((100-e.value)/100*e.size-5,\"px\"),left:\"\".concat(e.saturation*e.size/100-5,\"px\"),width:\"\".concat(10,\"px\"),height:\"\".concat(10,\"px\")}})),onSelect:function(t){var r=t.target.getBoundingClientRect(),o=r.left,a=r.top,i=function(t){var r=t.clientX,i=t.clientY,l=r-o,c=i-a;l<0&&(l=0),c<0&&(c=0),l>e.size&&(l=e.size),c>e.size&&(c=e.size);var u=l/e.size*100,s=100-c/e.size*100;n(\"change\",u,s)};i(t),document.addEventListener(\"mousemove\",i),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",i),document.removeEventListener(\"mouseup\",e)}))}}}}),V=function(e){return l(\"data-v-24517fec\"),e=e(),c(),e},Y=V((function(){return i(\"div\",{class:\"saturation-white\"},null,-1)})),J=V((function(){return i(\"div\",{class:\"saturation-black\"},null,-1)}));function W(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&\"undefined\"!=typeof document){var n=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",\"top\"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}W(\".saturation[data-v-24517fec]{position:relative}.saturation-black[data-v-24517fec],.saturation-white[data-v-24517fec]{cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%}.saturation-white[data-v-24517fec]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-24517fec]{background:linear-gradient(0deg,#000,transparent)}.slider[data-v-24517fec]{border:1px solid #fff;border-radius:50%;box-shadow:0 0 1px 1px rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;top:0;z-index:1}\"),$.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"saturation\",style:o(e.saturationStyle),onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[Y,J,i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],36)},$.__scopeId=\"data-v-24517fec\",$.__file=\"src/picker/Saturation.vue\";var X=e({name:\"Hue\",props:{width:{type:Number,default:15},height:{type:Number,default:160},hue:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat((1-e.hue/360)*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u();s((function(){!function(){a.value.width=e.width,a.value.height=e.height;var t=a.value.getContext(\"2d\"),r=t.createLinearGradient(0,0,0,e.height);r.addColorStop(0,\"#FF0000\"),r.addColorStop(.17,\"#FF00FF\"),r.addColorStop(.34,\"#0000FF\"),r.addColorStop(.51,\"#00FFFF\"),r.addColorStop(.68,\"#00FF00\"),r.addColorStop(.17*5,\"#FFFF00\"),r.addColorStop(1,\"#FF0000\"),t.fillStyle=r,t.fillRect(0,0,e.width,e.height)}()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=-100*o/e.height+100;n(\"change\",360*a/100)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),q={ref:\"canvas\"};W(\".hue[data-v-78b9f4f0]{position:relative}.slider[data-v-78b9f4f0]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),X.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"hue\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",q,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},X.__scopeId=\"data-v-78b9f4f0\",X.__file=\"src/picker/Hue.vue\";var U=e({name:\"Alpha\",props:{width:{type:Number,default:15},height:{type:Number,default:160},color:{type:String,default:\"#000000\"},alpha:{type:Number,default:1}},setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat(e.alpha*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u(),i=function(){var t=a.value.getContext(\"2d\");a.value.width=e.width,a.value.height=e.height;var r=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(r,\"repeat\"),t.fillRect(0,0,e.width,e.height);var n=t.createLinearGradient(0,0,0,e.height);n.addColorStop(.01,\"rgba(255,255,255,0)\"),n.addColorStop(.99,e.color),t.fillStyle=n,t.fillRect(0,0,e.width,e.height)};f((function(){return e.color}),(function(){i()})),s((function(){i()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=parseFloat((o/e.height).toFixed(2));n(\"change\",a)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),K={ref:\"canvas\"};W(\".alpha[data-v-24dc9656]{position:relative}.slider[data-v-24dc9656]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),U.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"alpha\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",K,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},U.__scopeId=\"data-v-24dc9656\",U.__file=\"src/picker/Alpha.vue\";var Q=e({name:\"Input\",props:{label:{type:String,default:\"RGBA\"},value:{type:String,default:\"\"},width:{type:Number,default:168}},emits:[\"change\",\"focus\",\"blur\",\"enter\"],setup:function(e,r){var n=r.emit;return{onInput:function(e){var t;n(\"change\",null===(t=e.target)||void 0===t?void 0:t.value)},valueStyle:t((function(){return{minWidth:\"\".concat(e.width,\"px\"),maxWidth:\"\".concat(e.width,\"px\"),width:\"\".concat(e.width,\"px\")}})),onFocus:function(){n(\"focus\")},onBlur:function(){n(\"blur\")},onEnter:function(){n(\"enter\")}}}}),Z={class:\"input\"},ee={class:\"label\"},te=[\".value\"];function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,o,a,i,l=[],c=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||E(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function oe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".input[data-v-d52a4d02]{display:inline-block;font-size:12px}.label[data-v-d52a4d02]{align-items:center;background:#e7e8e9;color:#999;display:flex;float:left;font-weight:500;height:30px;justify-content:center;width:45px}[pick-colors-theme=dark] .label[data-v-d52a4d02]{background:#252930;color:#999}.value[data-v-d52a4d02]{background:#eceef0;border:1px solid #eceef0;box-sizing:border-box;color:#666;flex:1;height:30px;text-align:center}[pick-colors-theme=dark] .value[data-v-d52a4d02]{background:#2e333a;border:1px solid #2e333a;color:#fff}.value[data-v-d52a4d02]:focus{border:1px solid #1890ff;outline:none}\"),Q.render=function(e,t,a,l,c,u){return r(),n(\"div\",Z,[i(\"span\",ee,d(e.label),1),i(\"input\",{class:\"value\",style:o(e.valueStyle),\".value\":e.value,onFocus:t[0]||(t[0]=function(){return e.onFocus&&e.onFocus.apply(e,arguments)}),onInput:t[1]||(t[1]=function(){return e.onInput&&e.onInput.apply(e,arguments)}),onBlur:t[2]||(t[2]=function(){return e.onBlur&&e.onBlur.apply(e,arguments)}),onKeydown:t[3]||(t[3]=p((function(){return e.onEnter&&e.onEnter.apply(e,arguments)}),[\"enter\"]))},null,44,te)])},Q.__scopeId=\"data-v-d52a4d02\",Q.__file=\"src/picker/InputValue.vue\";var ae=function(e,t,r){return[e,t*r/((e=(2-t)*r)<1?e:2-e)||0,e/2]},ie={10:\"A\",11:\"B\",12:\"C\",13:\"D\",14:\"E\",15:\"F\"},le=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),r=e%16;return\"\".concat(ie[t]||t).concat(ie[r]||r)},ce=function(e){var t=e.r,r=e.g,n=e.b;return isNaN(t)||isNaN(r)||isNaN(n)?\"\":\"#\".concat(le(t)).concat(le(r)).concat(le(n))},ue=function(e,t){var r;\"string\"==typeof(r=e)&&-1!==r.indexOf(\".\")&&1===parseFloat(r)&&(e=\"100%\");var n=function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"%\")}(e);return e=Math.min(t,Math.max(0,parseFloat(\"\".concat(e)))),n&&(e=parseInt(\"\".concat(e*t),10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},se=function(e,t,r){e=6*ue(e,360),t=ue(t,100),r=ue(r,100);var n=Math.floor(e),o=e-n,a=r*(1-t),i=r*(1-o*t),l=r*(1-(1-o)*t),c=n%6,u=[r,i,a,a,l,r][c],s=[l,r,r,i,a,a][c],f=[a,a,l,r,r,i][c];return{r:Math.round(255*u),g:Math.round(255*s),b:Math.round(255*f)}},fe=function(e,t,r){var n=e.h,o=e.s,a=e.v,i=e.a;if(r)switch(t){case\"hsl\":var l=ae(n,o/100,a/100);return\"hsla(\".concat(n.toFixed(0),\", \").concat(Math.round(100*l[1]),\"%, \").concat(Math.round(100*l[2]),\"%, \").concat(i,\")\");case\"hsv\":return\"hsva(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%, \").concat(i,\")\");case\"rgb\":var c=se(n,o,a),u=c.r,s=c.g,f=c.b;return\"rgba(\".concat(u,\", \").concat(s,\", \").concat(f,\", \").concat(i,\")\");default:return\"\".concat(ce(se(n,o,a))).concat(le(255*i))}else switch(t){case\"hsl\":var d=ae(n,o/100,a/100);return\"hsl(\".concat(n.toFixed(0),\", \").concat(Math.round(100*d[1]),\"%, \").concat(Math.round(100*d[2]),\"%)\");case\"hsv\":return\"hsv(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%)\");case\"rgb\":var p=se(n,o,a),h=p.r,v=p.g,m=p.b;return\"rgb(\".concat(h,\", \").concat(v,\", \").concat(m,\")\");default:return ce(se(n,o,a))}},de=function(e){var t=e.r,r=e.g,n=e.b;t=ue(t,255),r=ue(r,255),n=ue(n,255);var o,a=Math.max(t,r,n),i=Math.min(t,r,n),l=a,c=a-i,u=0===a?0:c/a;if(a===i)o=0;else{switch(a){case t:o=(r-n)/c+(r<n?6:0);break;case r:o=(n-t)/c+2;break;case n:o=(t-r)/c+4}o/=6}return{h:360*o,s:100*u,v:100*l}},pe=function(e){var t=e.h,r=e.s,n=e.l;n/=100;var o=r/=100,a=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,o*=a<=1?a:2-a,{h:+t,s:100*(0===n?2*o/(a+o):2*r/(n+r)),v:100*((n+r)/2)}},he=function(e){var t=[];if(e.match(/^#([0-9a-fA-f]{3,4})$/g))for(var r=1;r<e.length;r++)t.push(parseInt(\"0x\"+e[r].repeat(2)));else if(e.match(/^#([0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/g))for(var n=1;n<e.length;n+=2)t.push(parseInt(\"0x\"+e.slice(n,n+2)));return{r:t[0],g:t[1],b:t[2],a:t[3]}},ve=function(e,t,r){if(\"string\"==typeof e&&\"\"!==e){var n=be(e,we(e),r),o=xe(n);return fe(o,t,r)}return\"\"},me=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4);return{r:t[0],g:t[1],b:t[2],a:t[3]}},ge=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:r,s:parseFloat(n),l:parseFloat(o),a:a}},ye=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:parseFloat(r),s:parseFloat(n),v:parseFloat(o),a:parseFloat(a)}},be=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])switch(t){case\"rgb\":var r=me(e),n=r.r,o=r.g,a=r.b,i=r.a;return oe(oe({},de({r:n,g:o,b:a})),{},{a:+i});case\"hsv\":var l=ye(e);return{h:l.h,s:l.s,v:l.v,a:l.a};case\"hsl\":var c=ge(e),u=c.h,s=c.s,f=c.l,d=c.a;return oe(oe({},pe({h:u,s:s,l:f})),{},{a:+d});default:var p=he(e),h=p.r,v=p.g,m=p.b,g=p.a;return oe(oe({},de({r:h,g:v,b:m})),{},{a:g/255})}else{switch(t){case\"rgb\":return oe(oe({},de(me(e))),{},{a:1});case\"hsv\":var y=ye(e);return{h:y.h,s:y.s,v:y.v,a:1};case\"hsl\":return oe(oe({},pe(ge(e))),{},{a:1});default:return oe(oe({},de(he(e))),{},{a:1})}}},we=function(e){return e.match(/^#/)?\"hex\":e.match(/^rgb/)?\"rgb\":e.match(/^hsl/)?\"hsl\":e.match(/^hsv/)?\"hsv\":\"hex\"},xe=function(e){var t=e.h,r=e.s,n=e.v,o=e.a;return isNaN(t)&&(t=0),isNaN(r)&&(r=0),isNaN(n)&&(n=0),isNaN(o)&&(o=1),{h:t,s:r,v:n,a:o}},Se=e({name:\"ColorItem\",props:{size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},value:{type:String,default:\"\"},border:{type:Boolean,default:!0},borderRadius:{type:Number,default:5},selected:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1}},emits:[\"select\"],setup:function(e){var r=u(),n=h(\"theme\",{theme:\"light\"}).theme,o=t((function(){return parseFloat((e.width||e.size)+\"\")})),a=t((function(){return parseFloat((e.height||e.size)+\"\")})),i=t((function(){return{width:\"\".concat(v(o),\"px\"),height:\"\".concat(v(a),\"px\"),border:e.border?\"1px solid \".concat(\"dark\"===v(n)?\"#434345\":\"#d9d9d9\"):\"\",borderRadius:\"\".concat(e.borderRadius,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(n)?\"#2681ff\":\"#1890ff\"):\"\"}})),l=function(){var t=r.value.getContext(\"2d\");r.value.width=v(o),r.value.height=v(a);var n=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(n,\"repeat\"),t.fillRect(0,0,v(o),v(a)),t.fillStyle=e.value,t.fillRect(0,0,v(o),v(a))};return f((function(){return e.value}),(function(){l()})),s((function(){l()})),{canvas:r,colorItemStyle:i}}}),ke=[\"draggable\"];W(\".color-item[data-v-02da71fd]{display:inline-block;vertical-align:top}\"),Se.render=function(e,t,a,i,l,c){return r(),n(\"canvas\",{class:\"color-item\",style:o(e.colorItemStyle),ref:\"canvas\",draggable:e.draggable},null,12,ke)},Se.__scopeId=\"data-v-02da71fd\",Se.__file=\"src/color-item/ColorItem.vue\";var Ce=e({name:\"Colors\",components:{ColorItem:Se},props:{colors:{type:Array,default:function(){return[]}},selectedIndex:{type:Number,default:-1}},emits:[\"change\"],setup:function(e,r){var n=r.emit;return{onSelectColor:function(e,t){n(\"change\",e,t)},useColors:t((function(){return e.colors.map((function(e){return ve(e,\"hex\",!0)}))}))}}}),Oe={class:\"colors\"};function Ie(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ie(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ie(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".colors[data-v-0f8b52a8]{align-items:center;display:flex;flex-wrap:wrap;margin-top:5px}.color-item[data-v-0f8b52a8]{margin:5px}\"),Ce.render=function(e,t,o,i,l,c){var u=m(\"color-item\");return r(),n(\"div\",Oe,[(r(!0),n(g,null,y(e.useColors,(function(t,n){return r(),b(u,{key:n,class:\"color-item\",size:16,value:t,border:!1,\"border-radius\":3,selected:e.selectedIndex===n,onClick:a((function(r){return e.onSelectColor(t,+n)}),[\"stop\",\"prevent\"])},null,8,[\"value\",\"selected\",\"onClick\"])})),128))])},Ce.__scopeId=\"data-v-0f8b52a8\",Ce.__file=\"src/picker/Colors.vue\";var Pe=e({name:\"Picker\",components:{Colors:Ce,Saturation:$,Hue:X,Alpha:U,InputValue:Q},props:{format:{type:String,default:\"hex\"},showAlpha:{type:Boolean,default:!1},value:{type:String,default:\"\"},colors:{type:Array,default:function(){return[]}},style:{type:Object,default:function(){return{}}}},emits:[\"change\",\"update:value\"],setup:function(e,r){var n=r.emit,o=t((function(){return Ae(Ae({},e.style),{},{width:e.showAlpha?\"230px\":\"205px\"})})),a=t((function(){return e.showAlpha?165:140})),i=u(),l=u(),c=u(),s=function(){var t,r=null===(t=e.value)||void 0===t?void 0:t.trim();if(null!=r&&\"\"!==r){var n=we(r);return xe(be(r,n,e.showAlpha))}return null};f((function(){return e.value}),(function(){e.value!==v(c)&&(i.value=s())}),{immediate:!0}),f(i,(function(t,r){var o=\"\";null!=t?(o=fe(Ae({},t),e.format,e.showAlpha),l.value=Ae({},t)):l.value=null,c.value=o;var a=s();JSON.stringify(t)!==JSON.stringify(a)&&JSON.stringify(t)!==JSON.stringify(r)&&n(\"change\",o)}),{immediate:!0});var d=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.h)||0})),p=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.s)||0})),h=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.v)||0})),m=t((function(){var e,t;return null!=(null===(e=v(i))||void 0===e?void 0:e.a)?null===(t=v(i))||void 0===t?void 0:t.a:1})),g=t((function(){return se(v(d),v(p),v(h))})),y=t((function(){return\"rgb(\".concat(v(g).r,\", \").concat(v(g).g,\", \").concat(v(g).b,\")\")})),b=t((function(){var t=e.format;if(e.showAlpha)switch(t){case\"hsv\":return\"HSVA\";case\"hsl\":return\"HSLA\";case\"rgb\":return\"RGBA\";default:return\"HEX\"}else switch(t){case\"hsv\":return\"HSV\";case\"hsl\":return\"HSL\";case\"rgb\":return\"RGB\";default:return\"HEX\"}})),w=u(-1),x=function(e,t,r){if(0!==e.length){var n=be(e,t,r),o=n.h,a=n.s,l=n.v;if(!(isNaN(o)||isNaN(a)||isNaN(l))){var c=1,u=n.a;isNaN(u)||(c=u),i.value={h:o,s:a,v:l,a:c}}}};return{h:d,s:p,v:h,a:m,rgbStr:y,onSelectSaturation:function(e,t){w.value=-1,null==v(i)?i.value={h:v(d),s:e,v:t,a:v(m)}:i.value=Ae(Ae({},v(i)),{},{s:e,v:t})},onSelectHue:function(e){w.value=-1,null==v(i)&&(i.value={h:e,s:v(p),v:v(h),a:v(m)}),i.value=Ae(Ae({},v(i)),{},{h:e})},onSelectAlpha:function(e){w.value=-1,null==v(i)?i.value={h:v(d),s:v(p),v:v(h),a:e}:i.value=Ae(Ae({},v(i)),{},{a:e})},label:b,colorValue:c,pickerStyle:o,inputWidth:a,onInputChange:function(e){w.value=-1,c.value=e},handleChange:function(){var t,r=null===(t=v(c))||void 0===t?void 0:t.trim();if(\"\"!==r){var n=e.showAlpha,o=e.format,a=function(e,t,r){if(r)switch(t){case\"rgb\":return/^[rR][gG][Bb][Aa][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{4}|[0-9a-fA-F]{8})$/g.test(e)}else switch(t){case\"rgb\":return/^[rR][gG][Bb][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){2}[\\s]*(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{3}|[0-9a-fA-F]{6})$/g.test(e)}}(r,o,n);a?x(r,o,n):null!=v(l)?i.value=v(l):c.value=\"\"}else i.value=null},selectColorIndex:w,onSelectColor:function(e,t){if(w.value=t,\"\"===(e=e.trim()))i.value=null;else{var r=we(e);r?x(e,r,!0):i.value=null}}}}}),je={class:\"picker-inner\"},_e={class:\"picker-header\"};W(\".picker[data-v-6ceadec6]{background:#f7f8f9;border-radius:4px;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-inner[data-v-6ceadec6]{padding:10px}[pick-colors-theme=dark] .picker-inner[data-v-6ceadec6]{background:#1d2024;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-header[data-v-6ceadec6]{display:flex;margin-bottom:5px}.alpha[data-v-6ceadec6],.hue[data-v-6ceadec6]{margin-left:10px}.colors[data-v-6ceadec6]{margin-top:5px}\"),Pe.render=function(e,t,a,l,c,u){var s=m(\"saturation\"),f=m(\"hue\"),d=m(\"alpha\"),p=m(\"input-value\"),h=m(\"Colors\");return r(),n(\"div\",{class:\"picker\",style:o(e.pickerStyle)},[i(\"div\",je,[i(\"div\",_e,[w(s,{class:\"saturation\",hue:e.h,saturation:e.s,value:e.v,onChange:e.onSelectSaturation},null,8,[\"hue\",\"saturation\",\"value\",\"onChange\"]),w(f,{class:\"hue\",hue:e.h,onChange:e.onSelectHue},null,8,[\"hue\",\"onChange\"]),e.showAlpha?(r(),b(d,{key:0,class:\"alpha\",alpha:e.a,color:e.rgbStr,onChange:e.onSelectAlpha},null,8,[\"alpha\",\"color\",\"onChange\"])):x(\"v-if\",!0)]),w(p,{label:e.label,value:e.colorValue,width:e.inputWidth,onChange:e.onInputChange,onBlur:e.handleChange,onEnter:e.handleChange},null,8,[\"label\",\"value\",\"width\",\"onChange\",\"onBlur\",\"onEnter\"]),e.colors.length>0?(r(),b(h,{key:0,class:\"colors\",colors:e.colors,\"selected-index\":e.selectColorIndex,onChange:e.onSelectColor},null,8,[\"colors\",\"selected-index\",\"onChange\"])):x(\"v-if\",!0)])],4)},Pe.__scopeId=\"data-v-6ceadec6\",Pe.__file=\"src/picker/Picker.vue\";var Ne=e({name:\"AddColorItem\",props:{size:{type:Number,default:20},selected:{type:Boolean,default:!1}},setup:function(e){var r=h(\"theme\",{theme:\"light\"}).theme;return{addColorItemStyle:t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),lineHeight:\"\".concat(e.size,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(r)?\"#2681ff\":\"#1890ff\"):\"\"}}))}}}),Ee=[function(e){return l(\"data-v-ceb1719c\"),e=e(),c(),e}((function(){return i(\"g\",{class:\"container\"},[i(\"path\",{d:\"M544 464V160h-80v304H160v80h304v304h80V544h304v-80z\"})],-1)}))];function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".add-color-item[data-v-ceb1719c]{background:#fff;border:1px solid #d9d9d9;border-radius:5px;vertical-align:top}.container[data-v-ceb1719c]{pointer-events:none;transform:scale(.9);transform-origin:center}[pick-colors-theme=dark] .add-color-item[data-v-ceb1719c]{background:#141414;border:1px solid #434343}path[data-v-ceb1719c]{fill:#000}[pick-colors-theme=dark] path[data-v-ceb1719c]{fill:#fff}\"),Ne.render=function(e,t,a,i,l,c){return r(),n(\"svg\",{style:o(e.addColorItemStyle),class:\"add-color-item\",viewBox:\"0 0 1024 1024\",xmlns:\"http://www.w3.org/2000/svg\"},[].concat(Ee),4)},Ne.__scopeId=\"data-v-ceb1719c\",Ne.__file=\"src/add-color-item/AddColorItem.vue\";var ze=null,Me=e({name:\"ColorPicker\",components:{ColorItem:Se,Picker:Pe,AddColorItem:Ne},props:{value:{type:[String,Array]},theme:{type:String,default:\"light\"},size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},format:{type:String,default:\"hex\"},showPicker:{type:Boolean,default:void 0},showAlpha:{type:Boolean,default:!1},addColor:{type:Boolean,default:!1},deleteColor:{type:Boolean,default:!0},max:{type:Number,default:13},popupContainer:{type:[String,Object,Boolean]},zIndex:{type:Number,default:1e3},colors:{type:Array,default:function(){return[\"#ff4500\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"#ff4500\",\"#ff7d4d\",\"#00babd\",\"#1f93ff\",\"#fa64c3\"]}}},emits:[\"change\",\"update:value\",\"update:showPicker\",\"overflowMax\",\"closePicker\"],setup:function(e,r){var n=r.emit,o=u([]),a=t((function(){return v(o).map((function(t){return ve(t,\"hex\",e.showAlpha)}))}));f((function(){return e.value}),(function(){var t=e.value||\"\",r=Array.isArray(t)?t:[t];o.value=r.map((function(t){return ve(t,e.format,e.showAlpha)}))}),{immediate:!0});var i=u(void 0),l=t((function(){return v(o)[v(i)]})),c=u(!1);f((function(){return e.showPicker}),(function(){c.value=e.showPicker}),{immediate:!0});var d,p,h,m,g,y,b,w=u(null),x=u(null),A=(d=w,p=x,h={zIndex:e.zIndex},m=u({}),g={strategy:\"absolute\",placement:\"auto\",onFirstUpdate:function(){ze.update()},modifiers:[{name:\"offset\",options:{offset:[0,5]}},{name:\"computeStyles\",options:{gpuAcceleration:!1,adaptive:!0}},{name:\"flip\",options:{fallbackPlacements:[\"top\"],allowedAutoPlacements:[\"top\",\"bottom\"]}},{name:\"applyStyles\",enabled:!1},{name:\"updateState\",enabled:!0,phase:\"write\",requires:[\"computeStyles\"],fn:function(e){var t=e.state,r=t.styles,n=t.placement,o=r.popper;m.value=Le(Le(Le({},o),h),{},{transformOrigin:\"top\"===n?\"center bottom\":\"\"})}}]},f((function(){return[v(d),v(p)]}),(function(e,t){var r,n=re(e,2),o=n[0],a=n[1],i=re(t,2),l=i[0],c=i[1];if(o&&a&&(l!==o||c!==l)){null===(r=ze)||void 0===r||r.destroy();var u=o.$el||o,s=a.$el||a;S((function(){ze=_(u,s,g)}))}})),k((function(){var e;ze&&(null===(e=ze)||void 0===e||e.destroy(),ze=null)})),{instance:ze,style:m}),P=A.style,j=function(){null==v(w)&&(w.value=v(V)[0],i.value=0),void 0===e.showPicker?c.value=!0:n(\"update:showPicker\",!0)},N=function(){i.value=void 0,void 0===e.showPicker?c.value=!1:n(\"update:showPicker\",!1),n(\"closePicker\",I(Array.isArray(e.value)||e.addColor?v(o):v(o)[0]))},E=u(),z=function(){var e=M(T.mark((function e(t){var r,n,o,a;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.target,null!=(o=null===(r=n.dataset)||void 0===r?void 0:r.index)&&\"\"!==o){e.next=4;break}return e.abrupt(\"return\");case 4:if(a=+o,v(i)!==a){e.next=7;break}return e.abrupt(\"return\");case 7:null!=v(i)&&v(i)!==a?(N(),y&&clearTimeout(y),y=setTimeout((function(){j(),clearTimeout(y)}),100)):j(),i.value=a,w.value=n;case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),R=function(){var e=M(T.mark((function e(t){var r,n,o,a,i;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.target,!(!(null!==(r=v(E))&&void 0!==r&&r.isEqualNode(a))&&(null===(n=v(E))||void 0===n?void 0:n.contains(a)))){e.next=4;break}return e.abrupt(\"return\");case 4:if(i=null===(o=v(x))||void 0===o?void 0:o.$el,!((null==i?void 0:i.contains(a))||!1)){e.next=8;break}return e.abrupt(\"return\");case 8:b&&clearTimeout(b),b=setTimeout((function(){v(c)&&N()}),0);case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();f(c,(function(){v(c)&&(j(),clearTimeout(b))}));var B,D=u(e.max>v(o).length),H=t((function(){return\"string\"==typeof e.popupContainer||\"object\"===L(e.popupContainer)&&null!=e.popupContainer?e.popupContainer:\"body\"})),G=t((function(){return\"boolean\"==typeof e.popupContainer&&!1===e.popupContainer})),$=t((function(){return e.theme}));f((function(){return[e.theme,v(x)]}),(function(){S((function(){var e,t;null===(e=v(E))||void 0===e||e.setAttribute(\"pick-colors-theme\",v($)),null===(t=v(x))||void 0===t||null===(t=t.$el)||void 0===t||t.setAttribute(\"pick-colors-theme\",v($))}))}),{immediate:!0}),C(\"theme\",{theme:$});var V=u([]);return s((function(){document.addEventListener(\"mouseup\",R,!1),e.showPicker&&j()})),O((function(){document.removeEventListener(\"mouseup\",R,!1),y&&(clearTimeout(y),y=null),b&&(clearTimeout(b),b=null)})),{valueList:o,colorItemSelected:function(t){return(e.addColor?v(o).length>0:v(o).length>1)&&v(i)===t},selectedColor:l,selectedIndex:i,isShowPicker:c,addColorItemShow:D,onPickerChange:function(t){var r=v(i),a=v(o).slice(),l=v(o).length;if(null!=r){r>=0?a[r]=t:(i.value=l,a.push(t));var c=\"\";c=Array.isArray(e.value)||e.addColor?a:t,void 0===e.value?o.value=Array.isArray(c)?c:[c]:(n(\"update:value\",c),n(\"change\",c,t,r)),e.addColor&&l>=e.max&&(D.value=!1,n(\"overflowMax\"))}},colorPicker:E,onColorClick:z,pickerRef:x,onColorItemDragStart:function(e){e.dataTransfer.effectAllowed=\"move\";var t=e.target;B=+t.dataset.index},onColorItemDragOver:function(e){},onColorItemDrop:function(e){var t=+e.target.dataset.index,r=F(v(o)),a=r[B];r.splice(B,1);var i=r.slice(0,t),l=r.splice(t),c=i.concat([a]).concat(l);n(\"update:value\",c),n(\"change\",c,c[B],B)},colorItemsRef:V,pickerStyle:P,values:a,teleportDisabled:G,toPopupContainer:H}}});W(\".color-picker[data-v-3c43ade8]{display:inline-block}.color-item[data-v-3c43ade8]{margin:5px}.add-color-item[data-v-3c43ade8]{display:inline-block;margin:5px}.picker[data-v-3c43ade8]{overflow:hidden}.v-enter-active[data-v-3c43ade8],.v-leave-active[data-v-3c43ade8]{opacity:1;transform:scaleY(1);transform-origin:center top;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.v-enter-from[data-v-3c43ade8],.v-leave-to[data-v-3c43ade8]{opacity:0;transform:scaleY(0)}\"),Me.render=function(e,t,i,l,c,u){var s=m(\"color-item\"),f=m(\"add-color-item\"),d=m(\"picker\");return r(),n(\"div\",{class:\"color-picker\",ref:\"colorPicker\",onDragstart:t[0]||(t[0]=a((function(){return e.onColorItemDragStart&&e.onColorItemDragStart.apply(e,arguments)}),[\"stop\"])),onDragover:t[1]||(t[1]=a((function(){return e.onColorItemDragOver&&e.onColorItemDragOver.apply(e,arguments)}),[\"prevent\",\"stop\"])),onDrop:t[2]||(t[2]=a((function(){return e.onColorItemDrop&&e.onColorItemDrop.apply(e,arguments)}),[\"prevent\",\"stop\"])),onClick:t[3]||(t[3]=a((function(){return e.onColorClick&&e.onColorClick.apply(e,arguments)}),[\"stop\"]))},[(r(!0),n(g,null,y(e.values,(function(t,n){return r(),b(s,{class:\"color-item\",key:n,ref_for:!0,ref:function(t){return e.colorItemsRef[n]=t},size:e.size,width:e.width,height:e.height,value:t,selected:e.colorItemSelected(n),\"data-index\":n,draggable:e.valueList.length>1,format:e.format},null,8,[\"size\",\"width\",\"height\",\"value\",\"selected\",\"data-index\",\"draggable\",\"format\"])})),128)),e.addColor&&e.addColorItemShow?(r(),b(f,{key:0,class:\"add-color-item\",ref:\"addColorItem\",selected:e.colorItemSelected(-1),\"data-index\":-1},null,8,[\"selected\"])):x(\"v-if\",!0),(r(),b(A,{to:e.toPopupContainer,disabled:e.teleportDisabled},[w(P,null,{default:j((function(){return[e.isShowPicker?(r(),b(d,{key:0,class:\"picker\",style:o(e.pickerStyle),ref:\"pickerRef\",value:e.selectedColor,format:e.format,\"show-alpha\":e.showAlpha,colors:e.colors,onChange:e.onPickerChange},null,8,[\"style\",\"value\",\"format\",\"show-alpha\",\"colors\",\"onChange\"])):x(\"v-if\",!0)]})),_:1})],8,[\"to\",\"disabled\"]))],544)},Me.__scopeId=\"data-v-3c43ade8\",Me.__file=\"src/ColorPicker.vue\";export{Me as default};\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\r\n <div class=\"style-group\">\r\n <template v-if=\"componentType !== 'table'\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </template>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n props: {\r\n componentType: {\r\n // 控件类型\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"style-group\">\r\n <template v-if=\"componentType !== 'table'\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </template>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n props: {\r\n componentType: {\r\n // 控件类型\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","import { lowerCaseIncludes } from '@/utils/util'\r\n\r\nexport const useIndicatorData = (props: { [key:string]: any } = {}) => {\r\n const handleQueryColumn = (queryColumn: { [key:string]: any } = {}) => {\r\n const { label, name, location, show, indexCode } = queryColumn\r\n return {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n calcType: 'COLUMN',\r\n hrpIndexCode: indexCode\r\n }\r\n }\r\n\r\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\r\n const handleParams = (params: any) => {\r\n if (hasOwn(params, 'dataType')) {\r\n if (params.fieldType === 'DATE') {\r\n params.label = params.fieldName\r\n if (params.dataType === 'component') {\r\n params.fieldValue = '${' + params.fieldValue + '}'\r\n }\r\n }\r\n delete params.dataType\r\n }\r\n if (hasOwn(params, 'activeKey')) {\r\n delete params.activeKey\r\n }\r\n if (hasOwn(params, 'radioValue')) {\r\n delete params.radioValue\r\n }\r\n }\r\n // 递归格式化conditions的数据\r\n const handleConditions = (list: { [key: string]: any } []) => {\r\n const result = []\r\n if (list?.length) {\r\n list.forEach((item) => {\r\n if (item.join && item.conditions) {\r\n const isSameLevel = !item.conditions.some((v: any) => v.join && v.conditions)\r\n item.conditions.forEach((cs: any, index: number) => {\r\n handleParams(cs)\r\n if (isSameLevel) {\r\n if (index < item.conditions.length - 1) {\r\n result.push({\r\n join: item.join,\r\n ...cs\r\n })\r\n } else {\r\n result.push(cs)\r\n }\r\n } else {\r\n if (cs.join && cs.conditions) {\r\n result.push({\r\n conditions: handleConditions([cs]),\r\n join: item.join\r\n })\r\n } else {\r\n result.push(cs)\r\n }\r\n }\r\n })\r\n } else {\r\n handleParams(item)\r\n result.push(item)\r\n }\r\n })\r\n }\r\n return result\r\n }\r\n\r\n const handleIndicator = (indicator: { [key:string]: any } = {}) => {\r\n const {\r\n label,\r\n name,\r\n location,\r\n show,\r\n indexCode,\r\n calcType = 'COLUMN',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions,\r\n aggregate\r\n } = indicator\r\n let conditionData\r\n if (conditions) {\r\n conditionData = handleConditions(conditions)\r\n }\r\n return {\r\n label: label.trim(),\r\n columnName: name,\r\n location,\r\n show,\r\n calcType,\r\n hrpIndexCode: indexCode,\r\n aggregate,\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions: conditionData\r\n }\r\n }\r\n\r\n return async () => {\r\n const { graphicConfig, type, request } = props\r\n // 全部属性, 为了属性可拓展,所以在设计器中自由添加\r\n let {\r\n source,\r\n dataViewId,\r\n plugin = '1', // 插件类型\r\n layer, // 后台图表类型,值分0,1\r\n chartType, // 前端图表类型,实测没用\r\n classificationList = [],\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = [],\r\n // controlList = [],\r\n dataSourceId, // 所属数据源ID\r\n idxLibMode, // 指标库模式, source= INDICATOR_LIB时候必填, NORMAL_YEAR_TABLE = 普通年表, WITH_DATE_DIM_TABLE = 带有时间维度表\r\n preview = false // 预览开关\r\n } = graphicConfig || {}\r\n // 图类型,1=表 2=图\r\n if (layer == null) {\r\n if (lowerCaseIncludes(type, 'table')) {\r\n layer = '1'\r\n } else {\r\n layer = '2'\r\n }\r\n }\r\n // console.log('classificationList', classificationList)\r\n // console.log('seriesList', seriesList)\r\n // console.log('leftAxisList', leftAxisList)\r\n // console.log('rightAxisList', rightAxisList)\r\n // console.log('indicators', indicators)\r\n // console.log('controlList', controlList)\r\n // 重点处理 classificationList、seriesList、leftAxisList、rightAxisList、indicators\r\n // classificationList (取第一项) => classification\r\n let classification: Object\r\n if (Array.isArray(classificationList) && classificationList.length > 0) {\r\n const len = classificationList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = classificationList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 classification,停止遍历\r\n if (show || len === 1) {\r\n classification = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions: handleConditions(conditions)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // seriesList (取第一项) => series\r\n let series: Object\r\n if (Array.isArray(seriesList) && seriesList.length > 0) {\r\n const len = seriesList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = seriesList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 seriesList,停止遍历\r\n if (show || len === 1) {\r\n series = {\r\n label: label.trim(),\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions: handleConditions(conditions)\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // queryColumnList => queryColumns\r\n const queryColumns = []\r\n queryColumnList?.forEach((queryColumn: { [key:string]: any }) => {\r\n queryColumns.push(handleQueryColumn(queryColumn))\r\n })\r\n\r\n // leftAxisList + rightAxisList + indicators => indicatorList\r\n const indicatorList = []\r\n leftAxisList?.forEach((leftAxis: { [key:string]: any }) => {\r\n leftAxis.location = 'LEFT'\r\n indicatorList.push(handleIndicator(leftAxis))\r\n })\r\n rightAxisList?.forEach((rightAxis: { [key:string]: any }) => {\r\n rightAxis.location = 'RIGHT'\r\n indicatorList.push(handleIndicator(rightAxis))\r\n })\r\n indicators?.forEach((indicator: { [key:string]: any }) => {\r\n indicator.location = 'LEFT'\r\n indicatorList.push(handleIndicator(indicator))\r\n })\r\n // queryColumns 表格配置为空返回\r\n if (layer === '1' && queryColumns.length === 0) {\r\n return\r\n // queryColumns 图表配置为空返回\r\n } else if (layer === '2' && indicatorList.length === 0) {\r\n return\r\n }\r\n try {\r\n // @ts-ignore\r\n const res = await request.post('/diagram', {\r\n source,\r\n dataViewId,\r\n plugin,\r\n layer,\r\n chartType,\r\n classification,\r\n series,\r\n indicatorList,\r\n queryColumns,\r\n pageFlag: true,\r\n sqlConditions: [],\r\n dataSourceId,\r\n idxLibMode,\r\n preview\r\n })\r\n return res\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n}\r\n\r\nexport default useIndicatorData\r\n","import dayjs from 'dayjs'\nconst runCode = (code: string, data?: { [key:string]: any }) => {\n const useFn = {\n dayjs,\n ...data\n }\n let paramsStr = ''\n const params = []\n for (const key in useFn) {\n paramsStr += `${key},`\n params.push(useFn[key])\n }\n paramsStr = paramsStr.replace(/,$/, '')\n const runFn = `function (${paramsStr}){return ${code}}`\n let result\n try {\n // eslint-disable-next-line no-new-func\n result = Function(`\"use strict\";return (${runFn})`)()(...params)\n } catch (e) {\n // console.error()\n return code\n }\n return result\n}\n\nexport default runCode\n","import runCode from '@/utils/runCode'\nexport const useVariablesInText = (\n formatter: string = '',\n { textData, codeData }: { textData?: { [key:string]: any }, codeData?: { [key:string]: any } } = {},\n { useNewline = false, useSpace = false } = {}\n) => {\n // 引入全局变量\n const data = { ...textData }\n const variables = (formatter).match(/\\{(.+?)\\}/g)\n if (variables == null || variables.length === 0) {\n return formatter\n }\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n let statement = variable.slice(1, -1).trim()\n const reg = /[\\u4e00-\\u9fa5a-z-_A-Z0-9]*/g\n const textVariables = statement.match(reg)\n for (let j = 0; j < textVariables.length; j++) {\n const textVariable = textVariables[j]\n const usedVariable = data[textVariable]\n if (usedVariable != null) {\n // 使用的变量\n statement = statement.replace(textVariable, usedVariable)\n }\n }\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n statement = runCode(statement, codeData)\n }\n formatter = formatter.replace(variable, statement)\n }\n // 替换换行\n if (useNewline) {\n formatter = formatter?.replace(/\\n|\\\\n/g, '<br/>')\n }\n // 替换空格\n if (useSpace) {\n formatter = formatter?.replace(/\\s{2,}?/g, ' ')\n }\n return formatter\n}\n\nexport default useVariablesInText\n","import runCode from '@/utils/runCode'\nexport const useValueFormatter = (formatter: string, value:string) => {\n if (formatter == null) return value\n const variables = (formatter).match(/\\{.*\\}/g)\n if (variables == null || variables.length === 0) {\n return value\n }\n const len = variables.length\n for (let i = 0; i < len; i++) {\n const variable = variables[i]\n if (variable == null || variable === '') break\n let statement = variable.slice(1, -1)?.trim()\n statement = statement?.replace(/value/g, value)\n try {\n let result = statement\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n result = runCode(statement)\n }\n formatter = formatter.replace(variable, result)\n } catch (e) {\n formatter = formatter.replace(variable, statement)\n }\n }\n return formatter\n}\n\nexport default useValueFormatter\n","import { computed, unref } from 'vue'\r\nimport useVariablesInText from '@/hooks/useVariablesInText'\r\nimport useValueFormatter from '@/hooks/useValueFormatter'\r\nimport { handleFormatter } from '@/utils/util'\r\n\r\nexport const getTransformProps = (chartsOptions, chartData, fontSize) => {\r\n switch (chartsOptions.type) {\r\n case 'bar':\r\n return getBarTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'line':\r\n return getLineTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'pie':\r\n return getPieTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'comboGraph':\r\n return getComboGraphTransfromProps(chartsOptions, chartData, fontSize)\r\n default:\r\n return {}\r\n }\r\n}\r\n\r\nconst getBarTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const series = computed(() => {\r\n const ds = dataset\r\n const len = ds.length\r\n const series = []\r\n for (let i = 0; i < len; i++) {\r\n const item = {\r\n ...ds[i],\r\n type: 'bar',\r\n barWidth: chartsOptions.barWidth\r\n } as { [key: string]: any }\r\n if (chartsOptions.isStack) {\r\n item.stack = 'stack'\r\n }\r\n item.label = {\r\n show: chartsOptions.labelShow,\r\n fontSize: chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n color: chartsOptions.labelColor\r\n }\r\n series.push(item)\r\n }\r\n return series\r\n })\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'value' : 'category',\r\n data: chartsOptions.isUseHorizontalAxis ? null : unref(xAxisData),\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.xAxisInverse\r\n : chartsOptions.axisInverse,\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'category' : 'value',\r\n data: chartsOptions.isUseHorizontalAxis ? dimensions : null,\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.axisInverse\r\n : chartsOptions.yAxisInverse,\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n rotate: chartsOptions.yAxisLabelRotate,\r\n width: chartsOptions.yAxisLabelWidth,\r\n overflow: chartsOptions.yAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getLineTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n for (let i = 0; i < len; i++) {\r\n temp.push({\r\n type: 'line',\r\n ...dataset[i],\r\n symbolSize: chartsOptions.symbolSize,\r\n smooth: chartsOptions.smooth,\r\n lineStyle: {\r\n width: chartsOptions.lineStyleWidth\r\n }\r\n })\r\n }\r\n return temp\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n textStyle: {\r\n fontSize: fontSize\r\n },\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n }\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: unref(xAxisData),\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getPieTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dataset = [] } = chartData\r\n let { data = [] } = dataset[0] || {}\r\n if (Array.isArray(chartsOptions.colors)) {\r\n const isUseLabelColors = chartsOptions.isUseLabelColors\r\n const colors = chartsOptions.colors\r\n data = data.map((item, index) => ({\r\n label: isUseLabelColors ? { color: colors[index] } : {},\r\n ...item\r\n }))\r\n }\r\n return {\r\n // 提示\r\n tooltip: {\r\n show: chartsOptions.tooltipShow,\r\n trigger: chartsOptions.tooltipTrigger,\r\n formatter: (params) => {\r\n const { marker, seriesName, name, value, percent, data } = params || {}\r\n return useVariablesInText(\r\n chartsOptions.tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n percent,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n d: percent,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize\r\n }\r\n },\r\n series: [\r\n {\r\n data,\r\n type: 'pie',\r\n radius: [chartsOptions.innerRadius, chartsOptions.outerRadius],\r\n center: [chartsOptions.centerLeft, chartsOptions.centerTop],\r\n roseType: chartsOptions.roseType,\r\n avoidLabelOverlap: false,\r\n minAngle: chartsOptions.minAngle,\r\n label: {\r\n show: chartsOptions.labelPosition !== 'center' && chartsOptions.labelShow,\r\n color: chartsOptions.labelColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n formatter: handleFormatter(chartsOptions.labelFormatter)\r\n },\r\n labelLine: {\r\n show: chartsOptions.labelLineShow,\r\n length: chartsOptions.labelLineLength,\r\n length2: chartsOptions.labelLineLength2\r\n },\r\n emphasis: {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n shadowColor: 'rgba(0, 0, 0, 0.5)'\r\n },\r\n label: {}\r\n }\r\n }\r\n ]\r\n }\r\n}\r\n\r\nconst getComboGraphTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n temp.push({\r\n type: seriesType?.type,\r\n yAxisIndex: seriesType?.axisIndex,\r\n ...dataset[i]\r\n })\r\n }\r\n return temp\r\n })\r\n const yAxis = computed(() => {\r\n const yAxis = chartsOptions.yAxis\r\n return yAxis?.map((axis) => {\r\n return {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(axis.axisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n }\r\n })\r\n })\r\n return {\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n const { tooltipFormatter: _tooltipFormatter } = seriesType || {}\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n // 如果系列有提示框组件就使用自定义,没有就用默认的\r\n _tooltipFormatter || tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n seriesName,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n type: 'category',\r\n data: unref(xAxisData),\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: unref(yAxis),\r\n series: unref(series)\r\n }\r\n}\r\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface KeyTypeDataFieldNames {\n name: string\n types: {\n label: string\n value: string\n } []\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrKey = (data: Data = [], dataFieldNames: KeyTypeDataFieldNames) => {\n let { name = 'name', types = [] } = dataFieldNames || {}\n name = name?.trim() || name\n const set = new Set()\n const map = new Map<string, any []>()\n const dataLen = data.length\n const typesLen = types.length\n // 只有一条记录\n if (dataLen === 1) {\n const vs = []\n // data 为一个值取第一个\n for (let i = 0; i < typesLen; i++) {\n const type = types[i]\n const { label, value } = type\n const v = { ...data[0], value: data[0][value] }\n set.add(label)\n // 值列表\n vs.push(v)\n }\n const n = data[0][name] || ''\n map.set(n, vs)\n } else {\n for (let i = 0; i < dataLen; i++) {\n const item = data[i]\n const x = item[name]\n set.add(x)\n for (let j = 0; j < typesLen; j++) {\n const type = types[j]\n const { label, value } = type\n const v = { ...item, value: item[value] }\n if (map.has(label)) {\n const m = map.get(label)\n m.push(v)\n map.set(label, m)\n } else {\n map.set(label, [v])\n }\n }\n }\n }\n\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\n\nexport default useTransformChartDataByAttrKey\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface ValueTypeDataFieldNames {\n name: string\n value: string\n type: string\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrValue = (data: Data, dataFieldNames?: ValueTypeDataFieldNames) => {\n let { name = 'name', value = 'value', type = 'type' } = dataFieldNames || {}\n // 处去字符串\n name = name?.trim()\n value = value?.trim()\n type = type?.trim()\n const set = new Set()\n const map = new Map()\n const len = data.length\n for (let i = 0; i < len; i++) {\n const item = data[i]\n // x轴\n const x = item[name] || ''\n // y轴\n const y = item[value] || ''\n // 系列(类型)\n const t = item[type] || ''\n set.add(x)\n if (map.has(t)) {\n const arr = map.get(t)\n arr.push({ name: x, value: y, ...item })\n map.set(t, arr)\n } else {\n map.set(t, [{ name: x, value: y, ...item }])\n }\n }\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\nexport default useTransformChartDataByAttrValue\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrapRef\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return chartGraphicOptions as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return chartGraphicConfig as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const chartGraphicConfig = inject(GRAPHIC_CONFIG) || {}\r\n const chartGraphicOptions = inject(CHARTS_OPTIONS) || {}\r\n const echartRef = ref<HTMLElement>(null)\r\n const chartWrapRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {}\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n if (chartWrapRef.value) {\r\n observer = new ResizeObserver(handleResize)\r\n observer.observe(chartWrapRef.value)\r\n }\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrapRef\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return chartGraphicOptions as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return chartGraphicConfig as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const chartGraphicConfig = inject(GRAPHIC_CONFIG) || {}\r\n const chartGraphicOptions = inject(CHARTS_OPTIONS) || {}\r\n const echartRef = ref<HTMLElement>(null)\r\n const chartWrapRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {}\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n if (chartWrapRef.value) {\r\n observer = new ResizeObserver(handleResize)\r\n observer.observe(chartWrapRef.value)\r\n }\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group :componentType=\"type\"></style-group>\n </a-tab-pane>\n </a-tabs>\n <template v-if=\"isShowStyleConfig\">\n <div\n v-if=\"type === 'table'\"\n id=\"table-wrap\"\n class=\"chart-component\"\n ref=\"tableWrapRef\"\n style=\"width: 100%; height: 290px\"\n >\n </div>\n <chart-graph\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n </template>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = [\n 'text',\n 'proportion',\n 'select',\n 'checkbox',\n 'radio',\n 'radar'\n ]\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n modifyWhite(cloneComponent)\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n\n // 修改组件的部分颜色(只影响指标库配置弹窗中的显示,不影响最终预览效果),比如文本控件如果设置为白色,在指标库配置弹窗中就看不见了\n function modifyWhite (component: { [key: string]: any }) {\n if (['#ffffff', '#fff'].includes(component?.color?.toLowerCase())) {\n component.color = '#000'\n }\n if (['#ffffff', '#fff'].includes(component?.variableColor?.toLowerCase())) {\n component.variableColor = '#000'\n }\n if (['#ffffff', '#fff'].includes(component?.increaseColor?.toLowerCase())) {\n component.increaseColor = '#000'\n }\n if (['#ffffff', '#fff'].includes(component?.declineColor?.toLowerCase())) {\n component.declineColor = '#000'\n }\n }\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n let refreshData: any\n if (isShowStyleConfig && type.value === 'table') {\n refreshData = (window as any).refreshData\n } else {\n refreshData = unref(componentRef)?.refreshData\n }\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n // onMounted(() => {\n // refreshData()\n // })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n .ant-tabs-nav {\n margin-bottom: 4px;\n }\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group :componentType=\"type\"></style-group>\n </a-tab-pane>\n </a-tabs>\n <template v-if=\"isShowStyleConfig\">\n <div\n v-if=\"type === 'table'\"\n id=\"table-wrap\"\n class=\"chart-component\"\n ref=\"tableWrapRef\"\n style=\"width: 100%; height: 290px\"\n >\n </div>\n <chart-graph\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n </template>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = [\n 'text',\n 'proportion',\n 'select',\n 'checkbox',\n 'radio',\n 'radar'\n ]\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n modifyWhite(cloneComponent)\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n\n // 修改组件的部分颜色(只影响指标库配置弹窗中的显示,不影响最终预览效果),比如文本控件如果设置为白色,在指标库配置弹窗中就看不见了\n function modifyWhite (component: { [key: string]: any }) {\n if (['#ffffff', '#fff'].includes(component?.color?.toLowerCase())) {\n component.color = '#000'\n }\n if (['#ffffff', '#fff'].includes(component?.variableColor?.toLowerCase())) {\n component.variableColor = '#000'\n }\n if (['#ffffff', '#fff'].includes(component?.increaseColor?.toLowerCase())) {\n component.increaseColor = '#000'\n }\n if (['#ffffff', '#fff'].includes(component?.declineColor?.toLowerCase())) {\n component.declineColor = '#000'\n }\n }\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n let refreshData: any\n if (isShowStyleConfig && type.value === 'table') {\n refreshData = (window as any).refreshData\n } else {\n refreshData = unref(componentRef)?.refreshData\n }\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n // onMounted(() => {\n // refreshData()\n // })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n .ant-tabs-nav {\n margin-bottom: 4px;\n }\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"config-modal\" v-if=\"!isUpdate\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide, nextTick } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT,\n REQUEST\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n },\n request: {\n // 外部请求方法\n default: null\n }\n },\n setup (props, { expose }) {\n const isUpdate = ref(false)\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n const updateIndicatorData = () => {\n isUpdate.value = true\n if (unref(component).graphicConfig) {\n graphicConfig.value = cloneDeep(unref(component).graphicConfig)\n }\n if (unref(component).chartsOptions) {\n chartsOptions.value = cloneDeep(unref(component).chartsOptions)\n }\n nextTick(() => {\n isUpdate.value = false\n })\n }\n const getIndicatorData = () => {\n return {\n graphicConfig: unref(graphicConfig),\n chartsOptions: unref(chartsOptions)\n }\n }\n (window as any).getIndicatorData = getIndicatorData\n if (props.request) {\n provide(REQUEST, props.request)\n }\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions,\n updateIndicatorData\n })\n return {\n isUpdate\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","<template>\n <div class=\"config-modal\" v-if=\"!isUpdate\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide, nextTick } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT,\n REQUEST\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n },\n request: {\n // 外部请求方法\n default: null\n }\n },\n setup (props, { expose }) {\n const isUpdate = ref(false)\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n const updateIndicatorData = () => {\n isUpdate.value = true\n if (unref(component).graphicConfig) {\n graphicConfig.value = cloneDeep(unref(component).graphicConfig)\n }\n if (unref(component).chartsOptions) {\n chartsOptions.value = cloneDeep(unref(component).chartsOptions)\n }\n nextTick(() => {\n isUpdate.value = false\n })\n }\n const getIndicatorData = () => {\n return {\n graphicConfig: unref(graphicConfig),\n chartsOptions: unref(chartsOptions)\n }\n }\n (window as any).getIndicatorData = getIndicatorData\n if (props.request) {\n provide(REQUEST, props.request)\n }\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions,\n updateIndicatorData\n })\n return {\n isUpdate\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","import { withInstall } from '@/utils/withInstall'\r\nimport IndicatorLibrary from './IndicatorLibrary.vue'\r\nexport const EcanIndicatorLibrary = withInstall(IndicatorLibrary)\r\nexport default EcanIndicatorLibrary\r\n","import { withInstall } from '@/utils/withInstall'\r\nimport ChartGraph from './ChartGraph.vue'\r\nexport const EcanChartGraph = withInstall(ChartGraph)\r\nexport default EcanChartGraph\r\n","import { App } from 'vue'\nimport * as components from './components'\nconst install = (app: App, options: any) => {\n const { request } = options\n app.provide('$request', request)\n Object.keys(components).forEach((key) => {\n const component = components[key]\n if (component.install) {\n app.use(component)\n }\n })\n}\n\n// 部分导出\nexport * from './components'\n// 全局安装\nexport default {\n install\n}\n"],"names":["withInstall","main","extra","app","comp","key","REQUEST","INDICATOR_URL","_a","INDICATOR_TOKEN","DATA_LIST","SELECTED_COMPONENT","GRAPHIC_CONFIG","UPDATE_GRAPHIC_CONFIG","SHOW_STYLE_CONFIG","REFRESH_DATA","CHARTS_OPTIONS","ZOOM_FONT_SIZE","UPDATE_CHARTS_OPTIONS","SOURCE_TYPE","CHANGE_CONDITION","DATA_VIEW_COLUMNS","barProps","lineProps","pieProps","customGraphProps","comboGraphProps","propsMap","_sfc_main$r","defineComponent","ASpin","ATreeSelect","Draggable","request","inject","indicatorToken","unref","graphicConfig","updateGraphicConfig","dataViewId","computed","treeSelectLoading","ref","treeSelectData","PAGE_ID","selectedItem","reactive","echoSelectedNode","id","data","_b","transTreeData","pId","list","item","handleLoadData","treeNode","isFirst","value","onDataViewIdChange","handleDataViewColumns","setDataList","dataViewLoading","dataViewList","res","success","rows","row","columns","column","mapGenericType","genericType","onDragStart","event","dataViews","dataView","copyItem","onMounted","_hoisted_1","_component_draggable","_resolveComponent","_openBlock","_createElementBlock","_createVNode","_component_a_spin","_ctx","_withCtx","_component_a_tree_select","_createElementVNode","_hoisted_2","_cache","$event","_hoisted_3","_createTextVNode","_toDisplayString","bound01","n","max","isOnePointZero","isPercent","isPercentage","boundAlpha","a","convertToPercentage","pad2","c","rgbToRgb","r","g","b","hue2rgb","p","q","t","hslToRgb","h","s","l","rgbToHsv","min","v","d","hsvToRgb","i","f","mod","rgbToHex","allow3Char","hex","convertHexToDecimal","parseIntFromHex","val","names","inputToRGB","color","rgb","ok","format","stringInputToObject","isValidCSSUnit","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","named","match","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","toHsv","_ref","hsv","toHex","_ref2","mix","rgb1","rgb2","amount","getHue","light","hue","getSaturation","saturation","getValue","generate","opts","patterns","pColor","colorString","_i","_hsv","_colorString","_ref3","index","opacity","darkColorString","presetPrimaryColors","presetPalettes","presetDarkPalettes","containers","styleElements","usage","createStyleElement","styleElement","insertCss","css","options","position","container","containerId","_objectSpread","target","source","ownKeys","sym","_defineProperty","obj","warn","valid","message","warning","isIconDefinition","node","rootProps","child","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","iconStyles","cssInjectedFlag","useInsertStyles","styleStr","nextTick","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","twoToneColorPalette","setTwoToneColors","secondaryColor","getTwoToneColors","IconBase","props","context","_props$context$attrs","icon","restProps","colors","VueIcon","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","len","arr2","_arr","_n","_d","_s","_e","err","setTwoToneColor","_normalizeTwoToneColo","_normalizeTwoToneColo2","getTwoToneColor","Icon","_classObj","cls","spin","rotate","tabindex","onClick","classObj","svgClassString","iconTabIndex","svgStyle","AntdIcon","AppstoreAddOutlined","AppstoreAddOutlinedSvg","AppstoreAddOutlined$1","CaretDownOutlined","CaretDownOutlinedSvg","CaretDownOutlined$1","CaretRightOutlined","CaretRightOutlinedSvg","CaretRightOutlined$1","CloseOutlined","CloseOutlinedSvg","CloseOutlined$1","CopyOutlined","CopyOutlinedSvg","CopyOutlined$1","DeleteOutlined","DeleteOutlinedSvg","DeleteOutlined$1","DoubleRightOutlined","DoubleRightOutlinedSvg","DoubleRightOutlined$1","DownOutlined","DownOutlinedSvg","DownOutlined$1","MinusCircleOutlined","MinusCircleOutlinedSvg","MinusCircleOutlined$1","PlusCircleOutlined","PlusCircleOutlinedSvg","PlusCircleOutlined$1","PlusOutlined","PlusOutlinedSvg","PlusOutlined$1","SettingOutlined","SettingOutlinedSvg","SettingOutlined$1","_sfc_main$q","AInputSearch","APagination","selectedComponent","selectedConfig","dataSourceId","dataSourceList","dataSourceLoading","pagination","searchText","handleDataSourceList","params","total","mapScope","scope","onToggleGroup","onSearch","onChange","debounce","onPaginationChange","page","pageSize","dimensions","types","dataViewColumns","lostDim","_hoisted_4","_hoisted_5","_component_a_input_search","_Fragment","_renderList","dataSource","_normalizeClass","_createBlock","_component_caret_down_outlined","_component_caret_right_outlined","dataViewColumn","_hoisted_6","_component_a_pagination","_sfc_main$p","DataSourceList","DataViewList","_component_data_source_list","_createCommentVNode","focus$1","el","_sfc_main$o","AModal","AButton","expose","customSortList","handleCustomSortList","e","updateCustomSortList","label","name","isDataChange","visible","showModal","hideModal","onCancel","watch","customOrderColumns","_component_a_modal","_component_a_button","_sfc_main$n","focus","ASelect","ASelectOption","AInput","ACheckbox","ACollapse","ACollapsePanel","ATag","ACheckableTag","title","createGroupTitle","activeKey","customGroupList","customGroupTitleSet","customGroupTitleList","customGroupEditTitleList","length","selectCount","count","customGroup","onAddGroup","onDeleteGroup","selectGroupIndex","onMoveInGroup","selectList","onEditTitle","onFinishEditTitle","onTitleChange","useOtherGroup","updateCustomGroup","customGroups","otherGroupName","groupInfoMap","onUseOtherGroup","allLabelSet","handleInitData","handleCustomGroupList","_hoisted_7","_resolveDirective","_component_a_select_option","_component_a_input","_component_a_checkbox","_component_a_collapse","_component_a_collapse_panel","_withDirectives","_hoisted_8","_component_a_tag","_hoisted_9","_component_a_checkable_tag","module","this","lowerCaseIncludes","v1","v2","handleFormatter","formatter","hasOwn","k","dayjs","quarterOfYear","_sfc_main$m","ADatePicker","ADropdown","AMenu","AMenuItem","ASubMenu","APopover","ATabs","ATabPane","ARadioGroup","ARadio","AInputNumber","controlList","keyName","prop","propName","showTime","dateRadioStyle","formatList","tabDateList","compareList","menuRule","dataTypeList","condition","_c","_f","_g","_h","_j","_k","popoverVisible","isDateType","fieldOptions","type","result","updateCondition","deleteCondition","_condition","_level","_index","onDelete","cloneDeep","onFieldChange","option","typeGuid","ruleOptions","dateBtnLabel","downIconStyle","style","valueOptions","handleValueOptions","onRuleChange","onDataTypeChange","fieldValues","onFieldValueSelectChange","values","handleMenuClick","keyPath","tabItem","setTabItemData","fieldType","fieldName","rule","changeTabInitDate","changeRadioValue","beforeNum","afterNum","getDateValue","getFieldValue","tabIndex","blurCompare","flag","okDatePickConfig","radioValue","calcWays","_hoisted_10","_component_a_select","_component_a_dropdown","_component_a_menu","_normalizeStyle","mr","_component_a_sub_menu","fl","_component_DownOutlined","_vShow","_component_a_date_picker","_component_a_popover","_component_a_tabs","_component_a_tab_pane","_component_a_radio_group","_component_a_radio","_component_a_input_number","_hoisted_12","_component_close_outlined","_sfc_main$l","Condition","_component_condition_list","_component_condition","_sfc_main$k","emit","truncationList","_withScopeId","_pushScopeId","_popScopeId","_sfc_main$j","ConditionList","TruncationList","handleTitle","conditionList","addCondition","join","provide","level","conditions","wrapperConditions","wrapperLevel","onUpdatetruncation","updateFilter","onOk","getHrpIndexWithComplex","indexGuid","_component_truncation_list","nanoid","size","bytes","byte","getParentKey","tree","parentKey","_sfc_main$i","ARow","ACol","ATextarea","ATree","leftAxisList","rightAxisList","indicators","queryColumnList","fieldList","field","myValue","searchFuncValue","insertText","str","tmpStr","sel","startPos","endPos","cursorPos","calculMethods","selectedElem","inputVal","dataList","expandedKeys","autoExpandParent","funcDescsData","getFuncDescs","onExpand","keys","expanded","self","_component_a_row","_component_a_col","_component_a_textarea","_component_a_tree","leaf","_hoisted_11","_hoisted_14","_sfc_main$h","FormulaCalculation","AForm","AFormItem","builtInValueSourceList","allValueSourceList","labelCol","wrapperCol","formDefaultValue","formRef","formState","calcType","formula","builtInValueSource","builtInFormula","builtInCalcWay","saveIndicator","validateLabel","_rule","formRules","onOK","onChangeBuiltInFormula","accessLogic","principle","comefrom","_component_a_form","_component_a_form_item","_component_formula_calculation","_sfc_main$g","CalculationModal","FilterModal","CustomGroupModal","CustomSortModal","ACard","AMenuDivider","idxList","dimList","isAllowAdd","handleListItemData","listData","reNameSame","handleCardItemData","cardData","cardItem","currentList","originalList","addItem","sameNums","checkItem","onCheckboxChange","onDropEnd","onDragItemEnd","onDragItemAdd","listItemData","cardItemData","onDragItemSort","newIndex","oldIndex","from","to","fromType","toType","currItem","onDragItemStart","cardItemList","editLabelList","isLabelChange","onEdit","onLabelChange","onCommitLabelChange","DEFAULT","sortList","onSort","order","handleSortTitle","text","sort","currentItem","currentIndex","customSortModalRef","customGroupModalRef","showCustomSortModal","handleCustomSortTitle","showCustomGroupModal","handleCustomGroupTitle","aggregateList","onAggregateChange","onDateFormatChange","handleAggregateTitle","handleFilterTitle","filterModalRef","showFilterModal","calculationModalRef","calculationModalMode","onShowCalculationModal","mode","fieldData","getFieldData","formFields","dataViewMap","onVisibleChange","itemName","copyDataViewName","input","_hoisted_16","_directive_focus","_component_a_card","_component_plus_outlined","_hoisted_13","_withModifiers","sortItem","_component_a_menu_item","_component_a_menu_divider","aggregate","_hoisted_17","_component_copy_outlined","_component_delete_outlined","_component_custom_sort_modal","_component_custom_group_modal","_component_filter_modal","_component_calculation_modal","cardTypeMap","_sfc_main$f","DataConfigCard","selectedComponentType","isGroupTable","cardsMap","cards","allMap","graphicConfigMap","startStr","startIndex","componentMapKeys","map","componentMapKey","card","_component_data_config_card","_mergeProps","propsGroups","mapAttributeProps","component","width","suffix","height","centerLeft","centerTop","innerRadius","outerRadius","tooltipTrigger","tooltipTextStyleColor","tooltipFormatter","legendTextStyleColor","legendTop","legendLeft","legendOrient","labelFormatter","labelColor","isUseLabelColors","labelFontSize","labelPosition","onlyType","labelLineLength","labelLineLength2","symbolSize","smooth","lineStyleWidth","xAxisSplitLineShow","xAxisSplitLineStyleColor","xAxisLabelColor","xAxisLineStyleColor","xAxisTickShow","xAxisLabelFormatter","yAxisSplitLineShow","yAxisLineAlwaysDisplay","yAxisSplitLineStyleColor","yAxisLabelColor","yAxisLineStyleColor","yAxisLabelFormatter","roseType","yAxis","layout","seriesTypes","useLabelIndex","barWidth","gridTop","gridBottom","gridLeft","gridRight","gridContainLabel","toolboxOrient","toolboxItemSize","toolboxItemGap","toolboxLeft","toolboxTop","toolboxDownloadUrl","toolboxInfoText","isUseHorizontalAxis","axisInverse","xAxisInverse","yAxisInverse","areaStyleOpacity","step","xAxisLabelWidth","xAxisLabelOverflow","optionType","xAxisLabelRotate","yAxisLabelWidth","yAxisLabelOverflow","yAxisLabelRotate","isStack","labelShow","xAxisMinInterval","yAxisMinInterval","minAngle","xAxisLabelInterval","toolboxLocation","toolboxDownloadShow","toolboxDataZoomShow","toolboxInfoShow","_sfc_main$e","_sfc_main$d","inputValue","getPrefixOrSuffixValue","prefixValue","suffixValue","_createSlots","_sfc_main","ARadioButton","_component_a_radio_button","_sfc_main$b","ASwitch","_component_a_switch","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","state","attributes","effect","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","modifiers","visited","modifier","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","fn","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","N","E","F","L","z","M","R","B","u","w","j","S","C","O","I","A","P","_","D","T","H","G","$","V","Y","J","W","X","U","K","Q","Z","ee","te","re","ne","oe","ae","ie","le","ce","ue","se","fe","de","pe","he","ve","be","we","xe","me","ge","ye","Se","ke","Ce","Oe","Ie","Ae","Pe","je","Ne","Ee","Fe","Le","ze","Me","_sfc_main$9","PickColors","colorValue","_component_pick_colors","_sfc_main$8","onColorsChange","_sfc_main$7","InputNumber","temp","firstItem","_component_appstore_add_outlined","_resolveDynamicComponent","_component_minus_circle_outlined","_sfc_main$6","_sfc_main$5","Input","RadioGroup","Select","Switch","ColorPick","ColorGroupPick","FormGroup","Textarea","chartsOptions","updateChartsOptions","setFormProps","setOptions","mapAttributeProp","valueProp","changeValueEventName","events","updateValue","attrs","reduce","excludeType","$props","$setup","$data","$options","formProp","_sfc_main$4","workerId","JsonWorker","TsWorker","EditorWorker","dom","editor","themeMap","monacoEditor","code","onUnmounted","_sfc_main$3","PropsToForm","Editor","activePanel","refreshData","handleChangeType","detailPropsGroups","propsGroup","enableProps","pickProps","pick","isRenderForm","detailPropsGroup","componentType","onSwitchClick","checked","onSwitchChange","ComponentString","updateComponentOptions","optionCode","onEditorChange","isShowOptionEditor","_component_props_to_form","_component_editor","useIndicatorData","handleQueryColumn","queryColumn","location","show","indexCode","handleParams","handleConditions","isSameLevel","cs","handleIndicator","indicator","conditionData","plugin","layer","chartType","classificationList","seriesList","idxLibMode","preview","classification","series","queryColumns","indicatorList","leftAxis","rightAxis","runCode","useFn","paramsStr","runFn","useVariablesInText","textData","codeData","useNewline","useSpace","variables","variable","statement","reg","textVariables","textVariable","usedVariable","useValueFormatter","getTransformProps","chartData","fontSize","getBarTransfromProps","getLineTransfromProps","getPieTransfromProps","getComboGraphTransfromProps","dataset","ds","xAxisData","marker","seriesName","percent","seriesType","_tooltipFormatter","useTransformChartDataByAttrKey","dataFieldNames","set","dataLen","typesLen","vs","useTransformChartDataByAttrValue","_sfc_main$2","chartGraphicOptions","chartGraphicConfig","observer","echartRef","chartWrapRef","myChart","loading","myOption","chartOption","chartsOptionsValue","handleIndicatorDataset","keyTypeDataFieldNames","useDataFieldNames","handleIndicatorPieDataset","handleIndicatorData","indicatorData","fieldNames","emptyOption","setChartOption","handleResize","evalCopy","echarts","onBeforeUnmount","_sfc_main$1","DataGroup","StyleGroup","ChartGraph","componentRef","isShowStyleConfig","notGraphicList","cloneComponent","modifyWhite","pickComponent","without","config","fullWidth","_component_chart_graph","DataList","DataConfig","isUpdate","sourceType","isMerge","getDataList","updateIndicatorData","getIndicatorData","_component_data_config","_component_data_list","EcanIndicatorLibrary","IndicatorLibrary","EcanChartGraph","install","components"],"mappings":"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","x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,53,63,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137]}
|