@ecan-bi/indicator-library 1.1.10 → 1.1.12
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-2d12b4f2.mjs +76217 -0
- package/dist/index-2d12b4f2.mjs.map +1 -0
- package/dist/index-37849a29.mjs +3922 -0
- package/dist/index-37849a29.mjs.map +1 -0
- package/dist/index.es.js +11 -18955
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +388 -17
- 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 +2 -2
- package/types/utils/loadAsyncComponent.d.ts +3 -0
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-config/style-config-group/table-props/props.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/CodeOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CodeOutlined.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/InfoCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/InfoCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/LoadingOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MenuOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/MenuOutlined.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/QuestionCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/QuestionCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/ReloadOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/ReloadOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/SettingOutlined.js","../node_modules/@ecan-bi/tools/lib/index.es.js","../src/utils/util.ts","../src/indicator/indicator-library/data-list/IndSourceList.vue","../src/indicator/indicator-library/data-list/IndSourceList.vue","../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/nanoid/index.prod.js","../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","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/config-name/ConfigName.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/config-name/ConfigName.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/sort-by-cpnt/SortByCpnt.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/sort-by-cpnt/SortByCpnt.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/dim-by-count/DimByCount.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/dim-by-count/DimByCount.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/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/slider/Slider.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/slider/Slider.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/table-column-config/components/Condition.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/Condition.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/ConditionList.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/ConditionList.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/ConditionWrap.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/ConditionWrap.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/ConditionsTable.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/components/ConditionsTable.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/TableColumnConfig.vue","../src/indicator/indicator-library/data-config/style-config-group/table-column-config/TableColumnConfig.vue","../src/indicator/indicator-library/data-config/style-config-group/indicator-container/IndicatorContainer.vue","../src/indicator/indicator-library/data-config/style-config-group/indicator-container/IndicatorContainer.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/indicator/indicator-library/data-config/control-group/ControlCard.vue","../src/indicator/indicator-library/data-config/control-group/ControlCard.vue","../src/indicator/indicator-library/data-config/control-group/ControlList.vue","../src/indicator/indicator-library/data-config/control-group/ControlList.vue","../src/indicator/indicator-library/data-config/control-group/ControlGroup.vue","../src/indicator/indicator-library/data-config/control-group/ControlGroup.vue","../src/indicator/indicator-library/data-config/variable-group/VariableItem.vue","../src/indicator/indicator-library/data-config/variable-group/VariableItem.vue","../src/indicator/indicator-library/data-config/variable-group/VariableGroup.vue","../src/indicator/indicator-library/data-config/variable-group/VariableGroup.vue","../src/hooks/useIndicatorData.ts","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/table-graph/TableGraph.vue","../src/indicator/table-graph/TableGraph.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'\n// import { Plugin } from 'vue'\n\n// export type SFCWithInstall<T> = T & Plugin\n\n// export 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\n// export 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\n// export const withNoopInstall = <T>(component: T) => {\n// (component as SFCWithInstall<T>).install = NOOP\n\n// return component as SFCWithInstall<T>\n// }\nexport const withInstall = (comp) => {\n comp.install = (app) => {\n // 注册组件\n app.component(comp.name, comp)\n }\n return comp\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 TABLE_OPTIONS = 'TABLE_OPTIONS'\n\nexport const ZOOM_FONT_SIZE = 18\n\nexport const UPDATE_CHARTS_OPTIONS = 'UPDATE_CHARTS_OPTIONS'\n\nexport const UPDATE_TABLE_OPTIONS = 'UPDATE_TABLE_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 const RENDER_USED_COMPONENTS = 'RENDER_USED_COMPONENTS'\n\nexport const UPDATE_USED_COMPONENT = 'UPDATE_USED_COMPONENT'\n\nexport const UPDATE_COMPONENTS_CONFIG = 'UPDATE_COMPONENTS_CONFIG'\n\nexport const MAP_ATTRIBUTE_PROPS = 'MAP_ATTRIBUTE_PROPS'\n\nexport const PAGE_CONFIG = 'PAGE_CONFIG'\n\nexport const IS_PIVOT_TABLE = 'IS_PIVOT_TABLE'\n\nexport const IS_IFRAME_MODE = 'IS_IFRAME_MODE'\n","export interface BarProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n titleText: string\n titleSubtext: string\n titleFontSize: string\n titleColor: string\n fontWeight: number\n textAlign: 'left' | 'right' | 'center'\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 xAxisSplitAreaShow: boolean // x轴展示分割区域\n xAxisSplitLineInterval: number // x轴分割线间隔\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n xAxisLineShow: boolean // 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 yAxisSplitAreaShow: boolean // y轴展示分割区域\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLabelFormatter: string\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n valueTypeDataFieldNames: any\n keyTypeDataFieldNames: any\n dataFieldConfigType: 'key' | 'value'\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string,\n tooltipPosition: string\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n barWidth: string\n graphicConfig: { [key:string]: any }\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 stackColumns: string[],\n labelShow: boolean\n labelFontSize: string\n labelPosition: 'inside' | 'top' | 'bottom' | 'right' | 'left'\n labelColor: string\n labelWidth: number\n labelOverflow: 'none' | 'truncate' | 'break'\n labelFormatter: string\n gradientShow: boolean // 柱状图渐变设置\n gradientColors: string []\n gradientOffset: number\n barBorderRadius: string // 柱状图圆角设置\n yAxisLabelShow: boolean // 是否显示y轴坐标轴刻度标签\n yAxisSplitLineType: 'solid' | 'dashed' | 'dotted' // 分割线类型\n xAxisSplitLineType: 'solid' | 'dashed' | 'dotted' // 分割线类型\n legendItemGap: number\n legendItemWidth: number\n legendItemHeight: number\n showBarBackground: boolean\n legendType: string\n legendFontSize: string\n xAxisLabelFontSize: string\n yAxisLabelFontSize: string\n graphicType: string\n isShowMarkLine: boolean\n markLineType: 'min' | 'max' | 'average' | 'median'\n legendFormatter: string\n legendWidth: number | null\n legendHeight: number | null\n legendTextWidth: number | null\n legendScroll: boolean\n yAxisName: string\n xAxisName: string\n defaultRangeValue: boolean\n startValue: string\n endValue: string\n xAxisMaxValue: number\n yAxisMaxValue: number\n colorsType: 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 titleFontSize: '12px',\n titleColor: '#333',\n fontWeight: 400,\n textAlign: 'left',\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 xAxisSplitLineInterval: 0,\n xAxisSplitAreaShow: false,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelInterval: 0,\n xAxisLabelColor: '#333',\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLineShow: true,\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 yAxisSplitAreaShow: false,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n valueTypeDataFieldNames: { name: 'name', value: 'value', type: 'type' },\n keyTypeDataFieldNames: { name: 'name', types: [] },\n dataFieldConfigType: 'value',\n barWidth: '40%',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n graphicConfig: {},\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 stackColumns: [],\n labelShow: false,\n labelFontSize: '12px',\n labelPosition: 'inside',\n labelColor: '',\n labelWidth: 100,\n labelOverflow: 'none',\n labelFormatter: '{c}',\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n gradientShow: false,\n gradientColors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n gradientOffset: 1,\n barBorderRadius: '',\n yAxisLabelShow: true,\n yAxisSplitLineType: 'solid',\n xAxisSplitLineType: 'solid',\n legendItemGap: 10,\n legendItemWidth: 25,\n legendItemHeight: 14,\n showBarBackground: false,\n legendType: '',\n legendFontSize: '12px',\n xAxisLabelFontSize: '12px',\n yAxisLabelFontSize: '12px',\n graphicType: 'ecanBar',\n tooltipPosition: '',\n isShowMarkLine: false,\n markLineType: 'average',\n legendFormatter: '{name}',\n legendWidth: null,\n legendHeight: null,\n legendTextWidth: null,\n legendScroll: false,\n yAxisName: '',\n xAxisName: '',\n defaultRangeValue: false,\n startValue: '',\n endValue: '',\n xAxisMaxValue: null,\n yAxisMaxValue: null,\n colorsType: '默认'\n}\n","export interface LineProps {\n name: String\n type: String\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n colorsType: string\n titleText: string\n titleSubtext: string\n legendShow: boolean\n legendLeft: 'left' | 'center' | 'right'\n legendCustomPosition: boolean\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal' // 标记点大小\n legendTextStyleColor: string\n legendTextStyleFontSize: number\n legendTextItemGap: number\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n xAxisName: string\n xAxisShow: 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 xAxisType: 'value' | 'category' | 'time' | 'log'\n yAxisName: string\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 yAxisLabelShow: boolean\n yAxisSplitLineType: 'solid' | 'dashed' | 'dotted' // 分割线类型\n xAxisSplitLineType: 'solid' | 'dashed' | 'dotted' // 分割线类型\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string\n tooltipBorderColor: string\n tooltipBackgroundColor: string\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 titleFontSize: string\n titleColor: string\n fontWeight: number\n textAlign: 'left' | 'right' | 'center'\n titleLeft: string\n xAxisSplitAreaShow: boolean // x轴展示分割区域\n xAxisSplitLineInterval: number // x轴分割间隔\n xAxisLineShow: boolean // 显示轴线\n valueTypeDataFieldNames: any\n keyTypeDataFieldNames: any\n dataFieldConfigType: 'key' | 'value'\n graphicConfig: { [key:string]: any }\n areaGradientShow: boolean // 分隔区域渐变\n areaGradientColor: string // 分隔区域渐变颜色\n isBoundaryGap: boolean // 是否两边留白\n legendItemGap: number\n legendItemWidth: number\n legendItemHeight: number\n legendType: string // 图例类型\n shadowColor: string // 阴影颜色\n shadowBlur: number // 阴影模糊度\n shadowOffsetY: number // 阴影偏移量-Y\n shadowOffsetX: number // 阴影偏移量-X\n legendFontSize: string\n xAxisLabelFontSize: string\n yAxisLabelFontSize: string\n graphicType: string\n tooltipPosition: string\n isShowMarkLine: boolean\n markLineType: 'min' | 'max' | 'average' | 'median'\n legendFormatter: string\n legendWidth: number | null\n legendHeight: number | null\n legendTextWidth: number | null\n legendScroll: boolean\n xAxisMaxValue: number\n yAxisMaxValue: number\n}\n\nexport const lineProps = {\n name: '折线图',\n type: 'line',\n width: '400px',\n height: '400px',\n\n colors: ['#FFBF53', '#04B1C2', '#F07474', '#C55784', '#9A5FB3', '#CF62D7', '#5E78EA', '#51B3F0', '#69D4DC', '#49B788', '#9CCC66', '#C18C00'],\n colorsType: '默认',\n\n legendShow: true,\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n legendCustomPosition: false,\n legendTextStyleColor: '#333',\n legendTextStyleFontSize: '12px',\n legendTextItemGap: 10,\n legendTopPadding: 10,\n legendBottomPadding: 10,\n legendLeftPadding: 10,\n legendRightPadding: 10,\n titleText: '',\n titleSubtext: '',\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n xAxisName: '',\n xAxisType: 'category',\n xAxisShow: true,\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 yAxisName: '',\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n yAxisLabelShow: true,\n yAxisLabelFormatter: '{value}',\n yAxisSplitLineType: 'solid',\n xAxisSplitLineType: 'solid',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipFormatter: '{marker} {a} {c}',\n tooltipBorderColor: '#333',\n tooltipBackgroundColor: '#fff',\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 // 新加属性\n titleFontSize: '12px',\n titleColor: '#333',\n fontWeight: 400,\n textAlign: 'left',\n titleLeft: '',\n xAxisSplitAreaShow: false,\n xAxisSplitLineInterval: 0,\n xAxisLineShow: true,\n yAxisSplitAreaShow: false,\n valueTypeDataFieldNames: { name: 'name', value: 'value', type: 'type' },\n keyTypeDataFieldNames: { name: 'name', types: [] },\n dataFieldConfigType: 'value',\n graphicConfig: {},\n areaGradientShow: false,\n areaGradientColor: '',\n isBoundaryGap: true,\n legendItemGap: 10,\n legendItemWidth: 25,\n legendItemHeight: 14,\n legendType: '',\n shadowColor: '',\n shadowBlur: 0,\n shadowOffsetY: 0,\n shadowOffsetX: 0,\n legendFontSize: '12px',\n xAxisLabelFontSize: '12px',\n yAxisLabelFontSize: '12px',\n graphicType: 'ecanLine',\n tooltipPosition: '',\n isShowMarkLine: false,\n markLineType: 'average',\n legendFormatter: '{name}',\n legendWidth: null,\n legendHeight: null,\n legendTextWidth: null,\n legendScroll: false,\n xAxisMaxValue: null,\n yAxisMaxValue: null\n}\n","\nexport interface PieProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n colorsType: string\n titleText: string\n titleSubtext: string\n backgroundColor: string\n toolboxDownloadShow: boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n tooltipShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n tooltipBorderColor: string\n tooltipBackgroundColor: 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 titleFontSize: string\n titleColor: string\n fontWeight: number\n textAlign: 'left' | 'right' | 'center'\n titleLeft: string\n labelWidth: number\n labelOverflow: 'none' | 'truncate' | 'break'\n valueTypeDataFieldNames: any,\n dataFieldConfigType: 'key' | 'value',\n graphicConfig: { [key:string]: any }\n legendItemGap: number\n legendItemWidth: number\n legendItemHeight: number\n legendFormatter: string\n legendFontSize: string\n graphicType: string\n legendWidth: number | null\n legendHeight: number | null\n legendTextWidth: number | null\n legendScroll: boolean\n}\n\nexport const pieProps: PieProps = {\n name: '饼图',\n type: 'pie',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n\n colors: ['#FFBF53', '#04B1C2', '#F07474', '#C55784', '#9A5FB3', '#CF62D7', '#5E78EA', '#51B3F0', '#69D4DC', '#49B788', '#9CCC66', '#C18C00'],\n colorsType: '默认',\n\n backgroundColor: '',\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {b} {c} ({d}%)',\n tooltipBorderColor: '#333',\n tooltipBackgroundColor: '#fff',\n\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 titleFontSize: '12px',\n titleColor: '#333',\n fontWeight: 400,\n textAlign: 'left',\n titleLeft: '',\n labelWidth: 100,\n labelOverflow: 'none',\n valueTypeDataFieldNames: { name: 'name', value: 'value', type: 'type' },\n dataFieldConfigType: 'value',\n graphicConfig: {},\n legendItemGap: 10,\n legendItemWidth: 25,\n legendItemHeight: 14,\n legendFormatter: '{name}',\n legendFontSize: '12px',\n graphicType: 'ecanPie',\n legendWidth: null,\n legendHeight: null,\n legendTextWidth: null,\n legendScroll: false\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 colorsType: 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 yAxisLabelShow: boolean\n\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string\n tooltipBorderColor: string\n tooltipBackgroundColor: string\n tooltipTrigger: 'item' | 'axis' | 'none'\n\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: ['#FFBF53', '#04B1C2', '#F07474', '#C55784', '#9A5FB3', '#CF62D7', '#5E78EA', '#51B3F0', '#69D4DC', '#49B788', '#9CCC66', '#C18C00'],\n colorsType: '默认',\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {a} {c}',\n tooltipBorderColor: '#333',\n tooltipBackgroundColor: '#fff',\n\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 yAxisLabelShow: true,\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","\r\nexport interface TableProps {\r\n name: String\r\n type: String\r\n size: String // 尺寸\r\n allOverflow: String // 内容超出\r\n hoverRow: Boolean // 点击行高亮\r\n hoverColor: String // hover行颜色\r\n headerCellStyleMethod: String // 表头单元格样式\r\n rowStyleMethod: String // 行样式\r\n boderList: Array<String> // 边框不显示\r\n columnDropEnable: Boolean // 列拖拽\r\n showTotalBool: Boolean // 显示汇总行\r\n totalName: String // 汇总行名\r\n expandAll: Boolean // 展开所有节点\r\n}\r\n\r\nexport const tableProps: TableProps = {\r\n name: '表格',\r\n type: 'table',\r\n size: 'medium',\r\n allOverflow: 'title',\r\n hoverRow: true,\r\n hoverColor: '#f5f7fa',\r\n headerCellStyleMethod: '',\r\n rowStyleMethod: '',\r\n boderList: [],\r\n columnDropEnable: true,\r\n showTotalBool: false,\r\n totalName: '',\r\n expandAll: false\r\n}\r\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 CodeOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M516 673c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48zm-194.9 6.1l192-161c3.8-3.2 3.8-9.1 0-12.3l-192-160.9A7.95 7.95 0 00308 351v62.7c0 2.4 1 4.6 2.9 6.1L420.7 512l-109.8 92.2a8.1 8.1 0 00-2.9 6.1V673c0 6.8 7.9 10.5 13.1 6.1zM880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zm-40 728H184V184h656v656z\" } }] }, \"name\": \"code\", \"theme\": \"outlined\" };\nexport default CodeOutlined;\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 CodeOutlinedSvg from \"@ant-design/icons-svg/es/asn/CodeOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CodeOutlined = function CodeOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CodeOutlinedSvg\n }), null);\n};\n\nCodeOutlined.displayName = 'CodeOutlined';\nCodeOutlined.inheritAttrs = false;\nexport default CodeOutlined;","// 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 InfoCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"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\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"info-circle\", \"theme\": \"outlined\" };\nexport default InfoCircleOutlined;\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 InfoCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/InfoCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar InfoCircleOutlined = function InfoCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": InfoCircleOutlinedSvg\n }), null);\n};\n\nInfoCircleOutlined.displayName = 'InfoCircleOutlined';\nInfoCircleOutlined.inheritAttrs = false;\nexport default InfoCircleOutlined;","// This icon file is generated automatically.\nvar LoadingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z\" } }] }, \"name\": \"loading\", \"theme\": \"outlined\" };\nexport default LoadingOutlined;\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 LoadingOutlinedSvg from \"@ant-design/icons-svg/es/asn/LoadingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar LoadingOutlined = function LoadingOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": LoadingOutlinedSvg\n }), null);\n};\n\nLoadingOutlined.displayName = 'LoadingOutlined';\nLoadingOutlined.inheritAttrs = false;\nexport default LoadingOutlined;","// This icon file is generated automatically.\nvar MenuOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M904 160H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0 624H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8zm0-312H120c-4.4 0-8 3.6-8 8v64c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-64c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"menu\", \"theme\": \"outlined\" };\nexport default MenuOutlined;\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 MenuOutlinedSvg from \"@ant-design/icons-svg/es/asn/MenuOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar MenuOutlined = function MenuOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": MenuOutlinedSvg\n }), null);\n};\n\nMenuOutlined.displayName = 'MenuOutlined';\nMenuOutlined.inheritAttrs = false;\nexport default MenuOutlined;","// 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 QuestionCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"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\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M623.6 316.7C593.6 290.4 554 276 512 276s-81.6 14.5-111.6 40.7C369.2 344 352 380.7 352 420v7.6c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V420c0-44.1 43.1-80 96-80s96 35.9 96 80c0 31.1-22 59.6-56.1 72.7-21.2 8.1-39.2 22.3-52.1 40.9-13.1 19-19.9 41.8-19.9 64.9V620c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-22.7a48.3 48.3 0 0130.9-44.8c59-22.7 97.1-74.7 97.1-132.5.1-39.3-17.1-76-48.3-103.3zM472 732a40 40 0 1080 0 40 40 0 10-80 0z\" } }] }, \"name\": \"question-circle\", \"theme\": \"outlined\" };\nexport default QuestionCircleOutlined;\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 QuestionCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/QuestionCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar QuestionCircleOutlined = function QuestionCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": QuestionCircleOutlinedSvg\n }), null);\n};\n\nQuestionCircleOutlined.displayName = 'QuestionCircleOutlined';\nQuestionCircleOutlined.inheritAttrs = false;\nexport default QuestionCircleOutlined;","// This icon file is generated automatically.\nvar ReloadOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z\" } }] }, \"name\": \"reload\", \"theme\": \"outlined\" };\nexport default ReloadOutlined;\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 ReloadOutlinedSvg from \"@ant-design/icons-svg/es/asn/ReloadOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar ReloadOutlined = function ReloadOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": ReloadOutlinedSvg\n }), null);\n};\n\nReloadOutlined.displayName = 'ReloadOutlined';\nReloadOutlined.inheritAttrs = false;\nexport default ReloadOutlined;","// 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;","function e(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(n[o[r]]=e[o[r]])}return n}function t(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,l)}s((o=o.apply(e,t||[])).next())}))}const n=()=>{},o=Object.assign,r=Array.isArray,i=e=>\"function\"==typeof e,a=e=>\"symbol\"==typeof e;let l;const s=()=>l||(l=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:{});const c=e=>{const t=new Set(e);return t.w=0,t.n=0,t},u=e=>(e.w&p)>0,d=e=>(e.n&p)>0;let f=0,p=1;let h;class y{constructor(e,t=null,n){this.fn=e,this.scheduler=t,this.active=!0,this.deps=[],this.parent=void 0,function(e,t){t&&t.active&&t.effects.push(e)}(this,n)}run(){if(!this.active)return this.fn();let e=h,t=b;for(;e;){if(e===this)return;e=e.parent}try{return this.parent=h,h=this,b=!0,p=1<<++f,f<=30?(({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=p})(this):m(this),this.fn()}finally{f<=30&&(e=>{const{deps:t}=e;if(t.length){let n=0;for(let o=0;o<t.length;o++){const r=t[o];u(r)&&!d(r)?r.delete(e):t[n++]=r,r.w&=~p,r.n&=~p}t.length=n}})(this),p=1<<--f,h=this.parent,b=t,this.parent=void 0,this.deferStop&&this.stop()}}stop(){h===this?this.deferStop=!0:this.active&&(m(this),this.onStop&&this.onStop(),this.active=!1)}}function m(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let b=!0;const g=[];function v(e,t){let n=!1;f<=30?d(e)||(e.n|=p,n=!u(e)):n=!e.has(h),n&&(e.add(h),h.deps.push(e),\"production\"!==process.env.NODE_ENV&&h.onTrack&&h.onTrack(o({effect:h},t)))}function x(e,t){const n=r(e)?e:[...e];for(const e of n)e.computed&&w(e,t);for(const e of n)e.computed||w(e,t)}function w(e,t){(e!==h||e.allowRecurse)&&(\"production\"!==process.env.NODE_ENV&&e.onTrigger&&e.onTrigger(o({effect:e},t)),e.scheduler?e.scheduler():e.run())}function S(e){const t=e&&e.__v_raw;return t?S(t):e}function A(e){return!(!e||!0!==e.__v_isRef)}function _(e){return A(e)?e.value:e}new Set(Object.getOwnPropertyNames(Symbol).filter((e=>\"arguments\"!==e&&\"caller\"!==e)).map((e=>Symbol[e])).filter(a));class j{constructor(e,t,n,o){this._setter=t,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new y(e,(()=>{this._dirty||(this._dirty=!0,function(e,t){const n=(e=S(e)).dep;n&&(\"production\"!==process.env.NODE_ENV?x(n,{target:e,type:\"set\",key:\"value\",newValue:t}):x(n))}(this))})),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=n}get value(){const e=S(this);var t;return t=e,b&&h&&(t=S(t),\"production\"!==process.env.NODE_ENV?v(t.dep||(t.dep=c()),{target:t,type:\"get\",key:\"value\"}):v(t.dep||(t.dep=c()))),!e._dirty&&e._cacheable||(e._dirty=!1,e._value=e.effect.run()),e._value}set value(e){this._setter(e)}}const O=[];function C(e,...t){if(\"production\"===process.env.NODE_ENV)return;g.push(b),b=!1;const n=O.length?O[O.length-1].component:null,o=n&&n.appContext.config.warnHandler,r=function(){let e=O[O.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}();if(o)$(o,n,11,[e+t.join(\"\"),n&&n.proxy,r.map((({vnode:e})=>`at <${oe(n,e.type)}>`)).join(\"\\n\"),r]);else{const n=[`[Vue warn]: ${e}`,...t];r.length&&n.push(\"\\n\",...function(e){const t=[];return e.forEach(((e,n)=>{t.push(...0===n?[]:[\"\\n\"],...function({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:\"\",o=!!e.component&&null==e.component.parent,r=` at <${oe(e.component,e.type,o)}`,i=\">\"+n;return e.props?[r,...L(e.props),i]:[r+i]}(e))})),t}(r)),console.warn(...n)}!function(){const e=g.pop();b=void 0===e||e}()}function L(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach((n=>{t.push(...T(n,e[n]))})),n.length>3&&t.push(\" ...\"),t}function T(e,t,n){return\"string\"==typeof t?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):\"number\"==typeof t||\"boolean\"==typeof t||null==t?n?t:[`${e}=${t}`]:A(t)?(t=T(e,S(t.value),!0),n?t:[`${e}=Ref<`,t,\">\"]):i(t)?[`${e}=fn${t.name?`<${t.name}>`:\"\"}`]:(t=S(t),n?t:[`${e}=`,t])}const N={sp:\"serverPrefetch hook\",bc:\"beforeCreate hook\",c:\"created hook\",bm:\"beforeMount hook\",m:\"mounted hook\",bu:\"beforeUpdate hook\",u:\"updated\",bum:\"beforeUnmount hook\",um:\"unmounted hook\",a:\"activated hook\",da:\"deactivated hook\",ec:\"errorCaptured hook\",rtc:\"renderTracked hook\",rtg:\"renderTriggered hook\",0:\"setup function\",1:\"render function\",2:\"watcher getter\",3:\"watcher callback\",4:\"watcher cleanup function\",5:\"native event handler\",6:\"component event handler\",7:\"vnode hook\",8:\"directive hook\",9:\"transition hook\",10:\"app errorHandler\",11:\"app warnHandler\",12:\"ref function\",13:\"async component loader\",14:\"scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core\"};function $(e,t,n,o){let r;try{r=o?e(...o):e()}catch(e){!function(e,t,n,o=!0){const r=t?t.vnode:null;if(t){let o=t.parent;const r=t.proxy,i=\"production\"!==process.env.NODE_ENV?N[n]:n;for(;o;){const t=o.ec;if(t)for(let n=0;n<t.length;n++)if(!1===t[n](e,r,i))return;o=o.parent}const a=t.appContext.config.errorHandler;if(a)return void $(a,null,10,[e,r,i])}!function(e,t,n,o=!0){if(\"production\"!==process.env.NODE_ENV){const i=N[t];if(n&&(r=n,O.push(r)),C(\"Unhandled error\"+(i?` during execution of ${i}`:\"\")),n&&O.pop(),o)throw e;console.error(e)}else console.error(e);var r}(e,n,r,o)}(e,t,n)}return r}let k=!1,D=!1;const M=[];let E=0;const I=[];let V=null,F=0;const z=Promise.resolve();function R(e){M.length&&M.includes(e,k&&e.allowRecurse?E+1:E)||(null==e.id?M.push(e):M.splice(function(e){let t=E+1,n=M.length;for(;t<n;){const o=t+n>>>1,r=M[o],i=P(r);i<e||i===e&&r.pre?t=o+1:n=o}return t}(e.id),0,e),U())}function U(){k||D||(D=!0,z.then(Y))}const P=e=>null==e.id?1/0:e.id,G=(e,t)=>{const n=P(e)-P(t);if(0===n){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Y(e){D=!1,k=!0,\"production\"!==process.env.NODE_ENV&&(e=e||new Map),M.sort(G);const t=\"production\"!==process.env.NODE_ENV?t=>W(e,t):n;try{for(E=0;E<M.length;E++){const e=M[E];if(e&&!1!==e.active){if(\"production\"!==process.env.NODE_ENV&&t(e))continue;$(e,null,14)}}}finally{E=0,M.length=0,function(e){if(I.length){const t=[...new Set(I)];if(I.length=0,V)return void V.push(...t);for(V=t,\"production\"!==process.env.NODE_ENV&&(e=e||new Map),V.sort(((e,t)=>P(e)-P(t))),F=0;F<V.length;F++)\"production\"!==process.env.NODE_ENV&&W(e,V[F])||V[F]();V=null,F=0}}(e),k=!1,(M.length||I.length)&&Y(e)}}function W(e,t){if(e.has(t)){const n=e.get(t);if(n>100){const e=t.ownerInstance,n=e&&ne(e.type);return C(`Maximum recursive updates exceeded${n?` in component <${n}>`:\"\"}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`),!0}e.set(t,n+1)}else e.set(t,1)}const H=new Set;\"production\"!==process.env.NODE_ENV&&(s().__VUE_HMR_RUNTIME__={createRecord:Q((function(e,t){if(B.has(e))return!1;return B.set(e,{initialDef:K(t),instances:new Set}),!0})),rerender:Q((function(e,t){const n=B.get(e);if(!n)return;n.initialDef.render=t,[...n.instances].forEach((e=>{t&&(e.render=t,K(e.type).render=t),e.renderCache=[],e.update()}))})),reload:Q((function(e,t){const n=B.get(e);if(!n)return;t=K(t),q(n.initialDef,t);const o=[...n.instances];for(const e of o){const o=K(e.type);H.has(o)||(o!==n.initialDef&&q(o,t),H.add(o)),e.appContext.propsCache.delete(e.type),e.appContext.emitsCache.delete(e.type),e.appContext.optionsCache.delete(e.type),e.ceReload?(H.add(o),e.ceReload(t.styles),H.delete(o)):e.parent?R(e.parent.update):e.appContext.reload?e.appContext.reload():\"undefined\"!=typeof window?window.location.reload():console.warn(\"[HMR] Root or manually mounted instance modified. Full reload required.\")}i=()=>{for(const e of o)H.delete(K(e.type))},r(i)?I.push(...i):V&&V.includes(i,i.allowRecurse?F+1:F)||I.push(i),U();var i}))});const B=new Map;function K(e){return i(t=e)&&\"__vccOpts\"in t?e.__vccOpts:e;var t}function q(e,t){o(e,t);for(const n in e)\"__file\"===n||n in t||delete e[n]}function Q(e){return(t,n)=>{try{return e(t,n)}catch(e){console.error(e),console.warn(\"[HMR] Something went wrong during Vue component hot-reload. Full reload required.\")}}}const J={};let X;\"production\"!==process.env.NODE_ENV&&(J.ownKeys=e=>(C(\"Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.\"),Reflect.ownKeys(e)));let Z=\"__VUE_INSTANCE_SETTERS__\";(X=s()[Z])||(X=s()[Z]=[]),X.push((e=>e));const ee=/(?:^|[-_])(\\w)/g,te=e=>e.replace(ee,(e=>e.toUpperCase())).replace(/[-_]/g,\"\");function ne(e,t=!0){return i(e)?e.displayName||e.name:e.name||t&&e.__name}function oe(e,t,n=!1){let o=ne(t);if(!o&&t.__file){const e=t.__file.match(/([^/\\\\]+)\\.\\w+$/);e&&(o=e[1])}if(!o&&e&&e.parent){const n=e=>{for(const n in e)if(e[n]===t)return n};o=n(e.components||e.parent.type.components)||n(e.appContext.components)}return o?te(o):n?\"App\":\"Anonymous\"}const re=(e,t)=>function(e,t,o=!1){let r,a;const l=i(e);return l?(r=e,a=\"production\"!==process.env.NODE_ENV?()=>{console.warn(\"Write operation failed: computed value is readonly\")}:n):(r=e.get,a=e.set),new j(r,a,l||!a,o)}(e,0,false);function ie(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var ae,le={exports:{}};function se(){return ae||(ae=1,le.exports=function(){var e=1e3,t=6e4,n=36e5,o=\"millisecond\",r=\"second\",i=\"minute\",a=\"hour\",l=\"day\",s=\"week\",c=\"month\",u=\"quarter\",d=\"year\",f=\"date\",p=\"Invalid Date\",h=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,m={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(e){var t=[\"th\",\"st\",\"nd\",\"rd\"],n=e%100;return\"[\"+e+(t[(n-20)%10]||t[n]||t[0])+\"]\"}},b=function(e,t,n){var o=String(e);return!o||o.length>=t?e:\"\"+Array(t+1-o.length).join(n)+e},g={s:b,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),o=Math.floor(n/60),r=n%60;return(t<=0?\"+\":\"-\")+b(o,2,\"0\")+\":\"+b(r,2,\"0\")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var o=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(o,c),i=n-r<0,a=t.clone().add(o+(i?-1:1),c);return+(-(o+(n-r)/(i?r-a:a-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return{M:c,y:d,w:s,d:l,D:f,h:a,m:i,s:r,ms:o,Q:u}[e]||String(e||\"\").toLowerCase().replace(/s$/,\"\")},u:function(e){return void 0===e}},v=\"en\",x={};x[v]=m;var w=\"$isDayjsObject\",S=function(e){return e instanceof O||!(!e||!e[w])},A=function e(t,n,o){var r;if(!t)return v;if(\"string\"==typeof t){var i=t.toLowerCase();x[i]&&(r=i),n&&(x[i]=n,r=i);var a=t.split(\"-\");if(!r&&a.length>1)return e(a[0])}else{var l=t.name;x[l]=t,r=l}return!o&&r&&(v=r),r||!o&&v},_=function(e,t){if(S(e))return e.clone();var n=\"object\"==typeof t?t:{};return n.date=e,n.args=arguments,new O(n)},j=g;j.l=A,j.i=S,j.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var O=function(){function m(e){this.$L=A(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var b=m.prototype;return b.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(j.u(t))return new Date;if(t instanceof Date)return new Date(t);if(\"string\"==typeof t&&!/Z$/i.test(t)){var o=t.match(h);if(o){var r=o[2]-1||0,i=(o[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(o[1],r,o[3]||1,o[4]||0,o[5]||0,o[6]||0,i)):new Date(o[1],r,o[3]||1,o[4]||0,o[5]||0,o[6]||0,i)}}return new Date(t)}(e),this.init()},b.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},b.$utils=function(){return j},b.isValid=function(){return!(this.$d.toString()===p)},b.isSame=function(e,t){var n=_(e);return this.startOf(t)<=n&&n<=this.endOf(t)},b.isAfter=function(e,t){return _(e)<this.startOf(t)},b.isBefore=function(e,t){return this.endOf(t)<_(e)},b.$g=function(e,t,n){return j.u(e)?this[t]:this.set(n,e)},b.unix=function(){return Math.floor(this.valueOf()/1e3)},b.valueOf=function(){return this.$d.getTime()},b.startOf=function(e,t){var n=this,o=!!j.u(t)||t,u=j.p(e),p=function(e,t){var r=j.w(n.$u?Date.UTC(n.$y,t,e):new Date(n.$y,t,e),n);return o?r:r.endOf(l)},h=function(e,t){return j.w(n.toDate()[e].apply(n.toDate(\"s\"),(o?[0,0,0,0]:[23,59,59,999]).slice(t)),n)},y=this.$W,m=this.$M,b=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(u){case d:return o?p(1,0):p(31,11);case c:return o?p(1,m):p(0,m+1);case s:var v=this.$locale().weekStart||0,x=(y<v?y+7:y)-v;return p(o?b-x:b+(6-x),m);case l:case f:return h(g+\"Hours\",0);case a:return h(g+\"Minutes\",1);case i:return h(g+\"Seconds\",2);case r:return h(g+\"Milliseconds\",3);default:return this.clone()}},b.endOf=function(e){return this.startOf(e,!1)},b.$set=function(e,t){var n,s=j.p(e),u=\"set\"+(this.$u?\"UTC\":\"\"),p=(n={},n[l]=u+\"Date\",n[f]=u+\"Date\",n[c]=u+\"Month\",n[d]=u+\"FullYear\",n[a]=u+\"Hours\",n[i]=u+\"Minutes\",n[r]=u+\"Seconds\",n[o]=u+\"Milliseconds\",n)[s],h=s===l?this.$D+(t-this.$W):t;if(s===c||s===d){var y=this.clone().set(f,1);y.$d[p](h),y.init(),this.$d=y.set(f,Math.min(this.$D,y.daysInMonth())).$d}else p&&this.$d[p](h);return this.init(),this},b.set=function(e,t){return this.clone().$set(e,t)},b.get=function(e){return this[j.p(e)]()},b.add=function(o,u){var f,p=this;o=Number(o);var h=j.p(u),y=function(e){var t=_(p);return j.w(t.date(t.date()+Math.round(e*o)),p)};if(h===c)return this.set(c,this.$M+o);if(h===d)return this.set(d,this.$y+o);if(h===l)return y(1);if(h===s)return y(7);var m=(f={},f[i]=t,f[a]=n,f[r]=e,f)[h]||1,b=this.$d.getTime()+o*m;return j.w(b,this)},b.subtract=function(e,t){return this.add(-1*e,t)},b.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||p;var o=e||\"YYYY-MM-DDTHH:mm:ssZ\",r=j.z(this),i=this.$H,a=this.$m,l=this.$M,s=n.weekdays,c=n.months,u=n.meridiem,d=function(e,n,r,i){return e&&(e[n]||e(t,o))||r[n].slice(0,i)},f=function(e){return j.s(i%12||12,e,\"0\")},h=u||function(e,t,n){var o=e<12?\"AM\":\"PM\";return n?o.toLowerCase():o};return o.replace(y,(function(e,o){return o||function(e){switch(e){case\"YY\":return String(t.$y).slice(-2);case\"YYYY\":return j.s(t.$y,4,\"0\");case\"M\":return l+1;case\"MM\":return j.s(l+1,2,\"0\");case\"MMM\":return d(n.monthsShort,l,c,3);case\"MMMM\":return d(c,l);case\"D\":return t.$D;case\"DD\":return j.s(t.$D,2,\"0\");case\"d\":return String(t.$W);case\"dd\":return d(n.weekdaysMin,t.$W,s,2);case\"ddd\":return d(n.weekdaysShort,t.$W,s,3);case\"dddd\":return s[t.$W];case\"H\":return String(i);case\"HH\":return j.s(i,2,\"0\");case\"h\":return f(1);case\"hh\":return f(2);case\"a\":return h(i,a,!0);case\"A\":return h(i,a,!1);case\"m\":return String(a);case\"mm\":return j.s(a,2,\"0\");case\"s\":return String(t.$s);case\"ss\":return j.s(t.$s,2,\"0\");case\"SSS\":return j.s(t.$ms,3,\"0\");case\"Z\":return r}return null}(e)||r.replace(\":\",\"\")}))},b.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},b.diff=function(o,f,p){var h,y=this,m=j.p(f),b=_(o),g=(b.utcOffset()-this.utcOffset())*t,v=this-b,x=function(){return j.m(y,b)};switch(m){case d:h=x()/12;break;case c:h=x();break;case u:h=x()/3;break;case s:h=(v-g)/6048e5;break;case l:h=(v-g)/864e5;break;case a:h=v/n;break;case i:h=v/t;break;case r:h=v/e;break;default:h=v}return p?h:j.a(h)},b.daysInMonth=function(){return this.endOf(c).$D},b.$locale=function(){return x[this.$L]},b.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),o=A(e,t,!0);return o&&(n.$L=o),n},b.clone=function(){return j.w(this.$d,this)},b.toDate=function(){return new Date(this.valueOf())},b.toJSON=function(){return this.isValid()?this.toISOString():null},b.toISOString=function(){return this.$d.toISOString()},b.toString=function(){return this.$d.toUTCString()},m}(),C=O.prototype;return _.prototype=C,[[\"$ms\",o],[\"$s\",r],[\"$m\",i],[\"$H\",a],[\"$W\",l],[\"$M\",c],[\"$y\",d],[\"$D\",f]].forEach((function(e){C[e[1]]=function(t){return this.$g(t,e[0],e[1])}})),_.extend=function(e,t){return e.$i||(e(t,O,_),e.$i=!0),_},_.locale=A,_.isDayjs=S,_.unix=function(e){return _(1e3*e)},_.en=x[v],_.Ls=x,_.p={},_}()),le.exports}var ce=ie(se()),ue=\"object\"==typeof global&&global&&global.Object===Object&&global,de=\"object\"==typeof self&&self&&self.Object===Object&&self,fe=ue||de||Function(\"return this\")(),pe=fe.Symbol,he=Object.prototype,ye=he.hasOwnProperty,me=he.toString,be=pe?pe.toStringTag:void 0;var ge=Object.prototype.toString;var ve=pe?pe.toStringTag:void 0;function xe(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":ve&&ve in Object(e)?function(e){var t=ye.call(e,be),n=e[be];try{e[be]=void 0;var o=!0}catch(e){}var r=me.call(e);return o&&(t?e[be]=n:delete e[be]),r}(e):function(e){return ge.call(e)}(e)}function we(e){return null!=e&&\"object\"==typeof e}var Se=Array.isArray;function Ae(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)}function _e(e){if(!Ae(e))return!1;var t=xe(e);return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}var je,Oe=fe[\"__core-js_shared__\"],Ce=(je=/[^.]+$/.exec(Oe&&Oe.keys&&Oe.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+je:\"\";var Le=Function.prototype.toString;function Te(e){if(null!=e){try{return Le.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"}var Ne=/^\\[object .+?Constructor\\]$/,$e=Function.prototype,ke=Object.prototype,De=$e.toString,Me=ke.hasOwnProperty,Ee=RegExp(\"^\"+De.call(Me).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function Ie(e){return!(!Ae(e)||(t=e,Ce&&Ce in t))&&(_e(e)?Ee:Ne).test(Te(e));var t}function Ve(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Ie(n)?n:void 0}var Fe=Ve(fe,\"WeakMap\"),ze=Object.create,Re=function(){function e(){}return function(t){if(!Ae(t))return{};if(ze)return ze(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}(),Ue=function(){try{var e=Ve(Object,\"defineProperty\");return e({},\"\",{}),e}catch(e){}}();var Pe=/^(?:0|[1-9]\\d*)$/;function Ge(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&(\"number\"==n||\"symbol\"!=n&&Pe.test(e))&&e>-1&&e%1==0&&e<t}function Ye(e,t){return e===t||e!=e&&t!=t}var We=Object.prototype.hasOwnProperty;function He(e,t,n){var o=e[t];We.call(e,t)&&Ye(o,n)&&(void 0!==n||t in e)||function(e,t,n){\"__proto__\"==t&&Ue?Ue(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}(e,t,n)}function Be(e){return\"number\"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var Ke=Object.prototype;function qe(e){var t=e&&e.constructor;return e===(\"function\"==typeof t&&t.prototype||Ke)}function Qe(e){return we(e)&&\"[object Arguments]\"==xe(e)}var Je=Object.prototype,Xe=Je.hasOwnProperty,Ze=Je.propertyIsEnumerable,et=Qe(function(){return arguments}())?Qe:function(e){return we(e)&&Xe.call(e,\"callee\")&&!Ze.call(e,\"callee\")};var tt=\"object\"==typeof exports&&exports&&!exports.nodeType&&exports,nt=tt&&\"object\"==typeof module&&module&&!module.nodeType&&module,ot=nt&&nt.exports===tt?fe.Buffer:void 0,rt=(ot?ot.isBuffer:void 0)||function(){return!1},it={};function at(e){return function(t){return e(t)}}it[\"[object Float32Array]\"]=it[\"[object Float64Array]\"]=it[\"[object Int8Array]\"]=it[\"[object Int16Array]\"]=it[\"[object Int32Array]\"]=it[\"[object Uint8Array]\"]=it[\"[object Uint8ClampedArray]\"]=it[\"[object Uint16Array]\"]=it[\"[object Uint32Array]\"]=!0,it[\"[object Arguments]\"]=it[\"[object Array]\"]=it[\"[object ArrayBuffer]\"]=it[\"[object Boolean]\"]=it[\"[object DataView]\"]=it[\"[object Date]\"]=it[\"[object Error]\"]=it[\"[object Function]\"]=it[\"[object Map]\"]=it[\"[object Number]\"]=it[\"[object Object]\"]=it[\"[object RegExp]\"]=it[\"[object Set]\"]=it[\"[object String]\"]=it[\"[object WeakMap]\"]=!1;var lt=\"object\"==typeof exports&&exports&&!exports.nodeType&&exports,st=lt&&\"object\"==typeof module&&module&&!module.nodeType&&module,ct=st&&st.exports===lt&&ue.process,ut=function(){try{var e=st&&st.require&&st.require(\"util\").types;return e||ct&&ct.binding&&ct.binding(\"util\")}catch(e){}}(),dt=ut&&ut.isTypedArray,ft=dt?at(dt):function(e){return we(e)&&Be(e.length)&&!!it[xe(e)]},pt=Object.prototype.hasOwnProperty;function ht(e,t){var n=Se(e),o=!n&&et(e),r=!n&&!o&&rt(e),i=!n&&!o&&!r&&ft(e),a=n||o||r||i,l=a?function(e,t){for(var n=-1,o=Array(e);++n<e;)o[n]=t(n);return o}(e.length,String):[],s=l.length;for(var c in e)!pt.call(e,c)||a&&(\"length\"==c||r&&(\"offset\"==c||\"parent\"==c)||i&&(\"buffer\"==c||\"byteLength\"==c||\"byteOffset\"==c)||Ge(c,s))||l.push(c);return l}function yt(e,t){return function(n){return e(t(n))}}var mt=yt(Object.keys,Object),bt=Object.prototype.hasOwnProperty;function gt(e){return null!=(t=e)&&Be(t.length)&&!_e(t)?ht(e):function(e){if(!qe(e))return mt(e);var t=[];for(var n in Object(e))bt.call(e,n)&&\"constructor\"!=n&&t.push(n);return t}(e);var t}var vt=Ve(Object,\"create\");var xt=Object.prototype.hasOwnProperty;var wt=Object.prototype.hasOwnProperty;function St(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function At(e,t){for(var n=e.length;n--;)if(Ye(e[n][0],t))return n;return-1}St.prototype.clear=function(){this.__data__=vt?vt(null):{},this.size=0},St.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},St.prototype.get=function(e){var t=this.__data__;if(vt){var n=t[e];return\"__lodash_hash_undefined__\"===n?void 0:n}return xt.call(t,e)?t[e]:void 0},St.prototype.has=function(e){var t=this.__data__;return vt?void 0!==t[e]:wt.call(t,e)},St.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=vt&&void 0===t?\"__lodash_hash_undefined__\":t,this};var _t=Array.prototype.splice;function jt(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}jt.prototype.clear=function(){this.__data__=[],this.size=0},jt.prototype.delete=function(e){var t=this.__data__,n=At(t,e);return!(n<0)&&(n==t.length-1?t.pop():_t.call(t,n,1),--this.size,!0)},jt.prototype.get=function(e){var t=this.__data__,n=At(t,e);return n<0?void 0:t[n][1]},jt.prototype.has=function(e){return At(this.__data__,e)>-1},jt.prototype.set=function(e,t){var n=this.__data__,o=At(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this};var Ot=Ve(fe,\"Map\");function Ct(e,t){var n,o,r=e.__data__;return(\"string\"==(o=typeof(n=t))||\"number\"==o||\"symbol\"==o||\"boolean\"==o?\"__proto__\"!==n:null===n)?r[\"string\"==typeof t?\"string\":\"hash\"]:r.map}function Lt(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}Lt.prototype.clear=function(){this.size=0,this.__data__={hash:new St,map:new(Ot||jt),string:new St}},Lt.prototype.delete=function(e){var t=Ct(this,e).delete(e);return this.size-=t?1:0,t},Lt.prototype.get=function(e){return Ct(this,e).get(e)},Lt.prototype.has=function(e){return Ct(this,e).has(e)},Lt.prototype.set=function(e,t){var n=Ct(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this};var Tt=yt(Object.getPrototypeOf,Object);function Nt(e){var t=this.__data__=new jt(e);this.size=t.size}Nt.prototype.clear=function(){this.__data__=new jt,this.size=0},Nt.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Nt.prototype.get=function(e){return this.__data__.get(e)},Nt.prototype.has=function(e){return this.__data__.has(e)},Nt.prototype.set=function(e,t){var n=this.__data__;if(n instanceof jt){var o=n.__data__;if(!Ot||o.length<199)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new Lt(o)}return n.set(e,t),this.size=n.size,this};var $t=Object.prototype.propertyIsEnumerable,kt=Object.getOwnPropertySymbols,Dt=kt?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var n=-1,o=null==e?0:e.length,r=0,i=[];++n<o;){var a=e[n];t(a,n,e)&&(i[r++]=a)}return i}(kt(e),(function(t){return $t.call(e,t)})))}:function(){return[]};function Mt(e){return function(e,t,n){var o=t(e);return Se(e)?o:function(e,t){for(var n=-1,o=t.length,r=e.length;++n<o;)e[r+n]=t[n];return e}(o,n(e))}(e,gt,Dt)}var Et=Ve(fe,\"DataView\"),It=Ve(fe,\"Promise\"),Vt=Ve(fe,\"Set\"),Ft=\"[object Map]\",zt=\"[object Promise]\",Rt=\"[object Set]\",Ut=\"[object WeakMap]\",Pt=\"[object DataView]\",Gt=Te(Et),Yt=Te(Ot),Wt=Te(It),Ht=Te(Vt),Bt=Te(Fe),Kt=xe;(Et&&Kt(new Et(new ArrayBuffer(1)))!=Pt||Ot&&Kt(new Ot)!=Ft||It&&Kt(It.resolve())!=zt||Vt&&Kt(new Vt)!=Rt||Fe&&Kt(new Fe)!=Ut)&&(Kt=function(e){var t=xe(e),n=\"[object Object]\"==t?e.constructor:void 0,o=n?Te(n):\"\";if(o)switch(o){case Gt:return Pt;case Yt:return Ft;case Wt:return zt;case Ht:return Rt;case Bt:return Ut}return t});var qt=Object.prototype.hasOwnProperty;var Qt=fe.Uint8Array;function Jt(e){var t=new e.constructor(e.byteLength);return new Qt(t).set(new Qt(e)),t}var Xt=/\\w*$/;var Zt=pe?pe.prototype:void 0,en=Zt?Zt.valueOf:void 0;function tn(e,t,n){var o,r,i,a,l,s=e.constructor;switch(t){case\"[object ArrayBuffer]\":return Jt(e);case\"[object Boolean]\":case\"[object Date]\":return new s(+e);case\"[object DataView]\":return l=Jt((a=e).buffer),new a.constructor(l,a.byteOffset,a.byteLength);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":case\"[object Uint16Array]\":case\"[object Uint32Array]\":return function(e){var t=Jt(e.buffer);return new e.constructor(t,e.byteOffset,e.length)}(e);case\"[object Map]\":case\"[object Set]\":return new s;case\"[object Number]\":case\"[object String]\":return new s(e);case\"[object RegExp]\":return(i=new(r=e).constructor(r.source,Xt.exec(r))).lastIndex=r.lastIndex,i;case\"[object Symbol]\":return o=e,en?Object(en.call(o)):{}}}var nn=ut&&ut.isMap,on=nn?at(nn):function(e){return we(e)&&\"[object Map]\"==Kt(e)};var rn=ut&&ut.isSet,an=rn?at(rn):function(e){return we(e)&&\"[object Set]\"==Kt(e)},ln=\"[object Arguments]\",sn=\"[object Function]\",cn=\"[object Object]\",un={};function dn(e,t,n,o,r,i){var a;if(void 0!==a)return a;if(!Ae(e))return e;var l=Se(e);if(l)a=function(e){var t=e.length,n=new e.constructor(t);return t&&\"string\"==typeof e[0]&&qt.call(e,\"index\")&&(n.index=e.index,n.input=e.input),n}(e);else{var s=Kt(e),c=s==sn||\"[object GeneratorFunction]\"==s;if(rt(e))return e.slice();if(s==cn||s==ln||c&&!r)a=c?{}:function(e){return\"function\"!=typeof e.constructor||qe(e)?{}:Re(Tt(e))}(e);else{if(!un[s])return r?e:{};a=tn(e,s)}}i||(i=new Nt);var u=i.get(e);if(u)return u;i.set(e,a),an(e)?e.forEach((function(o){a.add(dn(o,t,n,o,e,i))})):on(e)&&e.forEach((function(o,r){a.set(r,dn(o,t,n,r,e,i))}));var d=l?void 0:Mt(e);return function(e,t){for(var n=-1,o=null==e?0:e.length;++n<o&&!1!==t(e[n],n,e););}(d||e,(function(o,r){d&&(o=e[r=o]),He(a,r,dn(o,t,n,r,e,i))})),a}un[ln]=un[\"[object Array]\"]=un[\"[object ArrayBuffer]\"]=un[\"[object DataView]\"]=un[\"[object Boolean]\"]=un[\"[object Date]\"]=un[\"[object Float32Array]\"]=un[\"[object Float64Array]\"]=un[\"[object Int8Array]\"]=un[\"[object Int16Array]\"]=un[\"[object Int32Array]\"]=un[\"[object Map]\"]=un[\"[object Number]\"]=un[cn]=un[\"[object RegExp]\"]=un[\"[object Set]\"]=un[\"[object String]\"]=un[\"[object Symbol]\"]=un[\"[object Uint8Array]\"]=un[\"[object Uint8ClampedArray]\"]=un[\"[object Uint16Array]\"]=un[\"[object Uint32Array]\"]=!0,un[\"[object Error]\"]=un[sn]=un[\"[object WeakMap]\"]=!1;function fn(e){return dn(e,5)}const pn=(e,t)=>{const n=Object.assign({dayjs:ce},t);let o=\"\";const r=[];for(const e in n)o+=`${e},`,r.push(n[e]);o=o.replace(/,$/,\"\");const i=`function (${o}){return ${e}}`;let a;try{a=Function(`\"use strict\";return (${i})`)()(...r)}catch(t){return e}return a},hn=(e=\"\",{textData:t,codeData:n}={},{useNewline:o=!1,useSpace:r=!1}={})=>{const i=window.config||{},a=Object.assign(Object.assign({},i),t),l=String(e||\"\").match(/\\{(.+?)\\}/g);if(null==l||0===l.length)return e;for(let t=0;t<l.length;t++){const o=l[t];let r=o.slice(1,-1).trim();const i=/[\\u4e00-\\u9fa5a-z-_A-Z0-9]*/g,s=r.match(i);for(let e=0;e<s.length;e++){const t=s[e],n=a[t];null!=n&&\"function\"!=typeof n&&(r=r.replace(t,n))}(/\\(.*\\)/g.test(r)||/[+/\\\\*]/g.test(r))&&(r=pn(r,n)),e=e.replace(o,r)}return o&&(e=null==e?void 0:e.replace(/\\n|\\\\n/g,\"<br/>\")),r&&(e=null==e?void 0:e.replace(/\\s{2,}?/g,\" \")),e=e.replace(/Qfw\\((.*?)\\)/,((e,n)=>(null==t?void 0:t.Qfw)?null==t?void 0:t.Qfw(n):n))},yn=(e,t)=>{if(\"string\"==typeof e&&\"string\"==typeof t)return e.toLocaleLowerCase().includes(t.toLocaleLowerCase());if(\"string\"==typeof e&&Array.isArray(t)){const n=t.length;for(let o=0;o<n;o++){const n=t[o];if(\"string\"==typeof n&&e.toLocaleLowerCase().includes(n.toLocaleLowerCase()))return!0}}return!1},mn=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),bn=e=>{const t=[];for(const n of e)n.conditions?t.push(...bn(n.conditions)):\"component\"===(null==n?void 0:n.dataType)&&t.push(n);return t};function gn(e){let t=\"\",n=\"\",o=\"\",r=\"\";e.indexOf(\".\")>-1?(n=e.split(\".\")[0],o=e.split(\".\")[1]):n=e;let i=0,a=0;for(a=n.length-1;a>=0;)i%3==0&&0!==i?\"-\"===n[a]?t+=n[a]:t+=\",\"+n[a]:t+=n[a],a--,i++;return t=t.split(\"\").reverse().join(\"\"),r=e.indexOf(\".\")>-1?t+\".\"+o:t,r}function vn(e){return t(this,arguments,void 0,(function*({graphicConfig:e,request:t,INDICATOR_URL:n=\"\",PAGE_ID:o,dataSourceId:r}){var i;try{const{leftAxisList:a=[],rightAxisList:l=[],queryColumnList:s=[],indicators:c=[]}=_(e),u=[...a,...l,...s,...c],d={};for(const e of u){const{indexCode:t=\"\",parentId:n=\"\"}=e;!n||mn(e,\"calcType\")||d[n]||(d[n]=t)}if(null===(i=Object.keys(d))||void 0===i?void 0:i.length){const e=[];for(const i in d)e.push(new Promise(((e,a)=>{t.post(`${n}/diagram/hrpIndexWithComplex`,{pageId:o,indexGuid:i,indexCode:d[i],dataSourceId:r}).then((t=>{var n;const{success:o,data:r=[]}=t.data;o&&(null===(n=null==r?void 0:r.dataViewColumns)||void 0===n?void 0:n.length)?e(r.dataViewColumns):a(r)})).catch((e=>{console.error(e),a(e)}))})));const i=yield Promise.all(e);return i.reduce(((e,t)=>e.filter((e=>t.find((t=>t.typeGuid===e.typeGuid)))))).filter((e=>e.typeGuid))}}catch(e){console.error(e)}return[]}))}const xn=[\"table\",\"bar\",\"combograph\",\"line\",\"pie\",\"radar\",\"scatter\",\"list\",\"circulate\"];let wn=new Map;const Sn=[\"keyValue\",\"conditionKey\",\"conditionLabel\",\"conditionName\",\"conditionValueType\",\"customValue\",\"id\",\"keyName\"],An=e=>wn.get(e),_n=(e,t)=>{if(t)mn(e,\"indexCode\")&&(e.hrpIndexCode=e.indexCode,delete e.indexCode),mn(e,\"indexCodeNum\")&&(e.hrpIndexCodeNum=e.indexCodeNum,delete e.indexCodeNum),mn(e,\"dataType\")&&delete e.dataType,e.fieldValue||delete e.fieldValue;else{const{calcWays:t=[],dateCalcTypes:n=[],activeKey:o,componentId:r=\"\"}=e;if(5===o&&(null==t?void 0:t.length)&&(null==n?void 0:n.length)&&r){const o=t[0].split(\"-\");(null==o?void 0:o.length)>1&&\"rangeValue\"===o[0]&&(e.calcWays=((e,t={})=>{const{around:n,unit:o,id:r}=e;let i=\"\";const{pageMode:a=\"\",componentList:l=[]}=(null==t?void 0:t.graphicConfig)||{};let s=null,c=null;if(\"design\"===a){const e=null==l?void 0:l.find((e=>e.id===r));if(!e)return[];const{interval:t,intervalUnit:n,startTime:o,endTime:i,operate:a,useCurrentTime:u}=e||{};if(u&&(s=ce().subtract(t,n),c=ce()),o&&(s=ce(o)),i&&(c=ce(i)),a){const{type:e,value:t,mode:n}=a;switch(e){case\"add\":s=s?s.add(t,n):s,c=c?c.add(t,n):c;break;case\"minus\":s=s?s.subtract(t,n):s,c=c?c.subtract(t,n):c}}}else{const e=An(r)||{};_(e.startTime)&&(s=ce(_(e.startTime))),_(e.endTime)&&(c=ce(_(e.endTime)))}s&&c&&(i=`${\"before\"===n?\"-\":\"\"}${c.diff(s,o.toLowerCase())+1}`);return i?[i]:[]})({around:o[1],unit:n[0],id:r})),delete e.radioValue}if(mn(e,\"dataType\")){if(\"DATE\"===e.fieldType&&(e.label=e.fieldName),\"component\"===e.dataType)if(\"PARENT\"===e.fieldValue){let t=e.modelKey;t&&e.prop&&(t+=`-${e.prop}`),e.fieldValue=\"${\"+t+\"}\"}else e.fieldValue=\"${\"+e.fieldValue+\"}\";delete e.dataType}mn(e,\"activeKey\")&&delete e.activeKey,mn(e,\"radioValue\")&&delete e.radioValue,mn(e,\"indexCode\")&&(e.hrpIndexCode=e.indexCode,delete e.indexCode),mn(e,\"indexCodeNum\")&&(e.hrpIndexCodeNum=e.indexCodeNum,delete e.indexCodeNum),\"component\"!==e.dataType&&e.useCurrentTime&&(e.fieldValue=ce().format(e.dateFormat)),mn(e,\"modelKey\")&&delete e.modelKey,mn(e,\"prop\")&&delete e.prop,delete e.useCurrentTime}},jn=(e,t)=>{const n=[];return(null==e?void 0:e.length)&&fn(e).forEach((e=>{if(e.join&&e.conditions){const o=!e.conditions.some((e=>e.join&&e.conditions));e.conditions.forEach(((r,i)=>{_n(r,t);const a={};if(i<e.conditions.length-1&&(a.join=e.join),o)n.push(Object.assign(Object.assign({},a),r));else if(r.join&&r.conditions){const e=t?\"sqlConditions\":\"conditions\";n.push(Object.assign({[e]:jn([r],t)},a))}else n.push(Object.assign(Object.assign({},a),r))}))}else _n(e,t),n.push(e)})),n},On=(e={},t)=>{if((null==e?void 0:e.sortCpnts)&&t){const n=kn(e);n&&(t.sort=n)}const{label:n,name:o,location:r,show:i,indexCode:a,indexCodeNum:l,calcType:s=\"COLUMN\",builtInFormula:c,builtInValueSource:u,builtInCalcWay:d,formula:f,conditions:p,aggregate:h,distinct:y,dimByCount:m,dataTo:b,sort:g}=e;let v;if(p&&(v=jn(p)),\"COMPONENT\"===s){const e={};return Nn(e,u),{label:n.trim(),columnName:o,show:i,calcType:s,componentAlias:d,componentValue:e.fieldValue||null}}const x={label:n.trim(),columnName:o,location:r,show:i,calcType:\"1\"===b?\"VIEW\":s,hrpIndexCode:a,hrpIndexCodeNum:l,aggregate:h,builtInFormula:c,builtInValueSource:u,formula:f,conditions:v};if(g&&(x.sort={columnName:o,label:x.label,order:g,type:\"NORMAL\"}),\"DATE_OFFSET\"!==c)return\"the_count\"===o&&(x.calcType=\"AGGREGATE\",x.distinct=!!y,x.typeGuid=m),Object.assign(Object.assign({},x),{builtInCalcWay:d});{const e=d.split(\"-\");if(3===(null==e?void 0:e.length)){let t=e[0];return\"before\"===e[2]&&\"0\"!==e[0]&&(t=`-${e[0]}`),Object.assign(Object.assign({},x),{calcWays:[t],dateCalcTypes:[e[1]]})}}},Cn=e=>{if(!e)return[];const t=fn((null==e?void 0:e.controlList)||[]).filter((e=>\"parentCode\"!==e.conditionKey)),{classificationList:n=[],rowHeaderList:o=[],dimensionList:r=[],seriesList:i=[],leftAxisList:a=[],rightAxisList:l=[],queryColumnList:s=[],indexLibColumns:c=[],indicators:u=[]}=e;Tn(t);const d=[...n,...o,...r,...i,...a,...l,...s,...c,...u],f=[];for(const e of d){const t=bn((null==e?void 0:e.conditions)||[]);if(null==t?void 0:t.length){const e=t.filter((e=>\"component\"===(null==e?void 0:e.dataType))).map((e=>{const t={};return(null==e?void 0:e.dateFormat)&&(t.format=e.dateFormat),\"PARENT\"===e.fieldValue&&(t.id=\"PARENT\",t.keyName=e.modelKey,t.modelKey=e.modelKey,t.prop=e.prop),Object.assign({conditionKey:e.fieldName,conditionLabel:e.fieldName,conditionName:e.fieldName,conditionValueType:e.fieldType,id:e.componentId,keyName:e.fieldValue,rule:e.rule,notGlobal:!0,indexCode:e.indexCode,typeGuid:e.typeGuid,indexCodeNum:e.indexCodeNum},t)}));if(null==e?void 0:e.length)for(const t of e)f.find((e=>e.keyName===t.keyName))||f.push(t)}}const p=f.length,h=t;for(let e=0;e<p;e++){const t=f[e];if(\"parentCode\"===(null==t?void 0:t.conditionKey))continue;const{id:n,keyName:o,prop:r,format:i,modelKey:a,dataType:l=\"component\",customValue:s}=t,c=Ln(t);Nn(c,n,{prop:r,dateFormat:i,modelKey:a,keyName:o}),\"\"===l&&(c.fieldValue=s||\"\"),h.push(c)}for(let e=h.length-1;e>=0;e--){const t=h[e];if(!t.globalCondition){bn(h).find((e=>e.alias===t.alias&&e.globalCondition))&&h.splice(e,1)}}return h};function Ln(e){const{id:t,keyName:n,conditionLabel:o,conditionKey:r,conditionValueType:i,prop:a,rule:l=\"NONE\",notGlobal:s=!1,indexCode:c,typeGuid:u,indexCodeNum:d,dataType:f=\"component\"}=e;let p=n||t;p&&a&&(p+=`-${a}`);let h=l;return\"NONE\"===h&&(h=[\"startTime\",\"endTime\"].includes(a)?\"startTime\"===a?\"GREATER_EQUAL\":\"LESS_EQUAL\":(null==n?void 0:n.includes(\"startTime\"))?\"GREATER_EQUAL\"===a:(null==n?void 0:n.includes(\"endTime\"))?\"LESS_EQUAL\"===a:\"EQUAL\"),\"PARENT\"===t&&(p=e.modelKey,p&&a&&(p+=`-${a}`),h=l),{rule:h,label:o,fieldName:r,fieldValue:\"\",valueType:i,alias:p,globalCondition:!s,indexCode:c,typeGuid:u,indexCodeNum:d,dataType:f}}function Tn(e){if(null==e?void 0:e.length)for(const t of e)if(null==t?void 0:t.conditions)Tn(t.conditions);else{const{id:e,keyName:n,prop:o,modelKey:r,format:i,dataType:a=\"component\",customValue:l}=t,s=Ln(t);Nn(s,e,{prop:o,dateFormat:i,modelKey:r,keyName:n}),\"\"===a&&(s.fieldValue=l||\"\");for(const e in s)t[e]=s[e];for(const e of Sn)delete t[e]}}function Nn(e,t,n){const{prop:o=\"\",dateFormat:r=\"\",modelKey:i=\"\",keyName:a=\"\",operateValue:l,operateMode:s,operateType:c}=n||{},u=i||a;if(\"PARENT\"===t&&u&&o){const t=window.config.record;let n=o,i=r;const a=o.match(/\\{(.+?)\\}/g);if(null==a?void 0:a.length){const t=a[0].slice(1,-1).trim();n=o.replace(a[0],\"\"),i=t,e.dateFormat=i}if(t&&t[u]){const o=_(t[u][n]);ce.isDayjs(o)?e.fieldValue=o.format(i||\"YYYY-MM-DD\"):e.fieldValue=o}return}const d=An(t)||{},{value:f,format:p=\"YYYY-MM-DD\",type:h=\"\",useCurrentTime:y,RECORD:m}=d||{},b=r||p;if(yn(h,\"date\")){let t;if(t=y?f?_(f):ce():_(f),\"string\"==typeof t&&(t=ce(t)),l&&s&&c)switch(c){case\"add\":t=t.add(l,s);break;case\"minus\":t=t.subtract(l,s)}e.fieldValue=null==t?void 0:t.format(b),e.dateFormat=b}else if(yn(h,\"rangepicker\")){let t=o;if(!o){const e=a&&a.split(\"-\");(null==e?void 0:e.length)&&(t=e[e.length-1])}if(!t)return;let n=null;if(_(d[t])&&(n=ce(_(d[t]))),l&&s&&c)if(\"rangeValue\"===l){if(d.startTime&&d.endTime){const e=_(d.endTime).diff(_(d.startTime),s)+1;switch(c){case\"add\":n=n?n.add(e,s):n;break;case\"minus\":n=n?n.subtract(e,s):n}}}else if(!isNaN(+l))switch(c){case\"add\":n=n?n.add(l,s):n;break;case\"minus\":n=n?n.subtract(l,s):n}if(n&&(e.fieldValue=null==n?void 0:n.format(b)),\"rangeValue\"===t&&d.startTime&&d.endTime){const t=function(e){const t=e.split(\"-\");let n=\"\";if(null==t?void 0:t.length)switch(t[t.length-1]){case\"YYYY\":n=\"year\";break;case\"MM\":n=\"month\";break;case\"DD\":n=\"day\"}return n}(b);t&&(e.fieldValue=_(d.endTime).diff(_(d.startTime),t)+1)}e.dateFormat=b}else yn(h,xn)?e.fieldValue=i&&m?m[i]:!i&&m?m.value:_(f):yn(h,\"select\")&&Array.isArray(_(f))?e.fieldValue=_(f).join(\",\"):e.fieldValue=_(f)}const $n=e=>{var t;if(e){const n=Array.isArray(e)?fn(e):[fn(e)];let o=\"\",r=[];const i=[],a=[],l=[];for(const e of n){if(e.defaultCode&&(e.label=e.columnName,delete e.defaultCode),\"CUSTOM\"===e.type&&(r=e.customOrderColumns),o=e.type,i.push(e.label),null===(t=e.columnName)||void 0===t?void 0:t.includes(\"_ecanrepeat_\")){const t=e.columnName.split(\"_ecanrepeat_\");a.push(t[0])}else a.push(e.columnName);l.push(e.order)}return\"CUSTOM\"!==o&&(null==i?void 0:i.length)>1&&(o=\"COMBINATION\"),\"CUSTOM\"===o?{label:i.join(\",\"),columnName:a.join(\",\"),type:o,customOrderColumns:r}:{label:i.join(\",\"),columnName:a.join(\",\"),order:l.join(\",\"),type:o}}return e},kn=e=>{const{sortCpnts:t=[]}=e;let n,o=\"\";for(const e of t){const t=An(e)||{},{type:n,RECORD:r}=t;if(yn(n,\"image\")&&yn(null==r?void 0:r.value,[\"asc\",\"desc\"])){o=r.value.toUpperCase();break}}return o&&(n={label:e.label,columnName:e.name,order:o,type:\"NORMAL\"}),n},Dn=(t,n={})=>{var o,r,i,a,l,s,c,u;const{graphicConfig:d,type:f,globalModel:p,isGroupTable:h=!1}=t;p&&(wn=p);const y=yn(f,\"pivottable\");let m,{source:b,dataViewId:g,plugin:v=\"1\",layer:x,chartType:w,classificationList:S=[],rowHeaderList:A=[],dimensionList:_=[],seriesList:j=[],leftAxisList:O=[],rightAxisList:C=[],queryColumnList:L=[],indexLibColumns:T=[],indicators:N=[],controlList:$=[],formFields:k={},variableList:D=[],variableConditions:M=[],dataSourceId:E=\"\",idxLibMode:I,preview:V=!1,edvDataSetId:F,compositeIndicator:z}=d||{},R=[];if(\"design\"===(null==d?void 0:d.pageMode)?(R=(null!==(o=d.sqlConditions)&&void 0!==o?o:[]).map((e=>{const t={};if(mn(e,\"globalCondition\")||e.join||(t.globalCondition=!0),!e.join){const n=e.rule||\"EQUAL\";t.rule=\"NONE\"===n?\"EQUAL\":n}return Object.assign(Object.assign({},e),t)})),(null==M?void 0:M.length)&&(R=R.concat(M))):(R=Cn(d),(null==D?void 0:D.length)&&(R=R.concat(function(e){const t=[];if(null==e?void 0:e.length)for(const n of e)if(n.variableName){const e={variateName:n.variableName,globalCondition:!1,valueType:n.variableType,alias:n.keyName||\"\"};Nn(e,n.id,{dateFormat:n.format,prop:n.dateTypeValue,keyName:n.keyName,operateType:n.operateType,operateMode:n.operateMode,operateValue:n.operateValue}),\"\"===n.dataType&&(e.fieldValue=n.variableValue),n.format&&(e.dateFormat=n.format),n.label&&(e.label=n.label),t.push(e)}return t}(D)))),null==R?void 0:R.length){const e=R.filter((e=>e.globalCondition)),t=R.filter((e=>!e.globalCondition));(null==e?void 0:e.length)>1&&(R=[{join:\"&&\",conditions:e},...t])}(null==R?void 0:R.length)&&(R=jn(R,\"1\")),null==x&&(x=yn(f,[\"table\",\"card\"])||yn(f,[\"list\",\"circulate\"])&&(null==S?void 0:S.length)>1?\"1\":yn(f,[\"select\",\"checkbox\",\"radio\"])?\"3\":yn(f,[\"indexPanel\"])?\"4\":\"2\"),yn(f,[\"indexPanel\"])&&(v=\"3\");const U=[];let P,G=\"\";if(Array.isArray(S)&&S.length>0&&(![\"ecanList\",\"ecanCirculate\"].includes(f)||1===(null==S?void 0:S.length))){const e=S.length;for(let t=0;t<e;t++){const n=S[t]||{},{label:o=\"\",name:i=\"\",show:a=!1,sort:l,customGroup:s,conditions:c,dateFormat:u,typeGuid:d=\"\",truncations:p=[]}=n;if(a||1===e){G=d,m={label:o.trim(),columnName:i,show:a,sort:kn(n)||$n(l)||l,customGroup:s,conditions:jn(c),typeGuid:d},u&&(m.dateFormat=u),\"the_date\"!==i||m.dateFormat||(m.dateFormat=\"YYYY-MM-DD\");const e={};if(Array.isArray(p)&&p.length>0){const t=p.length;for(let n=0;n<t;n++){const t=p[n]||{},{rule:o=\"\",num:r=0,name:i=\"\"}=t;o&&r&&(e.num=r,e.rule=o,i&&(e.otherGroupName=i))}}if((null===(r=Object.keys(e))||void 0===r?void 0:r.length)&&(m.truncation=e),!yn(f,[\"scatter\",\"valueline\"]))break;U.push(m)}}}if(Array.isArray(j)&&j.length>0){const e=j.length;for(let t=0;t<e;t++){const n=j[t]||{},{label:o=\"\",name:r=\"\",show:i=!1,sort:a,customGroup:l,conditions:s,typeGuid:c,dateFormat:u=\"\"}=n;if(i||1===e){P={label:o.trim(),columnName:r,show:i,sort:$n(a),customGroup:l,conditions:jn(s),typeGuid:c},u?P.dateFormat=u:\"the_date\"===r&&(P.dateFormat=\"YYYY-MM-DD\");break}}}const Y=[];null==O||O.forEach((e=>{e.location=\"LEFT\",Y.push(On(e,m))})),null==C||C.forEach((e=>{e.location=\"RIGHT\",Y.push(On(e,m))}));let W=N;(null==n?void 0:n.pivotTableCal)&&(W=(null===(i=n.pivotTableCal)||void 0===i?void 0:i.indicators)||[]),null==W||W.forEach((e=>{e.location=\"LEFT\",Y.push(On(e,m))}));const H=[];[\"ecanList\",\"ecanCirculate\"].includes(f)&&(null==S?void 0:S.length)>1&&(L=S),(null==n?void 0:n.pivotTableCal)&&(L=(null===(a=n.pivotTableCal)||void 0===a?void 0:a.dimensions)||[]),null==L||L.forEach((e=>{const{label:t,name:o,location:r,show:i,indexCode:a,sort:l,typeGuid:s,indexCodeNum:c,dateFormat:u,conditions:d}=e;let f=$n(l);if(n.sort){const{field:o,order:r}=n.sort;let i=Y.find((e=>e.label===o));i||t!==o||(i=e),i&&(f={columnName:i.columnName,label:n.sort.field,order:r.toUpperCase(),type:\"NORMAL\"})}const p={label:t,columnName:o,location:r,show:i,sort:f,calcType:\"COLUMN\",hrpIndexCode:a,hrpIndexCodeNum:c,conditions:jn(d),typeGuid:s};u&&(p.dateFormat=u),\"the_date\"!==o||p.dateFormat||(p.dateFormat=\"YYYY-MM-DD\"),H.push(p)}));const B=[];[\"ecanTable\"].includes(f)&&d.isIndexSet&&T.forEach((e=>{const t={label:e.label,calcType:e.calcType,show:e.show};e.formula&&(t.formula=e.formula),B.push(t)}));let K=[],q=[];if(Array.isArray(A)&&A.length>0?q=A:Array.isArray(_)&&_.length>0&&(q=_),null==q?void 0:q.length){const e=q.length;for(let t=0;t<e;t++){const e=q[t]||{},{label:o=\"\",name:r=\"\",show:i=!1,sort:a,customGroup:s,conditions:c,truncations:u,typeGuid:d=\"\",dateFormat:f}=e;let p=$n(a);if(n.sort){const{field:t,order:o}=n.sort;let r=Y.find((e=>e.label===t));r||e.label!==t||(r=e),r&&(p={columnName:r.columnName,label:n.sort.field,order:o.toUpperCase(),type:\"NORMAL\"})}const h={label:o.trim(),columnName:r,show:i,sort:p,customGroup:s,conditions:jn(c),typeGuid:d};f&&(h.dateFormat=f),\"the_date\"!==r||h.dateFormat||(h.dateFormat=\"YYYY-MM-DD\");const y={};if(Array.isArray(u)&&u.length>0){const e=u.length;for(let t=0;t<e;t++){const e=u[t]||{},{rule:n=\"\",num:o=0,name:r=\"\"}=e;n&&o&&(y.num=o,y.rule=n,r&&(y.otherGroupName=r))}}(null===(l=Object.keys(y))||void 0===l?void 0:l.length)&&(h.truncation=y),K.push(h)}}let Q,J=[];const X=[];if(null==n?void 0:n.pivotTableCal){let t=[];const{calc:o=[],filter:r=[],truncations:i=[],sorts:a=[],aggregateMethod:l=[],rowDimensionKeys:u=[],colDimensionKeys:d=[]}=n.pivotTableCal;if(Y.push(...o),null==r?void 0:r.length){const n=function e(t){const n=[];for(const o of t)o.conditions?n.push(...e(o.conditions)):\"the_date\"===o.conditionKey&&n.push(o);return n}($);for(const o of r){const{type:r}=o,i=e(o,[\"type\"]);\"indicators\"===r?t=Y:\"dimension\"===r&&(t=H);const a=t.find((e=>e.columnName===o.fieldName&&e.label===o.label));if(a)if(\"indicators\"===r)a.filter={rule:i.rule,fieldValue:i.fieldValue};else if(\"dimension\"===r){let e=!0;\"the_date\"===i.fieldName&&2===(null==n?void 0:n.length)&&(e=!1,X.push(i)),e&&(a.conditions||(a.conditions=[]),a.conditions.push(i))}}}if(null==i?void 0:i.length)for(const e of i){const t=H.find((t=>t.label===e.key));t&&(t.truncation={num:e.num,rule:e.rule})}if(null==a?void 0:a.length)for(const n of a){const{fieldType:o,columnData:r}=n,i=e(n,[\"fieldType\",\"columnData\"]);\"indicators\"===o?(t=Y,Q=r):\"dimension\"===o&&(t=H);const a=t.find((e=>e.label===i.label));a&&(a.sort=Object.assign(Object.assign({},i),{columnName:a.columnName}))}if(null===(s=Object.keys(l))||void 0===s?void 0:s.length)for(const e in l){const t=H.find((t=>t.label===e));t&&(null===(c=l[e])||void 0===c?void 0:c.length)&&(t.aggregateMethod=l[e])}K=[],J=[];for(const e of H)u.includes(e.columnName)?K.push(e):d.includes(e.columnName)&&J.push(e)}if(yn(f,[\"text\",\"proportion\",\"counter\"])?w=\"zb\":yn(f,[\"valueline\"])?w=\"valueline\":yn(f,[\"indexPanel\"])&&(w=\"indexPanel\"),h||\"card\"===f){if(0===K.length||0===Y.length)return;w=\"grouptable\"}else{if(\"1\"===x&&!H.length&&!B.length)return;if([\"2\",\"4\"].includes(x)&&0===Y.length)return;if(!(\"3\"!==x||(G||\"EDV_DATA_SET\"===b)&&k.labelField&&k.valueField))return;if(\"3\"===x&&\"ecanDataSelect\"===f&&0===Y.length)return}let Z;if((null==_?void 0:_.length)&&(x=\"1\",w=\"grouptable\"),!yn(f,[\"scatter\",\"valueline\"])&&(null===(u=Object.keys(k))||void 0===u?void 0:u.length)){const e=bn($).find((e=>\"parentCode\"===e.conditionKey)),n={};if(e){const t=An(e.id)||{};if(!(null==t?void 0:t.itemCodes))return;n.parentItemCodes=t.itemCodes}\"ecanDataSelect\"===f&&(n.indicatorList=Y.filter((e=>e.show))),\"EDV_DATA_SET\"===b&&(n.edvDataSetId=F),m.sort&&(n.sort=m.sort),Z=Object.assign({url:\"/diagram/formData\",source:b,dataViewId:g,plugin:\"4\",layer:x,chartType:\"normalSelect\",rangeIndexTypeGuid:G,type:\"ecanDataSelect\"===f?\"normalSelectData\":\"normalSelect\",labelField:k.labelField,valueField:k.valueField,sqlConditions:R,idxLibMode:\"WITH_DATE_DIM_TABLE\",dataSourceId:E,keyName:t.keyName},n)}else{let e={};e=yn(f,[\"scatter\",\"valueline\"])?{classifications:U}:{classification:m},(null==B?void 0:B.length)&&(e.indexLibColumns=B,e.isIndexSet=!0),yn(f,\"table\")&&d.isIndexSet&&(e.compositeIndicator=z);const n=R.map((e=>{const{fieldValue:t}=e,n={};return t&&Array.isArray(t)&&(n.fieldValue=JSON.stringify(t)),Object.assign(Object.assign({},e),n)}));(null==X?void 0:X.length)&&function e(t){for(const n of t)if(n.sqlConditions)e(n.sqlConditions);else if(\"the_date\"===n.fieldName){const e=X.find((e=>e.prop===n.prop));e&&(n.fieldValue=e.fieldValue)}}(n),Z=Object.assign({url:\"/diagram\",source:b,dataViewId:g,plugin:y?\"5\":v,layer:x,chartType:y?\"pivot-table\":w,series:P,indicatorList:Y,queryColumns:h?[]:H,pageFlag:!0,edvDataSetId:F||\"\",sqlConditions:n,idxLibMode:I,dataSourceId:E,preview:V,rowHeaders:K,keyName:t.keyName,columnData:Q,columnHeaders:J},e)}return Z},Mn=(e=[],t,n=!1)=>{let{name:o=\"name\",types:r=[]}=t||{};o=(null==o?void 0:o.trim())||o;const i=new Set,a=new Map,l=e.length,s=r.length;if(1!==l||n)for(let t=0;t<l;t++){const n=e[t],l=n[o];i.add(l);for(let e=0;e<s;e++){const t=r[e],{label:o,value:i}=t,l=Object.assign(Object.assign({},n),{value:n[i]});if(a.has(o)){const e=a.get(o);e.push(l),a.set(o,e)}else a.set(o,[l])}}else{const t=[];for(let n=0;n<s;n++){const o=r[n],{label:a,value:l}=o,s=Object.assign(Object.assign({},e[0]),{value:e[0][l]});i.add(a),t.push(s)}const n=e[0][o]||\"\";a.set(n,t)}const c=Array.from(i),u=[];for(const[e,t]of a)u.push({name:e,data:t});return{dimensions:c,dataset:u}},En=(e,t)=>{let{name:n=\"name\",value:o=\"value\",type:r=\"type\"}=t||{};n=null==n?void 0:n.trim(),o=null==o?void 0:o.trim(),r=null==r?void 0:r.trim();const i=new Map,a=e.length;for(let t=0;t<a;t++){const a=e[t],l=a[n]||\"\",s=a[o]||\"\",c=a[r]||\"\";if(i.has(c)){const e=i.get(c);e.push(Object.assign({name:l,value:s},a)),i.set(c,e)}else i.set(c,[Object.assign({name:l,value:s},a)])}const l=[],s=[];for(const[e,t]of i)if(s.push({name:e,data:t}),null==t?void 0:t.length)if(l.length)for(const e of t)l.includes(e.name)||l.push(e.name);else l.push(...t.map((e=>e.name)));return{dimensions:l,dataset:s}},In=(e,t)=>{var n;if(null==e)return t;const o=e.match(/\\{.*\\}/g);if(null==o||0===o.length)return t;const r=o.length;for(let i=0;i<r;i++){const r=o[i];if(null==r||\"\"===r)break;let a=null===(n=r.slice(1,-1))||void 0===n?void 0:n.trim();a=null==a?void 0:a.replace(/value/g,t);try{let t=a;(/\\(.*\\)/g.test(a)||/[+/\\\\*]/g.test(a))&&(t=pn(a)),e=e.replace(r,t)}catch(t){e=e.replace(r,a)}}return e};function Vn(e){return e.isShowMarkLine?{markLine:{data:[{type:e.markLineType}]}}:{}}const Fn=(e,t,n)=>{const o=e.yAxisLabelFormatter,r=e.xAxisLabelFormatter,{dimensions:i=[],dataset:a=[]}=t,l=re((()=>{const{gradientShow:t,gradientColors:n,gradientOffset:o,barBorderRadius:r}=e,i=a,l=i.length,s=[];for(let a=0;a<l;a++){const l=Object.assign(Object.assign({},i[a]),{type:\"bar\",barWidth:e.barWidth,showBackground:e.showBarBackground}),{isStack:c,stackColumns:u}=e;if(c&&u.includes(i[a].name||!u)&&(l.stack=\"stack\"),l.label={show:e.labelShow,fontSize:e.labelFontSize,position:e.labelPosition,color:e.labelColor,width:e.labelWidth,overflow:e.labelOverflow,formatter:t=>{let n=\"\",o=e.labelFormatter;\"\"===o&&(o=\"{c}\");const{seriesName:r,name:i,value:a,data:l}=t||{};return n+=hn(o,{textData:Object.assign({name:i,value:a,a:r,b:i,c:a||0},l)},{useNewline:!0,useSpace:!0}),n}},l.itemStyle={},t&&(l.itemStyle={color:{x:e.isUseHorizontalAxis?1:0,y:0,x2:0,y2:e.isUseHorizontalAxis?0:1,colorStops:[{offset:0,color:e.colors[a]},{offset:o,color:n[a]},{offset:1,color:n[a]}]}}),r){const e=r.split(\",\");if(null==e?void 0:e.length){const t=[];for(const n of e){const e=parseFloat(n);isNaN(e)||t.push(e)}l.itemStyle.barBorderRadius=t}}e.isShowMarkLine&&(l.markLine={data:[{type:e.markLineType}]}),s.push(l)}return s})),s=re((()=>i.map((e=>{let t={};return t=e&&\"object\"==typeof e?Object.assign(Object.assign({},e),{textStyle:{fontSize:n}}):{value:e,textStyle:{fontSize:n}},t}))));return{tooltip:{trigger:\"axis\",show:e.tooltipShow,formatter:t=>{const n=t.length;let o=\"\",i=e.tooltipFormatter;\"\"===i&&(i=\"{marker} {a} {c}\");for(let e=0;e<n;e++){const{marker:n,seriesName:a,name:l,value:s,data:c}=t[e]||{};if(0===e){let e=l;\"string\"!=typeof l||\"0\"!==l[0]||isNaN(+l)||(e=(+l).toString()),o+=`${In(r,e)}<br/>`}o+=hn(i,{textData:Object.assign({marker:n,name:l,value:s,Qfw:gn,a:a,b:l,c:s||0},c)},{useNewline:!0,useSpace:!0}),o+=\"<br/>\"}return o},textStyle:{color:e.tooltipTextStyleColor,fontSize:n},position:e.tooltipPosition||void 0,backgroundColor:e.tooltipBackgroundColor||\"#fff\"},legend:{type:e.legendScroll?\"scroll\":\"plain\",width:e.legendWidth,height:e.legendHeight,show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{rich:{text:{width:e.legendTextWidth,color:e.legendTextStyleColor,fontSize:e.legendFontSize}}},itemHeight:e.legendItemHeight,itemWidth:e.legendItemWidth,itemGap:e.legendItemGap,data:a.map(((t,n)=>({name:t.name,itemStyle:{color:e.colors[n]},icon:e.legendType}))),formatter:t=>((e=\"\",t)=>{var n;const o=e.match(/\\{(.+?)\\}/g),r=(null===(n=e.split(\"\\n\"))||void 0===n?void 0:n.length)-1;let i=\"\";if(r)for(let e=0;e<r;e++)i+=\"\\n\";let a=e;if(null==o?void 0:o.length){for(const e of o){const n=hn(e,{textData:t},{useNewline:!1,useSpace:!1});n&&(a=a.replace(e,n))}return`${i}{text|${a}}`}return e})(e.legendFormatter,{name:t})},xAxis:{type:e.isUseHorizontalAxis?\"value\":\"category\",data:e.isUseHorizontalAxis?null:_(s),inverse:e.isUseHorizontalAxis?e.xAxisInverse:e.axisInverse,minInterval:e.xAxisMinInterval,splitLine:{show:e.xAxisSplitLineShow,lineStyle:{color:e.xAxisSplitLineStyleColor,type:e.xAxisSplitLineType},interval:e.xAxisSplitLineInterval},splitArea:{show:e.xAxisSplitAreaShow},axisLabel:{color:e.xAxisLabelColor,interval:e.xAxisLabelInterval||0,rotate:e.xAxisLabelRotate,width:e.xAxisLabelWidth,overflow:e.xAxisLabelOverflow,fontSize:e.xAxisLabelFontSize,formatter:e=>(\"string\"!=typeof e||\"0\"!==e[0]||isNaN(+e)||(e=(+e).toString()),In(r,e))},axisLine:{show:e.xAxisLineShow,lineStyle:{color:e.xAxisLineStyleColor}},axisTick:{show:e.xAxisTickShow},name:e.xAxisName,nameTextStyle:{fontSize:e.xAxisLabelFontSize,color:e.xAxisLabelColor,align:\"left\"},max:e.xAxisMaxValue||null},yAxis:{type:e.isUseHorizontalAxis?\"category\":\"value\",data:e.isUseHorizontalAxis?_(i):null,inverse:e.isUseHorizontalAxis?e.axisInverse:e.yAxisInverse,minInterval:e.yAxisMinInterval,splitLine:{show:e.yAxisSplitLineShow,lineStyle:{color:e.yAxisSplitLineStyleColor,type:e.yAxisSplitLineType}},splitArea:{show:e.yAxisSplitAreaShow},axisLabel:{show:e.yAxisLabelShow,fontSize:e.yAxisLabelFontSize,color:e.yAxisLabelColor,rotate:e.yAxisLabelRotate,width:e.yAxisLabelWidth,overflow:e.yAxisLabelOverflow,formatter:e=>In(o,e)},axisLine:{show:e.yAxisLineAlwaysDisplay,lineStyle:{color:e.yAxisLineStyleColor}},name:e.yAxisName,nameTextStyle:{fontSize:e.yAxisLabelFontSize,color:e.yAxisLabelColor,align:\"right\"},max:e.yAxisMaxValue||null},series:_(l)}},zn=(e,t,n)=>{const o=e.yAxisLabelFormatter,r=e.xAxisLabelFormatter,{dimensions:i=[],dataset:a=[]}=t,l=re((()=>i.map((e=>{let t={};return t=e&&\"object\"==typeof e?Object.assign(Object.assign({},e),{textStyle:{fontSize:n}}):{value:e,textStyle:{fontSize:n}},t})))),s=re((()=>{const t=[],n=a.length;for(let o=0;o<n;o++){const n={};e.shadowColor&&(n.shadowColor=e.shadowColor,n.shadowBlur=e.shadowBlur,n.shadowOffsetY=e.shadowOffsetY,n.shadowOffsetX=e.shadowOffsetX),t.push(Object.assign(Object.assign(Object.assign({type:\"line\"},a[o]),{symbolSize:e.symbolSize,smooth:e.smooth,areaStyle:{color:e.areaGradientShow?{type:\"linear\",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:e.colors[o]},{offset:1,color:e.areaGradientColor||\"transparent\"}],global:!1}:e.colors[o],opacity:e.areaStyleOpacity},lineStyle:Object.assign({width:e.lineStyleWidth},n)}),Vn(e)))}return t}));return{tooltip:{trigger:\"axis\",show:e.tooltipShow,formatter:t=>{const n=t.length;let o=\"\",r=e.tooltipFormatter;\"\"===r&&(r=\"{marker} {a} {c}\");for(let e=0;e<n;e++){const{marker:n,seriesName:i,name:a,value:l,data:s}=t[e]||{};0===e&&(o+=`${a}<br/>`),o+=hn(r,{textData:Object.assign({marker:n,name:a,value:l,a:i,b:a,c:l},s)},{useNewline:!0,useSpace:!0}),o+=\"<br/>\"}return o},textStyle:{color:e.tooltipTextStyleColor,fontSize:n.value},position:e.tooltipPosition||void 0,backgroundColor:e.tooltipBackgroundColor||\"#fff\"},xAxis:{name:e.xAxisName,type:\"category\",data:_(l),minInterval:e.xAxisMinInterval,splitLine:{show:e.xAxisSplitLineShow,lineStyle:{color:e.xAxisSplitLineStyleColor}},axisLabel:{color:e.xAxisLabelColor,interval:e.xAxisLabelInterval||0,rotate:e.xAxisLabelRotate,width:e.xAxisLabelWidth,overflow:e.xAxisLabelOverflow,formatter:e=>In(r,e)},axisLine:{lineStyle:{color:e.xAxisLineStyleColor}},axisTick:{show:e.xAxisTickShow}},yAxis:{type:\"value\",name:e.yAxisName,minInterval:e.yAxisMinInterval,splitLine:{show:e.yAxisSplitLineShow,lineStyle:{color:e.yAxisSplitLineStyleColor}},axisLabel:{fontSize:n,color:e.yAxisLabelColor,formatter:e=>In(o,e)},axisLine:{show:e.yAxisLineAlwaysDisplay,lineStyle:{color:e.yAxisLineStyleColor}}},legend:{show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{fontSize:n}},series:_(s)}},Rn=(e,t,n)=>{const{dataset:o=[]}=t;let{data:r=[]}=o[0]||{};if(Array.isArray(e.colors)){const t=e.isUseLabelColors,n=e.colors;r=r.map(((e,o)=>Object.assign({label:t?{color:n[o]}:{}},e)))}return{title:{text:e.titleText,subtext:e.titleSubtext,textStyle:{fontSize:e.titleFontSize,fontWeight:e.fontWeight,color:e.titleColor},left:e.textAlign||\"center\"},tooltip:{show:e.tooltipShow,trigger:e.tooltipTrigger,formatter:t=>{const{marker:n,seriesName:o,name:r,value:i,percent:a,data:l}=t||{};return hn(e.tooltipFormatter,{textData:Object.assign({marker:n,name:r,value:i,percent:a,a:o,b:r,c:i,d:a},l)},{useNewline:!0,useSpace:!0})},textStyle:{color:e.tooltipTextStyleColor||\"#333\"},backgroundColor:e.tooltipBackgroundColor||\"#fff\",borderColor:e.tooltipBorderColor||\"#eee\"},legend:{show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{color:e.legendTextStyleColor,fontSize:18===n?n:e.labelFontSize}},series:[{data:r,type:\"pie\",radius:[e.innerRadius,e.outerRadius],center:[e.centerLeft,e.centerTop],roseType:e.roseType,avoidLabelOverlap:!1,minAngle:e.minAngle,label:{show:\"center\"!==e.labelPosition&&e.labelShow,color:e.labelColor,fontSize:18===n?n:e.labelFontSize,position:e.labelPosition,formatter:(i=e.labelFormatter,i.replace(/\\\\n/g,\"\\n\"))},labelLine:{show:e.labelLineShow,length:e.labelLineLength,length2:e.labelLineLength2},emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:\"rgba(0, 0, 0, 0.5)\"},label:{}}}]};var i},Un=(e,t,n)=>{const{dimensions:o=[],dataset:r=[]}=t,i=re((()=>o.map((e=>{let t={};return t=e&&\"object\"==typeof e?Object.assign(Object.assign({},e),{textStyle:{fontSize:n}}):{value:e,textStyle:{fontSize:n}},t})))),a=re((()=>{const t=[],n=r.length,o=e.seriesTypes;for(let i=0;i<n;i++){const n=o[i],{type:a,axisIndex:l}=n||{};let s=Object.assign({type:a,yAxisIndex:l},r[i]);if(\"line\"===a){const t={};e.shadowColor&&(t.shadowColor=e.shadowColor,t.shadowBlur=e.shadowBlur,t.shadowOffsetY=e.shadowOffsetY,t.shadowOffsetX=e.shadowOffsetX),s=Object.assign(Object.assign({},s),{symbolSize:e.symbolSize,smooth:e.smooth,itemStyle:{color:e.colors[i]},areaStyle:{color:e.areaGradientShow?{type:\"linear\",x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:e.colors[i]},{offset:1,color:e.areaGradientColor||\"transparent\"}],global:!1}:e.colors[i],opacity:e.areaStyleOpacity},lineStyle:Object.assign({width:e.lineStyleWidth},t)})}if(\"bar\"===a){const{gradientShow:t,gradientColors:n,gradientOffset:o}=e,r={};if(e.barBorderRadius){const t=e.barBorderRadius.split(\",\");if(null==t?void 0:t.length){const e=[];for(const n of t){const t=parseFloat(n);isNaN(t)||e.push(t)}r.borderRadius=e}}t&&(r.color={x:0,y:0,x2:0,y2:1,colorStops:[{offset:0,color:e.colors[i]},{offset:o,color:n[i]},{offset:1,color:n[i]}]}),s=Object.assign(Object.assign({},s),{barWidth:e.barWidth,itemStyle:r})}e.isShowMarkLine&&(s.markLine={data:[{type:e.markLineType}]}),t.push(s)}return t})),l=re((()=>{const t=e.yAxis;return null==t?void 0:t.map(((t,o)=>({type:\"value\",minInterval:e.yAxisMinInterval,splitLine:{show:0===o?e.yAxisLeftSplitLineShow:e.yAxisRightSplitLineShow,lineStyle:{color:e.yAxisSplitLineStyleColor,type:0===o?e.yAxisLeftSplitLineType:e.yAxisRightSplitLineType}},splitArea:{show:e.yAxisSplitAreaShow},axisLabel:{fontSize:n,show:e.yAxisLabelShow,color:e.yAxisLabelColor,formatter:e=>In(t.axisLabelFormatter,e)},axisLine:{show:e.yAxisLineAlwaysDisplay,lineStyle:{color:e.yAxisLineStyleColor}},name:0===o?e.yAxisLeftName:e.yAxisRightName,nameTextStyle:{fontSize:e.yAxisLabelFontSize,color:e.yAxisLabelColor,align:0===o?\"right\":\"left\"},max:e.yAxisMaxValue||null})))}));return{legend:{show:e.legendShow,orient:e.legendOrient,top:e.legendTop,left:e.legendLeft,textStyle:{color:e.legendTextStyleColor,fontSize:n}},tooltip:{trigger:\"axis\",show:e.tooltipShow,formatter:t=>{const n=t.length;let o=\"\",r=e.tooltipFormatter;\"\"===r&&(r=\"{marker} {a} {c}\");const i=e.seriesTypes;for(let e=0;e<n;e++){const n=i[e],{tooltipFormatter:a}=n||{},{marker:l,seriesName:s,name:c,value:u,data:d}=t[e]||{};0===e&&(o+=`${c}<br/>`),o+=hn(a||r,{textData:Object.assign({marker:l,name:c,value:u,seriesName:s,a:s,b:c,c:u},d)},{useNewline:!0,useSpace:!0}),o+=\"<br/>\"}return o},textStyle:{color:e.tooltipTextStyleColor||\"#333\",fontSize:n},backgroundColor:e.tooltipBackgroundColor||\"#fff\",borderColor:e.tooltipBorderColor||\"#eee\"},xAxis:{name:e.xAxisName,minInterval:e.xAxisMinInterval,type:\"category\",data:_(i),splitLine:{show:e.xAxisSplitLineShow,lineStyle:{color:e.xAxisSplitLineStyleColor}},axisLabel:{color:e.xAxisLabelColor,interval:e.xAxisLabelInterval||0,rotate:e.xAxisLabelRotate,width:e.xAxisLabelWidth,overflow:e.xAxisLabelOverflow},axisLine:{lineStyle:{color:e.xAxisLineStyleColor}},axisTick:{show:e.xAxisTickShow}},yAxis:_(l),series:_(a)}},Pn=(e,t,n=12)=>Object.assign(Object.assign({},(e=>({title:{text:e.titleText,subtext:e.titleSubtext,textStyle:{fontSize:e.titleFontSize,fontWeight:e.fontWeight,color:e.titleColor},left:e.textAlign||\"center\"},grid:{top:e.gridTop,bottom:e.gridBottom,left:e.gridLeft,right:e.gridRight,containLabel:e.gridContainLabel},color:e.colors}))(e)),((e,t,n)=>{switch(e.type){case\"bar\":return Fn(e,t,n);case\"line\":return zn(e,t,n);case\"pie\":return Rn(e,t,n);case\"comboGraph\":return Un(e,t,n);default:return{}}})(e,t,n));export{Dn as formatIndicatorParams,vn as getIndicatorParams,mn as hasOwn,yn as lowerCaseIncludes,pn as runCode,Pn as transformProps,Mn as useTransformChartDataByAttrKey,En as useTransformChartDataByAttrValue,In as useValueFormatter,hn as useVariablesInText};\n","import dayjs from 'dayjs'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport { useVariablesInText, lowerCaseIncludes, hasOwn } from '@ecan-bi/tools'\r\n// import { Big } from 'big.js'\r\nimport { unref } from 'vue'\r\n\r\nexport const handleFormatter = (formatter: string) => {\r\n return formatter.replace(/\\\\n/g, '\\n')\r\n}\r\n\r\nexport const getConditions = (conditions: { [key: string]: any }[]) => {\r\n const result = []\r\n if (conditions?.length) {\r\n for (const item of conditions) {\r\n if (item.conditions) {\r\n result.push(...getConditions(item.conditions))\r\n } else if (item?.dataType === 'component') {\r\n result.push(item)\r\n }\r\n }\r\n }\r\n return result\r\n}\r\nexport const getSqlConditions = (graphicConfig: { [key: string]: any }, renderUsedComponents: { [key: string]: any }[]) => {\r\n const controlList = cloneDeep(graphicConfig?.controlList || [])\r\n const {\r\n classificationList = [],\r\n rowHeaderList = [],\r\n dimensionList = [],\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = []\r\n } = graphicConfig\r\n handleControlList(controlList, renderUsedComponents)\r\n const sqlConditions = controlList\r\n // console.log('controlList', controlList)\r\n const otherList = [\r\n ...classificationList,\r\n ...rowHeaderList,\r\n ...dimensionList,\r\n ...seriesList,\r\n ...leftAxisList,\r\n ...rightAxisList,\r\n ...queryColumnList,\r\n ...indicators\r\n ]\r\n const conditionList = []\r\n for (const ol of otherList) {\r\n const conditions = getConditions(ol?.conditions || [])\r\n if (conditions?.length) {\r\n const list = conditions\r\n .filter((v: any) => {\r\n const target = getComponent(v, renderUsedComponents)\r\n if (target) {\r\n return v?.dataType === 'component'\r\n }\r\n return false\r\n })\r\n .map((item: any) => {\r\n const target = getComponent(item, renderUsedComponents)\r\n const params: any = {}\r\n if (item?.dateFormat) {\r\n params.format = item.dateFormat\r\n }\r\n return {\r\n conditionKey: item.fieldName,\r\n conditionLabel: item.fieldName,\r\n conditionName: item.fieldName,\r\n conditionValueType: item.fieldType,\r\n id: target.id,\r\n keyName: item.fieldValue,\r\n rule: item.rule,\r\n notGlobal: true,\r\n indexCode: item.indexCode,\r\n typeGuid: item.typeGuid,\r\n indexCodeNum: item.indexCodeNum,\r\n ...params\r\n }\r\n })\r\n if (list?.length) {\r\n for (const l of list) {\r\n if (!conditionList.find(cItem => cItem.keyName === l.keyName)) {\r\n conditionList.push(l)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const len = conditionList.length\r\n for (let i = 0; i < len; i++) {\r\n const control = conditionList[i]\r\n if (control && !Object.keys(control)?.length) {\r\n continue\r\n }\r\n if (control?.conditionKey === 'parentCode') {\r\n continue\r\n }\r\n const {\r\n id,\r\n keyName,\r\n prop,\r\n format: dateFormat,\r\n dataType = 'component',\r\n customValue\r\n } = control\r\n let alias = keyName || id\r\n if (alias && prop) {\r\n alias += `-${prop}`\r\n }\r\n const sqlCondition: { [key: string]: any } = getConditionItem(control)\r\n setFieldValue({\r\n sqlCondition,\r\n renderUsedComponents,\r\n id,\r\n dateFormat,\r\n prop,\r\n keyName,\r\n dataType,\r\n customValue\r\n })\r\n sqlConditions.push(sqlCondition)\r\n }\r\n // globalCondition=false时,如果全局过滤里面已经配置了该组件的信息,则不用再传globalCondition=false的组件信息\r\n for (let j = sqlConditions.length - 1; j >= 0; j--) {\r\n const item = sqlConditions[j]\r\n if (!item.globalCondition) {\r\n const cond = getConditions(sqlConditions).find(v => v.alias === item.alias && v.globalCondition)\r\n if (cond) {\r\n sqlConditions.splice(j, 1)\r\n }\r\n }\r\n }\r\n return sqlConditions\r\n}\r\n\r\nexport const handleVariableList = (variableList: { [key: string]: any }[], renderUsedComponents: { [key:string]: any }[]) => {\r\n const handleVarList = []\r\n if (variableList?.length) {\r\n for (const item of variableList) {\r\n if (item.variableName) {\r\n const variableItem: any = {\r\n variateName: item.variableName,\r\n globalCondition: false,\r\n valueType: item.variableType,\r\n alias: item.keyName || ''\r\n }\r\n setFieldValue({\r\n sqlCondition: variableItem,\r\n renderUsedComponents,\r\n id: item.id,\r\n dateFormat: item.format,\r\n prop: item.dateTypeValue,\r\n keyName: item.keyName,\r\n dataType: item.dataType,\r\n customValue: item.variableValue,\r\n operateType: item.operateType,\r\n operateMode: item.operateMode,\r\n operateValue: item.operateValue\r\n })\r\n if (item.format) {\r\n // 日期格式化\r\n variableItem.dateFormat = item.format\r\n }\r\n if (item.label) {\r\n variableItem.label = item.label\r\n }\r\n handleVarList.push(variableItem)\r\n }\r\n }\r\n }\r\n return handleVarList\r\n}\r\n\r\nfunction getConditionItem (control: { [key:string]:any }) {\r\n const {\r\n id,\r\n keyName,\r\n conditionLabel,\r\n conditionKey,\r\n conditionValueType,\r\n prop,\r\n rule = 'NONE',\r\n notGlobal = false,\r\n indexCode,\r\n indexCodeNum,\r\n typeGuid,\r\n dataType = 'component'\r\n } = control\r\n let alias = keyName || id\r\n if (alias && prop) {\r\n alias += `-${prop}`\r\n }\r\n return {\r\n rule,\r\n label: conditionLabel,\r\n fieldName: conditionKey,\r\n fieldValue: '', // 在关联控件中取\r\n valueType: conditionValueType,\r\n alias,\r\n globalCondition: !notGlobal,\r\n indexCode,\r\n indexCodeNum,\r\n typeGuid,\r\n dataType\r\n }\r\n}\r\n\r\nconst excludeAttr = [\r\n 'keyValue',\r\n 'conditionKey',\r\n 'conditionLabel',\r\n 'conditionName',\r\n 'conditionValueType',\r\n 'customValue',\r\n 'id',\r\n 'keyName'\r\n]\r\nfunction handleControlList (controlList: { [key: string]: any }[], renderUsedComponents: { [key: string]: any }[]) {\r\n if (controlList?.length) {\r\n for (const control of controlList) {\r\n if (control?.conditions) {\r\n handleControlList(control.conditions, renderUsedComponents)\r\n } else {\r\n const {\r\n id,\r\n keyName,\r\n prop,\r\n format: dateFormat,\r\n dataType = 'component',\r\n customValue\r\n } = control\r\n let alias = keyName || id\r\n if (alias && prop) {\r\n alias += `-${prop}`\r\n }\r\n const sqlCondition: { [key: string]: any } = getConditionItem(control)\r\n setFieldValue({\r\n sqlCondition,\r\n renderUsedComponents,\r\n id,\r\n dateFormat,\r\n prop,\r\n keyName,\r\n dataType,\r\n customValue\r\n })\r\n for (const key in sqlCondition) {\r\n control[key] = sqlCondition[key]\r\n }\r\n for (const attr of excludeAttr) {\r\n delete control[attr]\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction setFieldValue (data: any) {\r\n const {\r\n sqlCondition,\r\n renderUsedComponents,\r\n id,\r\n dateFormat,\r\n prop,\r\n keyName,\r\n dataType,\r\n customValue,\r\n operateValue,\r\n operateMode,\r\n operateType\r\n } = data\r\n const component: any = unref(renderUsedComponents).find((v: { [key: string]: any }) => v.id === id)\r\n // 获取组件属性\r\n const { value, format = 'YYYY-MM-DD', operate, type = '', useCurrentTime } = component || {}\r\n const customFormat = dateFormat || format\r\n if (lowerCaseIncludes(type, 'date')) {\r\n let dateValue\r\n if (useCurrentTime) {\r\n dateValue = dayjs()\r\n } else {\r\n dateValue = dayjs(value)\r\n }\r\n if (operate && value) {\r\n const { mode, type: opType, value: opValue } = operate\r\n if (opValue) {\r\n switch (opType) {\r\n case 'add':\r\n dateValue = dateValue.add(opValue, mode)\r\n break\r\n case 'minus':\r\n dateValue = dateValue.subtract(opValue, mode)\r\n break\r\n }\r\n }\r\n }\r\n if (operateValue && operateMode && operateType) {\r\n switch (operateType) {\r\n case 'add':\r\n dateValue = dateValue.add(operateValue, operateMode)\r\n break\r\n case 'minus':\r\n dateValue = dateValue.subtract(operateValue, operateMode)\r\n break\r\n }\r\n }\r\n sqlCondition.fieldValue = dateValue?.format(customFormat) || ''\r\n sqlCondition.dateFormat = customFormat\r\n } else if (type === 'ecanRangePicker') {\r\n const { interval, intervalUnit, startTime, endTime } = component || {}\r\n let propValue = prop\r\n if (!prop) {\r\n const knList = keyName?.split('-')\r\n if (knList?.length) {\r\n propValue = knList[knList.length - 1]\r\n }\r\n }\r\n if (!propValue) {\r\n return\r\n }\r\n let _time = null\r\n if (useCurrentTime) {\r\n if (propValue === 'startTime') {\r\n _time = dayjs().subtract(interval, intervalUnit)\r\n } else if (propValue === 'endTime') {\r\n _time = dayjs()\r\n }\r\n }\r\n if (component[propValue]) {\r\n _time = dayjs(component[propValue])\r\n }\r\n if (operate) {\r\n const { type, value, mode } = operate\r\n switch (type) {\r\n case 'add':\r\n _time = _time ? _time.add(value, mode) : _time\r\n break\r\n case 'minus':\r\n _time = _time ? _time.subtract(value, mode) : _time\r\n }\r\n }\r\n if (operateValue && operateMode && operateType) {\r\n if (operateValue === 'rangeValue') {\r\n // 自定义偏移,目前只有范围差\r\n if (startTime && endTime) {\r\n const interval = dayjs(endTime).diff(dayjs(startTime), operateMode) + 1\r\n switch (operateType) {\r\n case 'add':\r\n _time = _time ? _time.add(interval, operateMode) : _time\r\n break\r\n case 'minus':\r\n _time = _time ? _time.subtract(interval, operateMode) : _time\r\n }\r\n }\r\n } else if (!isNaN(+operateValue)) {\r\n switch (operateType) {\r\n case 'add':\r\n _time = _time ? _time.add(operateValue, operateMode) : _time\r\n break\r\n case 'minus':\r\n _time = _time ? _time.subtract(operateValue, operateMode) : _time\r\n }\r\n }\r\n }\r\n if (_time) {\r\n sqlCondition.fieldValue = _time?.format(customFormat)\r\n }\r\n\r\n if (propValue === 'rangeValue') {\r\n // 全局变量的日期范围间隔值计算\r\n if (startTime && endTime) {\r\n const step: any = getFormatStep(customFormat)\r\n if (step) {\r\n sqlCondition.fieldValue = dayjs(endTime).diff(dayjs(startTime), step) + 1\r\n }\r\n }\r\n }\r\n sqlCondition.dateFormat = customFormat\r\n } else {\r\n const variables = value && (value).match(/\\{(.+?)\\}/g)\r\n if (variables?.length) {\r\n // 使用了表达式\r\n sqlCondition.fieldValue = ''\r\n } else {\r\n sqlCondition.fieldValue = value\r\n }\r\n }\r\n if (dataType === '') {\r\n sqlCondition.fieldValue = customValue || ''\r\n }\r\n}\r\n\r\nexport const getEventName = (type: string) => {\r\n let event = ''\r\n switch (type) {\r\n case 'ecanDatePicker':\r\n case 'ecanRangePicker':\r\n event = 'dateChange'\r\n break\r\n case 'ecanTimeDisplay':\r\n event = 'timeChange'\r\n break\r\n case 'ecanSelect':\r\n case 'ecanTreeSelect':\r\n event = 'selectChange'\r\n break\r\n case 'ecanTabs':\r\n event = 'tabChange'\r\n break\r\n case 'ecanInput':\r\n event = 'inputChange'\r\n break\r\n case 'ecanCheckbox':\r\n case 'ecanRadio':\r\n event = 'checkboxChange'\r\n break\r\n case 'ecanText':\r\n event = 'valueChange'\r\n break\r\n case 'ecanImage':\r\n event = 'click'\r\n break\r\n default:\r\n break\r\n }\r\n return event\r\n}\r\n\r\nfunction getComponent (data: any, componentList: any) {\r\n if (data.componentId) {\r\n return componentList.find((f: any) => f.id === data.componentId)\r\n } else {\r\n if (data.dataType === 'component') {\r\n if (data.fieldType === 'DATE') {\r\n const dateList = data.fieldValue?.split('-')\r\n if (dateList?.length) {\r\n return dateList[0]\r\n } else {\r\n return null\r\n }\r\n } else {\r\n return componentList.find((f: any) => f.keyName === data.fieldValue)\r\n }\r\n } else {\r\n return null\r\n }\r\n }\r\n}\r\n\r\nexport function getFormatStep (format: string) {\r\n const value = format.split('-')\r\n let formatStep = ''\r\n if (value?.length) {\r\n switch (value[value.length - 1]) {\r\n case 'YYYY':\r\n formatStep = 'year'\r\n break\r\n case 'MM':\r\n formatStep = 'month'\r\n break\r\n case 'DD':\r\n formatStep = 'day'\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return formatStep\r\n}\r\n// 格式化\r\nexport function handleFormat (row: any, item: any) {\r\n let value = row[item.label]\r\n if ((value || value === 0) && value !== '') {\r\n // 值不为空\r\n if (item.dataFormat && item.dataFormat.length !== 0) {\r\n // 保留两位小数需得提前执行\r\n if (item.dataFormat.includes('#.00')) {\r\n // 先执行保留小数\r\n if (typeof value !== 'number') {\r\n value = value.replace(/,/g, '')\r\n }\r\n // 排除输入为 字符类型 ,保留不转化\r\n if (Number(value) || Number(value) === 0) {\r\n const retentiondigit = item.retentiondigit ? item.retentiondigit - 0 : item.retentiondigit\r\n value = Number(value).toFixed(retentiondigit)\r\n }\r\n }\r\n if (item.dataFormat.includes('#,000')) {\r\n // 千分位处理部分\r\n const str = value.toString()\r\n if (!str.includes(',')) {\r\n value = formatQfw(str)\r\n }\r\n }\r\n }\r\n }\r\n return value\r\n}\r\n// 千分位转换\r\nexport function formatQfw (str: string) {\r\n let result = ''\r\n let str1 = ''\r\n let str2 = ''\r\n let value = ''\r\n if (str.indexOf('.') > -1) {\r\n str1 = str.split('.')[0] // 千分位处理部分\r\n str2 = str.split('.')[1] // 小数值\r\n } else {\r\n str1 = str\r\n }\r\n let index = 0\r\n let len = 0\r\n len = str1.length - 1\r\n while (len >= 0) {\r\n index % 3 === 0 && index !== 0\r\n ? str1[len] === '-'\r\n ? (result += str1[len])\r\n : (result += ',' + str1[len])\r\n : (result += str1[len])\r\n len--\r\n index++\r\n }\r\n result = result\r\n .split('')\r\n .reverse()\r\n .join('')\r\n if (str.indexOf('.') > -1) {\r\n value = result + '.' + str2\r\n } else {\r\n value = result\r\n }\r\n return value\r\n}\r\n// 根据指标获取其他参数-用于条件查询\r\nexport async function getIndicatorParams ({ graphicConfig, request, INDICATOR_URL = '', PAGE_ID, dataSourceId }) {\r\n try {\r\n const { leftAxisList = [], rightAxisList = [], queryColumnList = [], indicators = [] } = unref(graphicConfig)\r\n const otherList = [...leftAxisList, ...rightAxisList, ...queryColumnList, ...indicators]\r\n const idMap: any = {}\r\n for (const item of otherList) {\r\n const { indexCode = '', parentId = '' } = item\r\n if (parentId && !hasOwn(item, 'calcType') && !idMap[parentId]) {\r\n idMap[parentId] = indexCode\r\n }\r\n }\r\n if (Object.keys(idMap)?.length) {\r\n const promiseList = []\r\n for (const id in idMap) {\r\n promiseList.push(\r\n new Promise((resolve, reject) => {\r\n request\r\n .post(\r\n `${INDICATOR_URL}/diagram/hrpIndexWithComplex`,\r\n {\r\n pageId: PAGE_ID,\r\n indexGuid: id,\r\n indexCode: idMap[id],\r\n dataSourceId\r\n }\r\n )\r\n .then((res: any) => {\r\n const { success, data = [] } = res.data\r\n if (success && data?.dataViewColumns?.length) {\r\n resolve(data.dataViewColumns)\r\n } else {\r\n reject(data)\r\n }\r\n })\r\n .catch((e) => {\r\n reject(e)\r\n })\r\n })\r\n )\r\n }\r\n const res = await Promise.all(promiseList)\r\n const resultList = res.reduce((a: any, b: any) =>\r\n a.filter((c: any) => b.find((v: any) => v.typeGuid === c.typeGuid))\r\n )\r\n return resultList.filter((v: any) => v.typeGuid)\r\n }\r\n } catch (err) { }\r\n return ([])\r\n}\r\n/**\r\n * 图表的图例格式化\r\n * @param format 表达式\r\n * @param textData 传入参数\r\n * @returns 显示的图例文本\r\n */\r\nexport const getLegendFormat = (format: string = '', textData: any) => {\r\n const variables = format.match(/\\{(.+?)\\}/g)\r\n // 换行符个数\r\n const lineBreakCount = format.split('\\n')?.length - 1\r\n let lineBreakStr = ''\r\n if (lineBreakCount) {\r\n for (let i = 0; i < lineBreakCount; i++) {\r\n lineBreakStr += '\\n'\r\n }\r\n }\r\n let text = format\r\n if (variables?.length) {\r\n for (const item of variables) {\r\n const str = useVariablesInText(\r\n item,\r\n {\r\n textData\r\n },\r\n {\r\n useNewline: false,\r\n useSpace: false\r\n }\r\n )\r\n if (str) {\r\n text = text.replace(item, str)\r\n }\r\n }\r\n return `${lineBreakStr}{text|${text}}`\r\n } else {\r\n return format\r\n }\r\n}\r\nexport const mapScope = (scope: 'DIM' | 'IDX' | 'BUILT_IN_DIM') => {\r\n const map = {\r\n DIM: '维度',\r\n BUILT_IN_DIM: '维度',\r\n IDX: '指标',\r\n BUILT_IN_IDX: '指标',\r\n FIELD: '数据集'\r\n }\r\n return map[scope]\r\n}\r\nexport const mapDataSetScope = (scope: '0' | '1' | '2') => {\r\n const map = {\r\n 0: '文本',\r\n 1: '数值',\r\n 2: '日期'\r\n\r\n }\r\n return map[scope]\r\n}\r\n\r\nexport const getLoadType = (type: string) => {\r\n if (!type) {\r\n return ''\r\n }\r\n const list = type.split(',')\r\n const result = []\r\n for (const item of list) {\r\n if (item === '0') {\r\n result.push('手工录入')\r\n } else if (item === '1') {\r\n result.push('系统取数')\r\n } else if (item === '2') {\r\n result.push('运算加工')\r\n }\r\n }\r\n return result.join('、')\r\n}\r\n\r\nexport const getUseType = (type: string) => {\r\n if (!type) {\r\n return ''\r\n }\r\n const list = type.split(',')\r\n const result = []\r\n for (const item of list) {\r\n switch (item) {\r\n case '1':\r\n result.push('人力系统')\r\n break\r\n case '2':\r\n result.push('绩效系统')\r\n break\r\n case '3':\r\n result.push('预算系统')\r\n break\r\n case '4':\r\n result.push('财务系统')\r\n break\r\n case '5':\r\n result.push('成本系统')\r\n break\r\n case '6':\r\n result.push('物流系统')\r\n break\r\n case '7':\r\n result.push('固定资产系统')\r\n break\r\n case '8':\r\n result.push('OA办公系统')\r\n break\r\n case '9':\r\n result.push('电子档案系统')\r\n break\r\n case '10':\r\n result.push('个人收入系统')\r\n break\r\n case '11':\r\n result.push('奖金二次分配系统')\r\n break\r\n case '12':\r\n result.push('财务管理系统')\r\n break\r\n case '13':\r\n result.push('报销系统')\r\n break\r\n case '14':\r\n result.push('科研管理系统')\r\n break\r\n case '15':\r\n result.push('审计系统')\r\n break\r\n case '16':\r\n result.push('分组器系统')\r\n break\r\n case '17':\r\n result.push('消毒供应系统')\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n return result.join('、')\r\n}\r\n\r\nexport const getSourceType = (dataTo: string) => {\r\n if (dataTo === '0') {\r\n return '指标库'\r\n } else if (dataTo === '1') {\r\n return '视图'\r\n } else if (dataTo === '2') {\r\n return '数据集'\r\n } else {\r\n return '其他'\r\n }\r\n}\r\n","<template>\r\n <div class=\"columns\" :class=\"isSub ? 'sub-columns' : ''\" ref=\"columnRef\">\r\n <a-spin\r\n :spinning=\"searchLoading\"\r\n tip=\"数据源加载中...\"\r\n >\r\n <div class=\"no-data\" v-if=\"!sourceList?.length && !searchLoading\">暂无数据</div>\r\n <template v-else-if=\"hasChildren\">\r\n <div\r\n v-for=\"(source, index) in sourceList\"\r\n :key=\"source.indexTypeGuid || source.id\"\r\n >\r\n <div class=\"column-item\">\r\n <span\r\n style=\"cursor: pointer\"\r\n @click=\"onToggleGroup(index)\"\r\n >\r\n <loading-outlined v-if=\"source.loading\" />\r\n <caret-down-outlined v-else-if=\"source.show\" />\r\n <caret-right-outlined v-else />\r\n <span v-if=\"source.isLeaf\" class=\"item-name\">{{ source.indexTypeCode + '.' + source.indexTypeName }}</span>\r\n </span>\r\n </div>\r\n <div v-if=\"source.show\">\r\n <ind-source-list\r\n :data=\"source.children\"\r\n :isSub=\"true\"\r\n :hasChildren=\"source.isLeaf === '0'\"\r\n :graphicConfig=\"graphicConfig\"\r\n source=\"INDICATOR_LIB\"\r\n @onDragStart=\"onDragStart\"\r\n />\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <div\r\n v-for=\"dataSource in sourceList\"\r\n :key=\"dataSource.id\"\r\n :class=\"setItemDisabled(dataSource.dataViewColumns) ? 'column-disabled' : ''\"\r\n >\r\n <div class=\"column-item\">\r\n <a-tooltip>\r\n <template #title>\r\n <div>加载类型:{{ getLoadType(dataSource.loadType) }}</div>\r\n <div v-if=\"dataSource.useType\">数据使用系统:{{ getUseType(dataSource.useType) }}</div>\r\n <div v-if=\"dataSource.systemSource\">制度出处:{{ dataSource.systemSource }}</div>\r\n <div v-if=\"dataSource.dataTo\">数据来源:{{ getSourceType(dataSource.dataTo) }}</div>\r\n <div v-if=\"dataSource.meaning\">指标含义:{{ dataSource.meaning }}</div>\r\n </template>\r\n <span\r\n style=\"cursor: pointer\"\r\n @click=\"onToggleSource(dataSource)\"\r\n >\r\n <caret-down-outlined v-if=\"dataSource.show\" />\r\n <caret-right-outlined v-else />\r\n {{ (dataSource.indexCode ? dataSource.indexCode : '') + ' ' + dataSource.name }}\r\n </span>\r\n </a-tooltip>\r\n </div>\r\n <template v-if=\"dataSource.show\">\r\n <draggable\r\n v-model=\"dataSource.dataViewColumns\"\r\n :group=\"{\r\n name: 'cardItem',\r\n pull: 'clone',\r\n put: false\r\n }\"\r\n item-key=\"id\"\r\n :sort=\"false\"\r\n :disabled=\"setItemDisabled(dataSource.dataViewColumns)\"\r\n @start=\"onDragStart($event, dataSource)\"\r\n >\r\n <template #item=\"{ element: dataViewColumn }\">\r\n <div class=\"column-child-item\">\r\n <span class=\"field\">\r\n 【{{ dataViewColumn.scope === 'FIELD' ? mapDataSetScope(dataViewColumn.genericType) : mapScope(dataViewColumn.scope) }}】\r\n </span>\r\n <span class=\"column-child-item-name\">\r\n {{ dataViewColumn.label }}\r\n </span>\r\n </div>\r\n </template>\r\n </draggable>\r\n </template>\r\n </div>\r\n </template>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, PropType, ref, watch, inject, unref, onMounted, onUnmounted, reactive, nextTick } from 'vue'\r\nimport { CaretRightOutlined, CaretDownOutlined, LoadingOutlined } from '@ant-design/icons-vue'\r\nimport { REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\r\nimport Draggable from 'vuedraggable'\r\nimport { mapScope, mapDataSetScope, getLoadType, getUseType, getSourceType } from '@/utils/util'\r\nimport { Tooltip as ATooltip } from 'ant-design-vue'\r\nexport default defineComponent({\r\n name: 'IndSourceList',\r\n components: {\r\n CaretRightOutlined,\r\n CaretDownOutlined,\r\n LoadingOutlined,\r\n Draggable,\r\n ATooltip\r\n },\r\n props: {\r\n data: {\r\n type: Array as PropType<any[]>,\r\n default: () => []\r\n },\r\n source: {\r\n type: String,\r\n default: ''\r\n },\r\n isSub: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasChildren: {\r\n type: Boolean,\r\n default: false\r\n },\r\n total: {\r\n type: Number,\r\n default: 0\r\n },\r\n graphicConfig: {\r\n type: Object,\r\n default: () => ({})\r\n }\r\n },\r\n setup (props, { emit, expose }) {\r\n // @ts-ignore\r\n const PAGE_ID = window?.config?.pageId\r\n const request = inject(REQUEST) as any\r\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\r\n const setItemDisabled = inject('setItemDisabled', (_value: any) => false)\r\n const sourceList = ref<{ [key: string]: any }[]>([])\r\n const columnRef = ref()\r\n const pagination = reactive({\r\n pageSize: 20,\r\n currentPage: 1,\r\n totalResult: 0\r\n })\r\n const isLoading = ref(false)\r\n const indexName = ref('')\r\n const searchLoading = ref(false)\r\n\r\n watch(() => props.data, (data: { [key: string]: any }[]) => {\r\n if (props.isSub) {\r\n data?.forEach((row: { [key: string]: any }) => {\r\n if (!row?.isLeaf) {\r\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\r\n column.show = true\r\n // 编辑名字\r\n column.edit = false\r\n if (column.title) {\r\n column.label = column.title\r\n }\r\n })\r\n }\r\n })\r\n sourceList.value = data\r\n }\r\n }, {\r\n deep: true,\r\n immediate: true\r\n })\r\n\r\n const removeScroll = () => {\r\n if (!props.isSub) {\r\n unref(columnRef)?.removeEventListener('scroll', scrollRequest)\r\n }\r\n }\r\n\r\n const requestData = async (item?: { [key: string]: any }) => {\r\n if (unref(isLoading)) {\r\n return\r\n }\r\n const dataSourceId = props.graphicConfig ? props.graphicConfig.dataSourceId : ''\r\n isLoading.value = true\r\n const params: any = {\r\n source: props.source,\r\n pageId: PAGE_ID,\r\n dataSourceId,\r\n indexName: indexName.value\r\n }\r\n if (item) {\r\n item.loading = true\r\n params.indexTypeGuid = item.indexTypeGuid\r\n params.isLeaf = item.isLeaf\r\n } else if (pagination) {\r\n // item不存在的时候,是最外一层,需要滚动加载\r\n params.queryRequest = {\r\n pageSize: pagination.pageSize,\r\n pageNum: pagination.currentPage\r\n }\r\n }\r\n try {\r\n const res = await request.post(\r\n `${INDICATOR_URL}/diagram/sourceList`,\r\n params,\r\n {\r\n headers: {\r\n Authentication: indicatorToken,\r\n operateContext: 'ygt'\r\n }\r\n }\r\n )\r\n const { success, data = {} } = res.data\r\n if (success) {\r\n const { rows = [], total = 0 } = data\r\n rows?.forEach((row: { [key: string]: any }) => {\r\n if (item?.isLeaf === '1' || props.graphicConfig.dataSourceId) {\r\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\r\n column.show = true\r\n // 编辑名字\r\n column.edit = false\r\n if (column.title) {\r\n column.label = column.title\r\n }\r\n })\r\n } else {\r\n row.show = false\r\n }\r\n })\r\n if (item) {\r\n item.children = rows\r\n item.show = true\r\n if (!rows?.length) {\r\n item.noData = true\r\n }\r\n } else {\r\n sourceList.value = unref(sourceList).concat(rows)\r\n pagination.totalResult = +total\r\n if (unref(sourceList)?.length >= total) {\r\n removeScroll()\r\n }\r\n }\r\n }\r\n if (item) {\r\n item.loading = false\r\n }\r\n isLoading.value = false\r\n } catch (error) {\r\n if (item) {\r\n item.loading = false\r\n }\r\n isLoading.value = false\r\n }\r\n }\r\n\r\n const onToggleGroup = async (index: number) => {\r\n const item = sourceList.value[index]\r\n const { children = [] } = item\r\n if (children?.length) {\r\n // 已经展开过\r\n item.show = !item.show\r\n } else if (!item.noData && item.isLeaf) {\r\n // 没有展开过,需要懒加载\r\n requestData(item)\r\n } else if (item.noData) {\r\n item.show = !item.show\r\n }\r\n }\r\n\r\n const onDragStart = (\r\n event: any,\r\n dataSource: { [key: string]: any }\r\n ) => {\r\n emit('onDragStart', event, dataSource)\r\n }\r\n\r\n const onToggleSource = (dataSource: { [key: string]: any }) => {\r\n dataSource.show = !dataSource.show\r\n }\r\n\r\n const scrollRequest = (e: any) => {\r\n if (e.target.scrollTop + e.target.clientHeight + 20 >= e.target.scrollHeight) {\r\n pagination.currentPage++\r\n requestData()\r\n }\r\n }\r\n\r\n // 首次加载的时候,如果滚动条没出现,循环请求至滚动条出现\r\n const loopRequest = async () => {\r\n await requestData()\r\n nextTick(async () => {\r\n if (unref(columnRef).scrollHeight === unref(columnRef).clientHeight) {\r\n // 滚动条未出现\r\n if (pagination.totalResult > unref(sourceList).length) {\r\n pagination.currentPage++\r\n loopRequest()\r\n }\r\n }\r\n })\r\n }\r\n\r\n const handleSearch = async (name: string) => {\r\n removeScroll()\r\n searchLoading.value = true\r\n pagination.currentPage = 1\r\n pagination.totalResult = 0\r\n sourceList.value = []\r\n indexName.value = name\r\n await loopRequest()\r\n searchLoading.value = false\r\n unref(columnRef)?.addEventListener('scroll', scrollRequest)\r\n }\r\n\r\n onMounted(async () => {\r\n if (!props.isSub) {\r\n loopRequest()\r\n unref(columnRef)?.addEventListener('scroll', scrollRequest)\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n removeScroll()\r\n })\r\n\r\n expose({\r\n handleSearch\r\n })\r\n\r\n return {\r\n columnRef,\r\n sourceList,\r\n searchLoading,\r\n onToggleGroup,\r\n onToggleSource,\r\n setItemDisabled,\r\n onDragStart,\r\n mapDataSetScope,\r\n mapScope,\r\n getLoadType,\r\n getUseType,\r\n getSourceType\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.columns {\r\n height: 100%;\r\n overflow: auto;\r\n flex: 1;\r\n padding-top: 10px;\r\n &.sub-columns {\r\n padding-top: 0;\r\n margin-left: 15px;\r\n }\r\n .no-data {\r\n color: #b1b1b1;\r\n font-size: 12px;\r\n margin-left: 10px;\r\n }\r\n}\r\n\r\n.column-item {\r\n display: flow-root;\r\n margin: 3px 0;\r\n padding: 2px 0;\r\n .item-name {\r\n margin-left: 5px;\r\n }\r\n}\r\n\r\n.column-child-item {\r\n display: flex;\r\n padding: 3px 10px;\r\n cursor: pointer;\r\n word-break: break-all;\r\n .field {\r\n white-space: nowrap;\r\n }\r\n}\r\n\r\n.column-disabled {\r\n .column-item {\r\n color: #b3b3b3;\r\n :deep(.anticon) {\r\n color: #b3b3b3;\r\n }\r\n }\r\n .column-child-item {\r\n color: #b3b3b3;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"columns\" :class=\"isSub ? 'sub-columns' : ''\" ref=\"columnRef\">\r\n <a-spin\r\n :spinning=\"searchLoading\"\r\n tip=\"数据源加载中...\"\r\n >\r\n <div class=\"no-data\" v-if=\"!sourceList?.length && !searchLoading\">暂无数据</div>\r\n <template v-else-if=\"hasChildren\">\r\n <div\r\n v-for=\"(source, index) in sourceList\"\r\n :key=\"source.indexTypeGuid || source.id\"\r\n >\r\n <div class=\"column-item\">\r\n <span\r\n style=\"cursor: pointer\"\r\n @click=\"onToggleGroup(index)\"\r\n >\r\n <loading-outlined v-if=\"source.loading\" />\r\n <caret-down-outlined v-else-if=\"source.show\" />\r\n <caret-right-outlined v-else />\r\n <span v-if=\"source.isLeaf\" class=\"item-name\">{{ source.indexTypeCode + '.' + source.indexTypeName }}</span>\r\n </span>\r\n </div>\r\n <div v-if=\"source.show\">\r\n <ind-source-list\r\n :data=\"source.children\"\r\n :isSub=\"true\"\r\n :hasChildren=\"source.isLeaf === '0'\"\r\n :graphicConfig=\"graphicConfig\"\r\n source=\"INDICATOR_LIB\"\r\n @onDragStart=\"onDragStart\"\r\n />\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <div\r\n v-for=\"dataSource in sourceList\"\r\n :key=\"dataSource.id\"\r\n :class=\"setItemDisabled(dataSource.dataViewColumns) ? 'column-disabled' : ''\"\r\n >\r\n <div class=\"column-item\">\r\n <a-tooltip>\r\n <template #title>\r\n <div>加载类型:{{ getLoadType(dataSource.loadType) }}</div>\r\n <div v-if=\"dataSource.useType\">数据使用系统:{{ getUseType(dataSource.useType) }}</div>\r\n <div v-if=\"dataSource.systemSource\">制度出处:{{ dataSource.systemSource }}</div>\r\n <div v-if=\"dataSource.dataTo\">数据来源:{{ getSourceType(dataSource.dataTo) }}</div>\r\n <div v-if=\"dataSource.meaning\">指标含义:{{ dataSource.meaning }}</div>\r\n </template>\r\n <span\r\n style=\"cursor: pointer\"\r\n @click=\"onToggleSource(dataSource)\"\r\n >\r\n <caret-down-outlined v-if=\"dataSource.show\" />\r\n <caret-right-outlined v-else />\r\n {{ (dataSource.indexCode ? dataSource.indexCode : '') + ' ' + dataSource.name }}\r\n </span>\r\n </a-tooltip>\r\n </div>\r\n <template v-if=\"dataSource.show\">\r\n <draggable\r\n v-model=\"dataSource.dataViewColumns\"\r\n :group=\"{\r\n name: 'cardItem',\r\n pull: 'clone',\r\n put: false\r\n }\"\r\n item-key=\"id\"\r\n :sort=\"false\"\r\n :disabled=\"setItemDisabled(dataSource.dataViewColumns)\"\r\n @start=\"onDragStart($event, dataSource)\"\r\n >\r\n <template #item=\"{ element: dataViewColumn }\">\r\n <div class=\"column-child-item\">\r\n <span class=\"field\">\r\n 【{{ dataViewColumn.scope === 'FIELD' ? mapDataSetScope(dataViewColumn.genericType) : mapScope(dataViewColumn.scope) }}】\r\n </span>\r\n <span class=\"column-child-item-name\">\r\n {{ dataViewColumn.label }}\r\n </span>\r\n </div>\r\n </template>\r\n </draggable>\r\n </template>\r\n </div>\r\n </template>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, PropType, ref, watch, inject, unref, onMounted, onUnmounted, reactive, nextTick } from 'vue'\r\nimport { CaretRightOutlined, CaretDownOutlined, LoadingOutlined } from '@ant-design/icons-vue'\r\nimport { REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\r\nimport Draggable from 'vuedraggable'\r\nimport { mapScope, mapDataSetScope, getLoadType, getUseType, getSourceType } from '@/utils/util'\r\nimport { Tooltip as ATooltip } from 'ant-design-vue'\r\nexport default defineComponent({\r\n name: 'IndSourceList',\r\n components: {\r\n CaretRightOutlined,\r\n CaretDownOutlined,\r\n LoadingOutlined,\r\n Draggable,\r\n ATooltip\r\n },\r\n props: {\r\n data: {\r\n type: Array as PropType<any[]>,\r\n default: () => []\r\n },\r\n source: {\r\n type: String,\r\n default: ''\r\n },\r\n isSub: {\r\n type: Boolean,\r\n default: false\r\n },\r\n hasChildren: {\r\n type: Boolean,\r\n default: false\r\n },\r\n total: {\r\n type: Number,\r\n default: 0\r\n },\r\n graphicConfig: {\r\n type: Object,\r\n default: () => ({})\r\n }\r\n },\r\n setup (props, { emit, expose }) {\r\n // @ts-ignore\r\n const PAGE_ID = window?.config?.pageId\r\n const request = inject(REQUEST) as any\r\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\r\n const setItemDisabled = inject('setItemDisabled', (_value: any) => false)\r\n const sourceList = ref<{ [key: string]: any }[]>([])\r\n const columnRef = ref()\r\n const pagination = reactive({\r\n pageSize: 20,\r\n currentPage: 1,\r\n totalResult: 0\r\n })\r\n const isLoading = ref(false)\r\n const indexName = ref('')\r\n const searchLoading = ref(false)\r\n\r\n watch(() => props.data, (data: { [key: string]: any }[]) => {\r\n if (props.isSub) {\r\n data?.forEach((row: { [key: string]: any }) => {\r\n if (!row?.isLeaf) {\r\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\r\n column.show = true\r\n // 编辑名字\r\n column.edit = false\r\n if (column.title) {\r\n column.label = column.title\r\n }\r\n })\r\n }\r\n })\r\n sourceList.value = data\r\n }\r\n }, {\r\n deep: true,\r\n immediate: true\r\n })\r\n\r\n const removeScroll = () => {\r\n if (!props.isSub) {\r\n unref(columnRef)?.removeEventListener('scroll', scrollRequest)\r\n }\r\n }\r\n\r\n const requestData = async (item?: { [key: string]: any }) => {\r\n if (unref(isLoading)) {\r\n return\r\n }\r\n const dataSourceId = props.graphicConfig ? props.graphicConfig.dataSourceId : ''\r\n isLoading.value = true\r\n const params: any = {\r\n source: props.source,\r\n pageId: PAGE_ID,\r\n dataSourceId,\r\n indexName: indexName.value\r\n }\r\n if (item) {\r\n item.loading = true\r\n params.indexTypeGuid = item.indexTypeGuid\r\n params.isLeaf = item.isLeaf\r\n } else if (pagination) {\r\n // item不存在的时候,是最外一层,需要滚动加载\r\n params.queryRequest = {\r\n pageSize: pagination.pageSize,\r\n pageNum: pagination.currentPage\r\n }\r\n }\r\n try {\r\n const res = await request.post(\r\n `${INDICATOR_URL}/diagram/sourceList`,\r\n params,\r\n {\r\n headers: {\r\n Authentication: indicatorToken,\r\n operateContext: 'ygt'\r\n }\r\n }\r\n )\r\n const { success, data = {} } = res.data\r\n if (success) {\r\n const { rows = [], total = 0 } = data\r\n rows?.forEach((row: { [key: string]: any }) => {\r\n if (item?.isLeaf === '1' || props.graphicConfig.dataSourceId) {\r\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\r\n column.show = true\r\n // 编辑名字\r\n column.edit = false\r\n if (column.title) {\r\n column.label = column.title\r\n }\r\n })\r\n } else {\r\n row.show = false\r\n }\r\n })\r\n if (item) {\r\n item.children = rows\r\n item.show = true\r\n if (!rows?.length) {\r\n item.noData = true\r\n }\r\n } else {\r\n sourceList.value = unref(sourceList).concat(rows)\r\n pagination.totalResult = +total\r\n if (unref(sourceList)?.length >= total) {\r\n removeScroll()\r\n }\r\n }\r\n }\r\n if (item) {\r\n item.loading = false\r\n }\r\n isLoading.value = false\r\n } catch (error) {\r\n if (item) {\r\n item.loading = false\r\n }\r\n isLoading.value = false\r\n }\r\n }\r\n\r\n const onToggleGroup = async (index: number) => {\r\n const item = sourceList.value[index]\r\n const { children = [] } = item\r\n if (children?.length) {\r\n // 已经展开过\r\n item.show = !item.show\r\n } else if (!item.noData && item.isLeaf) {\r\n // 没有展开过,需要懒加载\r\n requestData(item)\r\n } else if (item.noData) {\r\n item.show = !item.show\r\n }\r\n }\r\n\r\n const onDragStart = (\r\n event: any,\r\n dataSource: { [key: string]: any }\r\n ) => {\r\n emit('onDragStart', event, dataSource)\r\n }\r\n\r\n const onToggleSource = (dataSource: { [key: string]: any }) => {\r\n dataSource.show = !dataSource.show\r\n }\r\n\r\n const scrollRequest = (e: any) => {\r\n if (e.target.scrollTop + e.target.clientHeight + 20 >= e.target.scrollHeight) {\r\n pagination.currentPage++\r\n requestData()\r\n }\r\n }\r\n\r\n // 首次加载的时候,如果滚动条没出现,循环请求至滚动条出现\r\n const loopRequest = async () => {\r\n await requestData()\r\n nextTick(async () => {\r\n if (unref(columnRef).scrollHeight === unref(columnRef).clientHeight) {\r\n // 滚动条未出现\r\n if (pagination.totalResult > unref(sourceList).length) {\r\n pagination.currentPage++\r\n loopRequest()\r\n }\r\n }\r\n })\r\n }\r\n\r\n const handleSearch = async (name: string) => {\r\n removeScroll()\r\n searchLoading.value = true\r\n pagination.currentPage = 1\r\n pagination.totalResult = 0\r\n sourceList.value = []\r\n indexName.value = name\r\n await loopRequest()\r\n searchLoading.value = false\r\n unref(columnRef)?.addEventListener('scroll', scrollRequest)\r\n }\r\n\r\n onMounted(async () => {\r\n if (!props.isSub) {\r\n loopRequest()\r\n unref(columnRef)?.addEventListener('scroll', scrollRequest)\r\n }\r\n })\r\n\r\n onUnmounted(() => {\r\n removeScroll()\r\n })\r\n\r\n expose({\r\n handleSearch\r\n })\r\n\r\n return {\r\n columnRef,\r\n sourceList,\r\n searchLoading,\r\n onToggleGroup,\r\n onToggleSource,\r\n setItemDisabled,\r\n onDragStart,\r\n mapDataSetScope,\r\n mapScope,\r\n getLoadType,\r\n getUseType,\r\n getSourceType\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.columns {\r\n height: 100%;\r\n overflow: auto;\r\n flex: 1;\r\n padding-top: 10px;\r\n &.sub-columns {\r\n padding-top: 0;\r\n margin-left: 15px;\r\n }\r\n .no-data {\r\n color: #b1b1b1;\r\n font-size: 12px;\r\n margin-left: 10px;\r\n }\r\n}\r\n\r\n.column-item {\r\n display: flow-root;\r\n margin: 3px 0;\r\n padding: 2px 0;\r\n .item-name {\r\n margin-left: 5px;\r\n }\r\n}\r\n\r\n.column-child-item {\r\n display: flex;\r\n padding: 3px 10px;\r\n cursor: pointer;\r\n word-break: break-all;\r\n .field {\r\n white-space: nowrap;\r\n }\r\n}\r\n\r\n.column-disabled {\r\n .column-item {\r\n color: #b3b3b3;\r\n :deep(.anticon) {\r\n color: #b3b3b3;\r\n }\r\n }\r\n .column-child-item {\r\n color: #b3b3b3;\r\n }\r\n}\r\n</style>\r\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 <template v-if=\"graphicConfig.source === 'INDICATOR_LIB'\">\n <ind-source-list\n ref=\"indSourceRef\"\n :data=\"dataSourceList\"\n :hasChildren=\"true\"\n :isSub=\"false\"\n :graphicConfig=\"graphicConfig\"\n source=\"INDICATOR_LIB\"\n @setItemDisabled=\"setItemDisabled\"\n @onDragStart=\"onDragStart\"\n />\n </template>\n <template v-else>\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 <a-tooltip>\n <template #title>\n <div>加载类型:{{ getLoadType(dataSource.loadType) }}</div>\n <div v-if=\"dataSource.useType\">数据使用系统:{{ getUseType(dataSource.useType) }}</div>\n <div v-if=\"dataSource.systemSource\">制度出处:{{ dataSource.systemSource }}</div>\n <div v-if=\"dataSource.meaning\">指标含义:{{ dataSource.meaning }}</div>\n </template>\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.indexCode:'') + ' ' + dataSource.name }}【{{ getSourceType(dataSource.dataTo) }}】\n </span>\n </a-tooltip>\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)\"\n >\n <template #item=\"{ element: dataViewColumn }\">\n <div class=\"column-child-item\">\n 【{{ dataViewColumn.scope==='FIELD'? mapDataSetScope(dataViewColumn.genericType) : 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 </template>\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 provide\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 Tooltip as ATooltip\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 SOURCE_TYPE\n // UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { mapScope, mapDataSetScope, getLoadType, getUseType, getSourceType } from '@/utils/util'\nimport Draggable from 'vuedraggable'\nimport IndSourceList from './IndSourceList.vue'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n IndSourceList,\n AInputSearch,\n ASpin,\n APagination,\n Draggable,\n ATooltip\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 updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) 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 const indSourceRef = ref()\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const source = inject(SOURCE_TYPE)\n const searchText = ref('')\n const handleDataSourceList = async () => {\n if (unref(graphicConfig).source === 'INDICATOR_LIB') {\n return\n }\n dataSourceLoading.value = true\n const params: any = {\n source: unref(source),\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n }\n }\n if (params.source === 'EDV_DATA_SET') {\n params.edvDataSetName = params.indexName\n delete params.indexName\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 // if (params.source === 'EDV_DATA_SET') {\n // // 过滤列表使用\n // updateGraphicConfig({\n // dataSourceList: rows\n // })\n // }\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\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 if (unref(graphicConfig).source === 'INDICATOR_LIB') {\n unref(indSourceRef)?.handleSearch(unref(searchText))\n }\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', 'dimensionList', 'queryColumnList']\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\n if (unref(source) === 'EDV_DATA_SET') {\n for (const item of unref(dimensions)) {\n const target = dataViewColumns.find(v => v.parentId === item.parentId)\n if (!target) {\n lostDim = true\n break\n }\n }\n } else {\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 }\n\n return lostDim\n }\n\n provide('setItemDisabled', setItemDisabled)\n\n const onDragStart = (\n event: any,\n dataSource: { [key: string]: any }\n ) => {\n const dataView = dataSource.dataViewColumns[event.oldIndex]\n let dataSetParams = {}\n if (dataSource.dataSetParams) {\n dataSetParams = dataSource.dataSetParams\n }\n if (dataView) {\n sessionStorage.setItem('indicator-list-item', JSON.stringify({\n ...dataView,\n dataTo: dataSource.dataTo,\n dataSetParams: dataSetParams,\n meaning: dataSource.meaning,\n theFormula: dataSource.theFormula,\n theUnit: dataSource.theUnit\n }))\n if (dataSource.dataTo === '1' && dataSource?.hrpIndexVariates) {\n sessionStorage.setItem('indicator-variates', JSON.stringify(dataSource.hrpIndexVariates))\n }\n if (dataSource.dataTo === '2' && dataSource?.dataSetParams) {\n // sessionStorage.setItem('dataSource-list', JSON.stringify(dataSource))\n sessionStorage.setItem('indicator-variates', JSON.stringify(dataSource.dataSetParams))\n }\n }\n }\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onToggleGroup,\n mapScope,\n mapDataSetScope,\n onSearch,\n onChange,\n source,\n onPaginationChange,\n searchText,\n setItemDisabled,\n onDragStart,\n getSourceType,\n getLoadType,\n getUseType,\n graphicConfig,\n indSourceRef\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 <template v-if=\"graphicConfig.source === 'INDICATOR_LIB'\">\n <ind-source-list\n ref=\"indSourceRef\"\n :data=\"dataSourceList\"\n :hasChildren=\"true\"\n :isSub=\"false\"\n :graphicConfig=\"graphicConfig\"\n source=\"INDICATOR_LIB\"\n @setItemDisabled=\"setItemDisabled\"\n @onDragStart=\"onDragStart\"\n />\n </template>\n <template v-else>\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 <a-tooltip>\n <template #title>\n <div>加载类型:{{ getLoadType(dataSource.loadType) }}</div>\n <div v-if=\"dataSource.useType\">数据使用系统:{{ getUseType(dataSource.useType) }}</div>\n <div v-if=\"dataSource.systemSource\">制度出处:{{ dataSource.systemSource }}</div>\n <div v-if=\"dataSource.meaning\">指标含义:{{ dataSource.meaning }}</div>\n </template>\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.indexCode:'') + ' ' + dataSource.name }}【{{ getSourceType(dataSource.dataTo) }}】\n </span>\n </a-tooltip>\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)\"\n >\n <template #item=\"{ element: dataViewColumn }\">\n <div class=\"column-child-item\">\n 【{{ dataViewColumn.scope==='FIELD'? mapDataSetScope(dataViewColumn.genericType) : 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 </template>\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 provide\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 Tooltip as ATooltip\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 SOURCE_TYPE\n // UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { mapScope, mapDataSetScope, getLoadType, getUseType, getSourceType } from '@/utils/util'\nimport Draggable from 'vuedraggable'\nimport IndSourceList from './IndSourceList.vue'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n IndSourceList,\n AInputSearch,\n ASpin,\n APagination,\n Draggable,\n ATooltip\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 updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) 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 const indSourceRef = ref()\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const source = inject(SOURCE_TYPE)\n const searchText = ref('')\n const handleDataSourceList = async () => {\n if (unref(graphicConfig).source === 'INDICATOR_LIB') {\n return\n }\n dataSourceLoading.value = true\n const params: any = {\n source: unref(source),\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n }\n }\n if (params.source === 'EDV_DATA_SET') {\n params.edvDataSetName = params.indexName\n delete params.indexName\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 // if (params.source === 'EDV_DATA_SET') {\n // // 过滤列表使用\n // updateGraphicConfig({\n // dataSourceList: rows\n // })\n // }\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\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 if (unref(graphicConfig).source === 'INDICATOR_LIB') {\n unref(indSourceRef)?.handleSearch(unref(searchText))\n }\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', 'dimensionList', 'queryColumnList']\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\n if (unref(source) === 'EDV_DATA_SET') {\n for (const item of unref(dimensions)) {\n const target = dataViewColumns.find(v => v.parentId === item.parentId)\n if (!target) {\n lostDim = true\n break\n }\n }\n } else {\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 }\n\n return lostDim\n }\n\n provide('setItemDisabled', setItemDisabled)\n\n const onDragStart = (\n event: any,\n dataSource: { [key: string]: any }\n ) => {\n const dataView = dataSource.dataViewColumns[event.oldIndex]\n let dataSetParams = {}\n if (dataSource.dataSetParams) {\n dataSetParams = dataSource.dataSetParams\n }\n if (dataView) {\n sessionStorage.setItem('indicator-list-item', JSON.stringify({\n ...dataView,\n dataTo: dataSource.dataTo,\n dataSetParams: dataSetParams,\n meaning: dataSource.meaning,\n theFormula: dataSource.theFormula,\n theUnit: dataSource.theUnit\n }))\n if (dataSource.dataTo === '1' && dataSource?.hrpIndexVariates) {\n sessionStorage.setItem('indicator-variates', JSON.stringify(dataSource.hrpIndexVariates))\n }\n if (dataSource.dataTo === '2' && dataSource?.dataSetParams) {\n // sessionStorage.setItem('dataSource-list', JSON.stringify(dataSource))\n sessionStorage.setItem('indicator-variates', JSON.stringify(dataSource.dataSetParams))\n }\n }\n }\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onToggleGroup,\n mapScope,\n mapDataSetScope,\n onSearch,\n onChange,\n source,\n onPaginationChange,\n searchText,\n setItemDisabled,\n onDragStart,\n getSourceType,\n getLoadType,\n getUseType,\n graphicConfig,\n indSourceRef\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' || source === 'EDV_DATA_SET' \" />\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' || source === 'EDV_DATA_SET' \" />\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 <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane key=\"1\" tab=\"组合排序\">\n <div class=\"button-wrapper\">\n <a-button primary @click=\"onAddSort\">\n 新增\n </a-button>\n </div>\n <div class=\"list-wrapper\">\n <div\n class=\"sort-row\"\n v-for=\"(item, index) in combSortList\"\n :key=\"index\"\n >\n <a-select\n v-model:value=\"item.columnName\"\n style=\"width: 200px;\"\n placeholder=\"维度/指标\"\n :options=\"getSortOptions(item)\"\n :fieldNames=\"{\n label: 'label',\n value: 'name'\n }\"\n @change=\"onColumnChange\"\n >\n </a-select>\n <a-select\n v-model:value=\"item.order\"\n style=\"margin-left: 10px;width: 100px;\"\n placeholder=\"升/降序\"\n >\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </a-select>\n <delete-outlined style=\"color: red;margin-left: 10px;\" @click=\"handleDeleteSort(index)\" />\n </div>\n </div>\n </a-tab-pane>\n <a-tab-pane key=\"2\" tab=\"自定义排序\" force-render>\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-tab-pane>\n </a-tabs>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject, PropType } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton,\n Select as ASelect,\n SelectOption as ASelectOption\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport { DeleteOutlined } from '@ant-design/icons-vue'\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 sortList: {\n type: Array as PropType<{ [key: string]: any }[]>,\n default: () => ([])\n }\n },\n components: {\n Draggable,\n AModal,\n AButton,\n ASelect,\n ASelectOption,\n DeleteOutlined\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 activeKey = ref('1')\n const combSortList = ref([])\n\n const getSortOptions = (item: { [key: string]: any }) => {\n const list = props.sortList.filter(v => !unref(combSortList).find(c => c.columnName === v.name) || item.columnName === v.name)\n const names = []\n list.forEach((item, index) => {\n if (names.includes(item.name)) {\n // 处理多个一样的指标或维度\n item.name = `${item.name}_ecanrepeat_${index}`\n } else {\n names.push(item.name)\n }\n })\n return list\n }\n\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 edvDataSetId: unref(graphicConfig).edvDataSetId || ''\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 if (unref(activeKey) === '2') {\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n } else if (unref(activeKey) === '1') {\n // 组合排序\n if (unref(combSortList)?.length) {\n item.sort = cloneDeep(unref(combSortList))\n } else {\n delete item.sort\n }\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 = (data: { [key: string]: any }) => {\n const { sort } = data\n // 设置排序列表\n if (sort) {\n if (Array.isArray(sort)) {\n // 设置tab\n activeKey.value = sort[0]?.type === 'CUSTOM' ? '2' : '1'\n if (unref(activeKey) === '1') {\n combSortList.value = cloneDeep(sort)\n } else {\n combSortList.value = []\n }\n } else {\n // 设置tab\n activeKey.value = sort?.type === 'CUSTOM' ? '2' : '1'\n if (unref(activeKey) === '1') {\n combSortList.value = [cloneDeep(sort)]\n } else {\n combSortList.value = []\n }\n }\n } else {\n combSortList.value = []\n }\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n if (unref(activeKey) === '2') {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n } else {\n updateCustomSortList()\n }\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 if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!visible)\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 delete item.sort\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n const onAddSort = () => {\n unref(combSortList).push({\n label: '',\n columnName: null,\n type: 'COMBINATION',\n order: null\n })\n }\n\n const handleDeleteSort = (index: number) => {\n combSortList.value.splice(index, 1)\n }\n\n const onColumnChange = (columnName: string) => {\n const target = unref(combSortList).find(v => v.columnName === columnName)\n if (target) {\n const option = props.sortList.find(v => v.name === columnName)\n if (option) {\n target.label = option.label\n if (option.defaultCode) {\n target.defaultCode = option.defaultCode\n } else {\n delete target.defaultCode\n }\n }\n }\n }\n\n return {\n visible,\n customSortList,\n activeKey,\n combSortList,\n getSortOptions,\n onChange,\n onDeleteConfig,\n onCancel,\n onAddSort,\n handleDeleteSort,\n onColumnChange\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-start;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: calc(70vh - 124px);\n list-style: none;\n padding-bottom: 60px;\n padding-right: 10px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n\n.sort-row {\n margin-bottom: 10px;\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 <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane key=\"1\" tab=\"组合排序\">\n <div class=\"button-wrapper\">\n <a-button primary @click=\"onAddSort\">\n 新增\n </a-button>\n </div>\n <div class=\"list-wrapper\">\n <div\n class=\"sort-row\"\n v-for=\"(item, index) in combSortList\"\n :key=\"index\"\n >\n <a-select\n v-model:value=\"item.columnName\"\n style=\"width: 200px;\"\n placeholder=\"维度/指标\"\n :options=\"getSortOptions(item)\"\n :fieldNames=\"{\n label: 'label',\n value: 'name'\n }\"\n @change=\"onColumnChange\"\n >\n </a-select>\n <a-select\n v-model:value=\"item.order\"\n style=\"margin-left: 10px;width: 100px;\"\n placeholder=\"升/降序\"\n >\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </a-select>\n <delete-outlined style=\"color: red;margin-left: 10px;\" @click=\"handleDeleteSort(index)\" />\n </div>\n </div>\n </a-tab-pane>\n <a-tab-pane key=\"2\" tab=\"自定义排序\" force-render>\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-tab-pane>\n </a-tabs>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject, PropType } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton,\n Select as ASelect,\n SelectOption as ASelectOption\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport { DeleteOutlined } from '@ant-design/icons-vue'\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 sortList: {\n type: Array as PropType<{ [key: string]: any }[]>,\n default: () => ([])\n }\n },\n components: {\n Draggable,\n AModal,\n AButton,\n ASelect,\n ASelectOption,\n DeleteOutlined\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 activeKey = ref('1')\n const combSortList = ref([])\n\n const getSortOptions = (item: { [key: string]: any }) => {\n const list = props.sortList.filter(v => !unref(combSortList).find(c => c.columnName === v.name) || item.columnName === v.name)\n const names = []\n list.forEach((item, index) => {\n if (names.includes(item.name)) {\n // 处理多个一样的指标或维度\n item.name = `${item.name}_ecanrepeat_${index}`\n } else {\n names.push(item.name)\n }\n })\n return list\n }\n\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 edvDataSetId: unref(graphicConfig).edvDataSetId || ''\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 if (unref(activeKey) === '2') {\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n } else if (unref(activeKey) === '1') {\n // 组合排序\n if (unref(combSortList)?.length) {\n item.sort = cloneDeep(unref(combSortList))\n } else {\n delete item.sort\n }\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 = (data: { [key: string]: any }) => {\n const { sort } = data\n // 设置排序列表\n if (sort) {\n if (Array.isArray(sort)) {\n // 设置tab\n activeKey.value = sort[0]?.type === 'CUSTOM' ? '2' : '1'\n if (unref(activeKey) === '1') {\n combSortList.value = cloneDeep(sort)\n } else {\n combSortList.value = []\n }\n } else {\n // 设置tab\n activeKey.value = sort?.type === 'CUSTOM' ? '2' : '1'\n if (unref(activeKey) === '1') {\n combSortList.value = [cloneDeep(sort)]\n } else {\n combSortList.value = []\n }\n }\n } else {\n combSortList.value = []\n }\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n if (unref(activeKey) === '2') {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n } else {\n updateCustomSortList()\n }\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 if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!visible)\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 delete item.sort\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n const onAddSort = () => {\n unref(combSortList).push({\n label: '',\n columnName: null,\n type: 'COMBINATION',\n order: null\n })\n }\n\n const handleDeleteSort = (index: number) => {\n combSortList.value.splice(index, 1)\n }\n\n const onColumnChange = (columnName: string) => {\n const target = unref(combSortList).find(v => v.columnName === columnName)\n if (target) {\n const option = props.sortList.find(v => v.name === columnName)\n if (option) {\n target.label = option.label\n if (option.defaultCode) {\n target.defaultCode = option.defaultCode\n } else {\n delete target.defaultCode\n }\n }\n }\n }\n\n return {\n visible,\n customSortList,\n activeKey,\n combSortList,\n getSortOptions,\n onChange,\n onDeleteConfig,\n onCancel,\n onAddSort,\n handleDeleteSort,\n onColumnChange\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-start;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: calc(70vh - 124px);\n list-style: none;\n padding-bottom: 60px;\n padding-right: 10px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n\n.sort-row {\n margin-bottom: 10px;\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 <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n <div style=\"display: flex;align-items: center;\">\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 class=\"create-group\" style=\"margin-left: 40px;\">\n 新建值:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createValueTitle\"\n placeholder=\"请输入名称\"\n @pressEnter=\"onAddValue\"\n />\n </div>\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 createValueTitle = 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 createGroupTitle.value = ''\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onAddValue = () => {\n const title = unref(createValueTitle)\n if (!title) {\n message.error('值名称不能空')\n return\n }\n let isAllow = true\n if (unref(customGroupList)?.length) {\n for (const group of unref(customGroupList)) {\n if (group?.data?.length) {\n for (const item of group.data) {\n if (item.label === title) {\n isAllow = false\n break\n }\n }\n }\n if (!isAllow) {\n break\n }\n }\n }\n if (isAllow) {\n unref(customGroupList)[0].data.push({\n label: title,\n checked: false\n })\n isDataChange = true\n createValueTitle.value = ''\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 edvDataSetId: unref(graphicConfig).edvDataSetId || ''\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 if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!visible)\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 createValueTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n onAddValue,\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 <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n <div style=\"display: flex;align-items: center;\">\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 class=\"create-group\" style=\"margin-left: 40px;\">\n 新建值:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createValueTitle\"\n placeholder=\"请输入名称\"\n @pressEnter=\"onAddValue\"\n />\n </div>\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 createValueTitle = 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 createGroupTitle.value = ''\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onAddValue = () => {\n const title = unref(createValueTitle)\n if (!title) {\n message.error('值名称不能空')\n return\n }\n let isAllow = true\n if (unref(customGroupList)?.length) {\n for (const group of unref(customGroupList)) {\n if (group?.data?.length) {\n for (const item of group.data) {\n if (item.label === title) {\n isAllow = false\n break\n }\n }\n }\n if (!isAllow) {\n break\n }\n }\n }\n if (isAllow) {\n unref(customGroupList)[0].data.push({\n label: title,\n checked: false\n })\n isDataChange = true\n createValueTitle.value = ''\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 edvDataSetId: unref(graphicConfig).edvDataSetId || ''\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 if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!visible)\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 createValueTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n onAddValue,\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","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","!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=\"data-type\" v-show=\"(!condition.fieldType || ['TEXT', 'NUMBER'].includes(condition.fieldType)) && isShowCustomDataType\">\n <a-select\n style=\"width: 100%;\"\n :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 <template v-if=\"condition.dataType === 'time'\">\n <a-date-picker\n v-if=\"isUseCurrentTime\"\n disabled\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n :value=\"currentTime\"\n :format=\"condition.dateFormat\"\n />\n <a-date-picker\n v-else\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n </template>\n <a-select\n show-search\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n :style=\"{\n width: condition.fieldValue === 'PARENT' ? '' : 'calc(100% - 35px)',\n marginRight: '10px'\n }\"\n v-model:value=\"condition.fieldValue\"\n :filter-option=\"filterOption\"\n :options=\"keyNameOptions\"\n @change=\"onChangeComponent\"\n >\n </a-select>\n <template v-if=\"condition.fieldValue === 'PARENT'\">\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.modelKey\"\n placeholder=\"组件别名\"\n style=\"margin: 0;\"\n />\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.prop\"\n placeholder=\"属性名\"\n />\n </template>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <div class=\"use-current-time\" v-if=\"condition.dataType !== 'component'\">\n <a-checkbox v-model:checked=\"isUseCurrentTime\">使用当前时间</a-checkbox>\n </div>\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 <!-- 自定义 -->\n <a-tab-pane tab=\"自定义\" :key=\"5\">\n <div style=\"display: flex;\">\n <a-select\n v-model:value=\"customTabData.expression\"\n allowClear\n style=\"width: 120px;margin-right: 10px;\"\n >\n <a-select-option value=\"rangeValue\">范围差值</a-select-option>\n </a-select>\n <a-select v-model:value=\"customTabData.unit\" style=\"margin-right: 10px;\">\n <a-select-option value=\"YEAR\">年</a-select-option>\n <a-select-option value=\"QUARTER\">季度</a-select-option>\n <a-select-option value=\"MONTH\">月</a-select-option>\n <a-select-option value=\"WEEK\">周</a-select-option>\n <a-select-option value=\"DAY\">天</a-select-option>\n </a-select>\n <a-select v-model:value=\"customTabData.around\">\n <a-select-option value=\"before\">前</a-select-option>\n <a-select-option value=\"after\">后</a-select-option>\n </a-select>\n </div>\n <div style=\"position: absolute;bottom: 10px;left: 0;text-align: center;width: 100%;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okCustomConfig\">确定</a-button>\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 show-search\n v-else-if=\"(!condition.fieldType || ['TEXT', 'NUMBER'].includes(condition.fieldType)) && isShowCustomDataType && condition.dataType === 'component'\"\n v-model:value=\"condition.fieldValue\"\n :filter-option=\"filterOption\"\n :options=\"keyNameOptions\"\n @change=\"onChangeComponent\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <template v-if=\"!isDateType && condition.fieldValue === 'PARENT'\">\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.modelKey\"\n placeholder=\"组件别名\"\n style=\"margin: 0;\"\n />\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.prop\"\n placeholder=\"属性名\"\n />\n </template>\n <a-dropdown :trigger=\"['click']\">\n <menu-outlined class=\"more-icon\" />\n <template #overlay>\n <a-menu @click=\"clickConditionMenu\">\n <a-menu-item key=\"1\">添加且条件</a-menu-item>\n <a-menu-item key=\"2\">添加或条件</a-menu-item>\n </a-menu>\n </template>\n </a-dropdown>\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, MenuOutlined } 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 {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n CHANGE_CONDITION,\n DATA_VIEW_COLUMNS,\n RENDER_USED_COMPONENTS\n} from '@/utils/constant'\nimport { nanoid } from 'nanoid'\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 MenuOutlined\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 path: {\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 renderComponents = inject(RENDER_USED_COMPONENTS) as any\n const isUseCurrentTime = ref(false)\n const currentTime = dayjs()\n const controlList = computed(() => {\n const result = []\n unref(renderComponents)?.forEach((item: any) => {\n const { keyName = '', id = '', type } = item\n if (type === 'ecanRangePicker') {\n result.push({\n value: `${id}-startTime`,\n label: `${keyName || id}-开始时间值`,\n keyName: `${keyName || id}-startTime`,\n id\n }, {\n value: `${id}-endTime`,\n label: `${keyName || id}-结束时间值`,\n keyName: `${keyName || id}-endTime`,\n id\n })\n } else {\n result.push({\n value: id,\n label: `${keyName || id}`,\n keyName: `${keyName || id}`,\n id\n })\n }\n })\n return result\n })\n const keyNameOptions = computed(() => {\n return [\n {\n label: '父页面',\n value: 'PARENT',\n id: 'PARENT',\n keyName: 'PARENT'\n },\n ...unref(controlList)\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 customTabData = ref({\n expression: 'rangeValue',\n unit: 'YEAR',\n around: 'before'\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 indexCode: string\n indexCodeNum: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n componentId?: string\n useCurrentTime?: boolean\n keyValue?: string\n modelKey?: string\n prop?: string\n edvDataSetId?: string\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: getDefaultFieldValue(),\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid,\n indexCode: props.data?.indexCode,\n indexCodeNum: props.data?.indexCodeNum,\n dataType: props.data?.dataType || '',\n componentId: props.data?.componentId || '',\n useCurrentTime: !!props.data?.useCurrentTime,\n keyValue: props.data?.keyValue,\n modelKey: props.data?.modelKey,\n prop: props.data?.prop\n })\n\n function getDefaultFieldValue () {\n const { fieldType = '', dataType = '', fieldValue = '' } = props.data\n if (fieldType === 'DATE' && dataType === 'time') {\n return fieldValue ? dayjs(fieldValue) : fieldValue\n } else if (dataType === 'component') {\n const target = unref(controlList).find(v => v.keyName === fieldValue)\n if (target) {\n return target.value\n } else {\n return fieldValue\n }\n } else {\n return fieldValue\n }\n }\n const dataSetfieldOptions = ref([])\n\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n const { source } = unref(graphicConfig)\n let result = []\n const dims = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList', 'dimensionList']\n const otherList = ['controlList', 'sqlConditions', 'variableList', 'variableConditions']\n if (source === 'EDV_DATA_SET') {\n // 获取当前使用数据集列表数据\n // const dataSetList = JSON.parse(sessionStorage.getItem('dataSetList'))\n // if (Array.isArray(dataSetList.dataViewColumns)) {\n // result = dataSetList.dataViewColumns.map(v => {\n // return {\n // datato: dataSetList.datato,\n // dataSetParams: dataSetList.dataSetParams,\n // ...v\n // }\n // })\n // }\n result = dataSetfieldOptions.value\n\n // eslint-disable-next-line vue/no-async-in-computed-properties\n // aw request.get(`${INDICATOR_URL}/dataset/` + unref(graphicConfig).edvDataSetId || '', {\n // headers: {\n // Authentication: indicatorToken,\n // operateContext: 'ygt'\n // }\n // }).then((res: any) => {\n // if (res.data.success) {\n // console.log(res.data)\n // // const { name, genericType, id, edvDataSetId, label, typeGuid, indexCode, indexCodeNum } = option\n // setTimeout(() => {\n // result = res.data.data.column.map((v:any) => {\n // return {\n // ...v,\n // genericType: v.columnCategory === '0' ? 'TEXT' : v.columnCategory === '1' ? 'NUMBER' : 'DATE',\n // edvDataSetId: res.data.data.id,\n // name: v.columnName,\n // label: v.columnName\n\n // }\n // })\n // })\n\n // console.log(result)\n // }\n // }).catch((err) => {\n // console.error(err)\n // })\n } else if (dims.includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !otherList.includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n if (dims.includes(key)) {\n options = options.concat(value.filter(v => v.show))\n } else {\n options = options.concat(value)\n }\n }\n }\n }\n result = options\n } else if (['leftAxisList', 'rightAxisList', '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.label || v.title,\n value: v.name\n }\n })\n })\n\n const { updateCondition, deleteCondition, addCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n addCondition: (_path: string, _index: number, _join: '||' | '&&') => void 0\n })\n const onDelete = () => {\n deleteCondition(props.index, props.path)\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.index, props.path)\n }, {\n deep: true\n })\n\n watch(isUseCurrentTime, (value: boolean) => {\n condition.value.fieldValue = ''\n condition.value.useCurrentTime = value\n })\n\n const onFieldChange = (value: string) => {\n const option = unref(fieldOptions).find(v => v.value === value) || {}\n const { name, genericType, id, edvDataSetId, label, typeGuid, indexCode, indexCodeNum } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: '',\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid,\n indexCode,\n edvDataSetId,\n indexCodeNum,\n dataType: '',\n useCurrentTime: false,\n keyValue: unref(condition)?.keyValue || nanoid(),\n modelKey: '',\n prop: ''\n }\n }\n const onChangeComponent = (value: string) => {\n const option = unref(controlList).find(v => v.value === value) || {}\n unref(condition).componentId = option.id || ''\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n\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: '不等于', value: 'NOT_EQUAL' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_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 { 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 }\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 edvDataSetId: unref(condition).edvDataSetId || ''\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 = (value: string) => {\n unref(condition).dataType = value\n unref(condition).fieldValue = ''\n unref(condition).modelKey = ''\n unref(condition).prop = ''\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 unref(condition).modelKey = ''\n unref(condition).prop = ''\n }\n\n onMounted(async () => {\n condition.value.dataType = props.data?.dataType || ''\n condition.value.componentId = props.data?.componentId || ''\n condition.value.keyValue = props.data?.keyValue\n condition.value.modelKey = props.data?.modelKey\n condition.value.prop = props.data?.prop\n if (unref(condition).fieldType === 'DATE') {\n const { activeKey, dateCalcTypes = [] } = props.data || {}\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).activeKey = activeKey\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = dateCalcTypes\n if (unref(condition).useCurrentTime && unref(condition).dataType !== 'component') {\n // 使用当前时间\n isUseCurrentTime.value = true\n }\n if (activeKey === 5) {\n // 范围差值\n const calcWay = unref(condition).calcWays[0]\n if (calcWay) {\n const vals = calcWay.split('-')\n unref(customTabData).expression = vals[0]\n unref(customTabData).around = vals[1]\n }\n unref(customTabData).unit = dateCalcTypes[0] || 'YEAR'\n } else {\n unref(condition).radioValue = props.data?.radioValue || ''\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\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 const { source } = unref(graphicConfig)\n if (source === 'EDV_DATA_SET') {\n await request.get(`${INDICATOR_URL}/dataset/` + unref(graphicConfig).edvDataSetId || '', {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }).then((res: any) => {\n if (res.data.success) {\n console.log(res.data)\n // const { name, genericType, id, edvDataSetId, label, typeGuid, indexCode, indexCodeNum } = option\n\n dataSetfieldOptions.value = res.data.data.column.map((v:any) => {\n return {\n ...v,\n genericType: v.columnCategory === '0' ? 'TEXT' : v.columnCategory === '1' ? 'NUMBER' : 'DATE',\n edvDataSetId: res.data.data.id,\n name: v.columnName,\n label: v.columnName\n\n }\n })\n }\n }).catch((err) => {\n console.error(err)\n })\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 const okCustomConfig = () => {\n unref(condition).activeKey = 5\n unref(condition).dateCalcTypes = [unref(customTabData).unit]\n unref(condition).calcWays[0] = `${unref(customTabData).expression}-${unref(customTabData).around}`\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\n const filterOption = (input: string, option: any) => {\n return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n\n const isShowCustomDataType = computed(() => !['IN', 'NOT_IN'].includes(unref(condition).rule))\n\n const clickConditionMenu = ({ key }) => {\n addCondition(props.path, props.index, key === '2' ? '||' : '&&')\n }\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 keyNameOptions,\n dataTypeList,\n customTabData,\n isUseCurrentTime,\n currentTime,\n isShowCustomDataType,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig,\n onChangeComponent,\n filterOption,\n okCustomConfig,\n clickConditionMenu,\n dataSetfieldOptions\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: 20%;\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: 20%;\n}\n\n.delete-icon,\n.more-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: 0 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=\"(!condition.fieldType || ['TEXT', 'NUMBER'].includes(condition.fieldType)) && isShowCustomDataType\">\n <a-select\n style=\"width: 100%;\"\n :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 <template v-if=\"condition.dataType === 'time'\">\n <a-date-picker\n v-if=\"isUseCurrentTime\"\n disabled\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n :value=\"currentTime\"\n :format=\"condition.dateFormat\"\n />\n <a-date-picker\n v-else\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n </template>\n <a-select\n show-search\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n :style=\"{\n width: condition.fieldValue === 'PARENT' ? '' : 'calc(100% - 35px)',\n marginRight: '10px'\n }\"\n v-model:value=\"condition.fieldValue\"\n :filter-option=\"filterOption\"\n :options=\"keyNameOptions\"\n @change=\"onChangeComponent\"\n >\n </a-select>\n <template v-if=\"condition.fieldValue === 'PARENT'\">\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.modelKey\"\n placeholder=\"组件别名\"\n style=\"margin: 0;\"\n />\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.prop\"\n placeholder=\"属性名\"\n />\n </template>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <div class=\"use-current-time\" v-if=\"condition.dataType !== 'component'\">\n <a-checkbox v-model:checked=\"isUseCurrentTime\">使用当前时间</a-checkbox>\n </div>\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 <!-- 自定义 -->\n <a-tab-pane tab=\"自定义\" :key=\"5\">\n <div style=\"display: flex;\">\n <a-select\n v-model:value=\"customTabData.expression\"\n allowClear\n style=\"width: 120px;margin-right: 10px;\"\n >\n <a-select-option value=\"rangeValue\">范围差值</a-select-option>\n </a-select>\n <a-select v-model:value=\"customTabData.unit\" style=\"margin-right: 10px;\">\n <a-select-option value=\"YEAR\">年</a-select-option>\n <a-select-option value=\"QUARTER\">季度</a-select-option>\n <a-select-option value=\"MONTH\">月</a-select-option>\n <a-select-option value=\"WEEK\">周</a-select-option>\n <a-select-option value=\"DAY\">天</a-select-option>\n </a-select>\n <a-select v-model:value=\"customTabData.around\">\n <a-select-option value=\"before\">前</a-select-option>\n <a-select-option value=\"after\">后</a-select-option>\n </a-select>\n </div>\n <div style=\"position: absolute;bottom: 10px;left: 0;text-align: center;width: 100%;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okCustomConfig\">确定</a-button>\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 show-search\n v-else-if=\"(!condition.fieldType || ['TEXT', 'NUMBER'].includes(condition.fieldType)) && isShowCustomDataType && condition.dataType === 'component'\"\n v-model:value=\"condition.fieldValue\"\n :filter-option=\"filterOption\"\n :options=\"keyNameOptions\"\n @change=\"onChangeComponent\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <template v-if=\"!isDateType && condition.fieldValue === 'PARENT'\">\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.modelKey\"\n placeholder=\"组件别名\"\n style=\"margin: 0;\"\n />\n <a-input\n class=\"field-value\"\n v-model:value=\"condition.prop\"\n placeholder=\"属性名\"\n />\n </template>\n <a-dropdown :trigger=\"['click']\">\n <menu-outlined class=\"more-icon\" />\n <template #overlay>\n <a-menu @click=\"clickConditionMenu\">\n <a-menu-item key=\"1\">添加且条件</a-menu-item>\n <a-menu-item key=\"2\">添加或条件</a-menu-item>\n </a-menu>\n </template>\n </a-dropdown>\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, MenuOutlined } 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 {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n CHANGE_CONDITION,\n DATA_VIEW_COLUMNS,\n RENDER_USED_COMPONENTS\n} from '@/utils/constant'\nimport { nanoid } from 'nanoid'\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 MenuOutlined\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 path: {\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 renderComponents = inject(RENDER_USED_COMPONENTS) as any\n const isUseCurrentTime = ref(false)\n const currentTime = dayjs()\n const controlList = computed(() => {\n const result = []\n unref(renderComponents)?.forEach((item: any) => {\n const { keyName = '', id = '', type } = item\n if (type === 'ecanRangePicker') {\n result.push({\n value: `${id}-startTime`,\n label: `${keyName || id}-开始时间值`,\n keyName: `${keyName || id}-startTime`,\n id\n }, {\n value: `${id}-endTime`,\n label: `${keyName || id}-结束时间值`,\n keyName: `${keyName || id}-endTime`,\n id\n })\n } else {\n result.push({\n value: id,\n label: `${keyName || id}`,\n keyName: `${keyName || id}`,\n id\n })\n }\n })\n return result\n })\n const keyNameOptions = computed(() => {\n return [\n {\n label: '父页面',\n value: 'PARENT',\n id: 'PARENT',\n keyName: 'PARENT'\n },\n ...unref(controlList)\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 customTabData = ref({\n expression: 'rangeValue',\n unit: 'YEAR',\n around: 'before'\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 indexCode: string\n indexCodeNum: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n componentId?: string\n useCurrentTime?: boolean\n keyValue?: string\n modelKey?: string\n prop?: string\n edvDataSetId?: string\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: getDefaultFieldValue(),\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid,\n indexCode: props.data?.indexCode,\n indexCodeNum: props.data?.indexCodeNum,\n dataType: props.data?.dataType || '',\n componentId: props.data?.componentId || '',\n useCurrentTime: !!props.data?.useCurrentTime,\n keyValue: props.data?.keyValue,\n modelKey: props.data?.modelKey,\n prop: props.data?.prop\n })\n\n function getDefaultFieldValue () {\n const { fieldType = '', dataType = '', fieldValue = '' } = props.data\n if (fieldType === 'DATE' && dataType === 'time') {\n return fieldValue ? dayjs(fieldValue) : fieldValue\n } else if (dataType === 'component') {\n const target = unref(controlList).find(v => v.keyName === fieldValue)\n if (target) {\n return target.value\n } else {\n return fieldValue\n }\n } else {\n return fieldValue\n }\n }\n const dataSetfieldOptions = ref([])\n\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n const { source } = unref(graphicConfig)\n let result = []\n const dims = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList', 'dimensionList']\n const otherList = ['controlList', 'sqlConditions', 'variableList', 'variableConditions']\n if (source === 'EDV_DATA_SET') {\n // 获取当前使用数据集列表数据\n // const dataSetList = JSON.parse(sessionStorage.getItem('dataSetList'))\n // if (Array.isArray(dataSetList.dataViewColumns)) {\n // result = dataSetList.dataViewColumns.map(v => {\n // return {\n // datato: dataSetList.datato,\n // dataSetParams: dataSetList.dataSetParams,\n // ...v\n // }\n // })\n // }\n result = dataSetfieldOptions.value\n\n // eslint-disable-next-line vue/no-async-in-computed-properties\n // aw request.get(`${INDICATOR_URL}/dataset/` + unref(graphicConfig).edvDataSetId || '', {\n // headers: {\n // Authentication: indicatorToken,\n // operateContext: 'ygt'\n // }\n // }).then((res: any) => {\n // if (res.data.success) {\n // console.log(res.data)\n // // const { name, genericType, id, edvDataSetId, label, typeGuid, indexCode, indexCodeNum } = option\n // setTimeout(() => {\n // result = res.data.data.column.map((v:any) => {\n // return {\n // ...v,\n // genericType: v.columnCategory === '0' ? 'TEXT' : v.columnCategory === '1' ? 'NUMBER' : 'DATE',\n // edvDataSetId: res.data.data.id,\n // name: v.columnName,\n // label: v.columnName\n\n // }\n // })\n // })\n\n // console.log(result)\n // }\n // }).catch((err) => {\n // console.error(err)\n // })\n } else if (dims.includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !otherList.includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n if (dims.includes(key)) {\n options = options.concat(value.filter(v => v.show))\n } else {\n options = options.concat(value)\n }\n }\n }\n }\n result = options\n } else if (['leftAxisList', 'rightAxisList', '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.label || v.title,\n value: v.name\n }\n })\n })\n\n const { updateCondition, deleteCondition, addCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n addCondition: (_path: string, _index: number, _join: '||' | '&&') => void 0\n })\n const onDelete = () => {\n deleteCondition(props.index, props.path)\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.index, props.path)\n }, {\n deep: true\n })\n\n watch(isUseCurrentTime, (value: boolean) => {\n condition.value.fieldValue = ''\n condition.value.useCurrentTime = value\n })\n\n const onFieldChange = (value: string) => {\n const option = unref(fieldOptions).find(v => v.value === value) || {}\n const { name, genericType, id, edvDataSetId, label, typeGuid, indexCode, indexCodeNum } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: '',\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid,\n indexCode,\n edvDataSetId,\n indexCodeNum,\n dataType: '',\n useCurrentTime: false,\n keyValue: unref(condition)?.keyValue || nanoid(),\n modelKey: '',\n prop: ''\n }\n }\n const onChangeComponent = (value: string) => {\n const option = unref(controlList).find(v => v.value === value) || {}\n unref(condition).componentId = option.id || ''\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n\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: '不等于', value: 'NOT_EQUAL' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_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 { 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 }\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 edvDataSetId: unref(condition).edvDataSetId || ''\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 = (value: string) => {\n unref(condition).dataType = value\n unref(condition).fieldValue = ''\n unref(condition).modelKey = ''\n unref(condition).prop = ''\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 unref(condition).modelKey = ''\n unref(condition).prop = ''\n }\n\n onMounted(async () => {\n condition.value.dataType = props.data?.dataType || ''\n condition.value.componentId = props.data?.componentId || ''\n condition.value.keyValue = props.data?.keyValue\n condition.value.modelKey = props.data?.modelKey\n condition.value.prop = props.data?.prop\n if (unref(condition).fieldType === 'DATE') {\n const { activeKey, dateCalcTypes = [] } = props.data || {}\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).activeKey = activeKey\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = dateCalcTypes\n if (unref(condition).useCurrentTime && unref(condition).dataType !== 'component') {\n // 使用当前时间\n isUseCurrentTime.value = true\n }\n if (activeKey === 5) {\n // 范围差值\n const calcWay = unref(condition).calcWays[0]\n if (calcWay) {\n const vals = calcWay.split('-')\n unref(customTabData).expression = vals[0]\n unref(customTabData).around = vals[1]\n }\n unref(customTabData).unit = dateCalcTypes[0] || 'YEAR'\n } else {\n unref(condition).radioValue = props.data?.radioValue || ''\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\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 const { source } = unref(graphicConfig)\n if (source === 'EDV_DATA_SET') {\n await request.get(`${INDICATOR_URL}/dataset/` + unref(graphicConfig).edvDataSetId || '', {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }).then((res: any) => {\n if (res.data.success) {\n console.log(res.data)\n // const { name, genericType, id, edvDataSetId, label, typeGuid, indexCode, indexCodeNum } = option\n\n dataSetfieldOptions.value = res.data.data.column.map((v:any) => {\n return {\n ...v,\n genericType: v.columnCategory === '0' ? 'TEXT' : v.columnCategory === '1' ? 'NUMBER' : 'DATE',\n edvDataSetId: res.data.data.id,\n name: v.columnName,\n label: v.columnName\n\n }\n })\n }\n }).catch((err) => {\n console.error(err)\n })\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 const okCustomConfig = () => {\n unref(condition).activeKey = 5\n unref(condition).dateCalcTypes = [unref(customTabData).unit]\n unref(condition).calcWays[0] = `${unref(customTabData).expression}-${unref(customTabData).around}`\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\n const filterOption = (input: string, option: any) => {\n return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n\n const isShowCustomDataType = computed(() => !['IN', 'NOT_IN'].includes(unref(condition).rule))\n\n const clickConditionMenu = ({ key }) => {\n addCondition(props.path, props.index, key === '2' ? '||' : '&&')\n }\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 keyNameOptions,\n dataTypeList,\n customTabData,\n isUseCurrentTime,\n currentTime,\n isShowCustomDataType,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig,\n onChangeComponent,\n filterOption,\n okCustomConfig,\n clickConditionMenu,\n dataSetfieldOptions\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: 20%;\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: 20%;\n}\n\n.delete-icon,\n.more-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: 0 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 :path=\"`${path ? path + '-' : ''}${index}`\"\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 :key=\"item.keyValue || `${level}-${index}`\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :path=\"path || ''\"\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 path: {\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</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 :path=\"`${path ? path + '-' : ''}${index}`\"\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 :key=\"item.keyValue || `${level}-${index}`\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :path=\"path || ''\"\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 path: {\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</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=\"55%\"\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=\"['classificationList', 'rowHeaderList', 'dimensionList'].includes(type)\">\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 {\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n CHANGE_CONDITION,\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_VIEW_COLUMNS,\n RENDER_USED_COMPONENTS,\n SELECTED_COMPONENT,\n UPDATE_USED_COMPONENT,\n SOURCE_TYPE\n} from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport { getConditions, getEventName, getSqlConditions } from '@/utils/util'\nimport { nanoid } from 'nanoid'\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 renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const dataSourceId = computed(() => unref(graphicConfig)?.dataSourceId)\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const updateUsedComponent = inject(UPDATE_USED_COMPONENT) as any\n const conditionList = ref<{ [key: string]: any } []>([])\n const truncationList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n const source = inject(SOURCE_TYPE)\n const addKeyValue = (conditions: { [key: string]: any } []) => {\n for (const item of conditions) {\n if (item.conditions?.length) {\n addKeyValue(item.conditions)\n } else {\n item.keyValue = nanoid()\n }\n }\n }\n\n watch(visible, (visible) => {\n if (visible) {\n if (Array.isArray(props.item?.conditions)) {\n const conditions = cloneDeep(props.item?.conditions || [])\n addKeyValue(conditions)\n conditionList.value = conditions\n }\n if (Array.isArray(props.item?.truncations)) {\n truncationList.value = cloneDeep(props.item?.truncations) || []\n } else {\n truncationList.value = [{\n rule: '',\n num: 0,\n name: '其他'\n }]\n }\n }\n if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!visible)\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 keyValue: nanoid()\n }\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({\n keyValue: nanoid()\n })\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, index: number, path: string) {\n isDataChange = true\n let conditions = unref(conditionList)\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n }\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 (index: number, path: string) {\n isDataChange = true\n let conditions = unref(conditionList)\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.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 if (pathArr.length > 0) {\n const lastIndex = pathArr.length - 1\n const lastPath = pathArr[lastIndex]\n const wrapperPath = pathArr.slice(0, lastIndex)\n let wrapperConditions = unref(conditionList)\n let wrapperJoin = ''\n for (const j of wrapperPath) {\n if (wrapperConditions[j]) {\n wrapperJoin = wrapperConditions[j]?.join\n wrapperConditions = wrapperConditions[j]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperJoin === conditions[0].join) {\n if (Array.isArray(conditions[0].conditions)) {\n const temp = cloneDeep(conditions[0].conditions)\n wrapperConditions.splice(+lastPath, 1)\n wrapperConditions.splice(+lastPath, 0, ...temp)\n }\n } else {\n wrapperConditions[lastPath] = conditions[0]\n }\n }\n } else if (conditions.length === 0) {\n conditionList.value = []\n }\n }\n }\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 addCondition (path: string, index: number, join: '||' | '&&') {\n isDataChange = true\n let conditions = unref(conditionList)\n let cdJoin = ''\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n cdJoin = conditions[i]?.join\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (cdJoin === join) {\n conditions.splice(index + 1, 0, {\n keyValue: nanoid()\n })\n } else {\n const temp = cloneDeep(conditions[index])\n conditions[index] = {\n join,\n conditions: [\n temp,\n {\n keyValue: nanoid()\n }\n ]\n }\n }\n }\n }\n })\n const onUpdatetruncation = (list: any[]) => {\n isDataChange = true\n truncationList.value = list\n }\n const renderControlList = computed(() => {\n const result = []\n unref(renderUsedComponents)?.forEach((item: any) => {\n const { keyName = '', id = '', type } = item\n if (type === 'ecanRangePicker') {\n result.push({\n value: `${id}-startTime`,\n label: `${keyName || id}-开始时间值`,\n keyName: `${keyName || id}-startTime`\n }, {\n value: `${id}-endTime`,\n label: `${keyName || id}-结束时间值`,\n keyName: `${keyName || id}-endTime`\n })\n } else {\n result.push({\n value: id,\n label: `${keyName || id}`,\n keyName: `${keyName || id}`\n })\n }\n })\n return result\n })\n const updateFilter = () => {\n const controlList = getConditions(unref(graphicConfig)?.controlList || [])\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const oldConditions = getConditions(cloneDeep(list[props.index].conditions))\n list[props.index].conditions = unref(conditionList)\n if (['classificationList', 'rowHeaderList', 'dimensionList'].includes(props.type) && unref(truncationList)?.length) {\n list[props.index].truncations = unref(truncationList)\n }\n const conditions = getConditions(unref(conditionList))\n for (const item of conditions) {\n if (item.dataType === 'component' && item.fieldValue) {\n const target = unref(renderControlList).find(v => v.value === item.fieldValue)\n if (target) {\n item.fieldValue = target.keyName\n }\n }\n }\n // 待删除的交互组件\n const pendingDelete =\n oldConditions\n .filter(v => !conditions.find(f => f.componentId === v.componentId))\n .filter(v => !controlList.find(f => f.id === v.componentId))\n // 待新增的交互组件\n const pendingAdd =\n conditions\n .filter(v => !oldConditions.find(f => f.componentId === v.componentId))\n setEvent(pendingDelete, pendingAdd)\n updateGraphicConfig({\n [props.type]: list,\n sqlConditions: getSqlConditions({\n ...unref(graphicConfig),\n [props.type]: list\n }, unref(renderUsedComponents))\n })\n }\n\n // 设置目标组件的交互,刷新当前选中组件\n function setEvent (deletes: any, adds: any) {\n const result = deletes.map(v => {\n return {\n ...v,\n delete: true\n }\n }).concat(adds.map(v => {\n return {\n ...v,\n add: true\n }\n }))\n for (const item of result) {\n const component = unref(renderUsedComponents).find(v => v.id === item.componentId)\n if (component) {\n const { type, id, events = [] } = component\n const event = getEventName(type)\n if (item.add) {\n if (!events.find((e: any) =>\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')) {\n updateUsedComponent({\n id,\n events: [...events, {\n on: event,\n target: unref(selectedComponent)?.id,\n emit: 'refreshData'\n }].reverse()\n })\n }\n } else if (item.delete) {\n const index = events.findIndex((e: any) =>\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')\n if (index !== -1) {\n events.splice(index, 1)\n updateUsedComponent({\n id,\n events\n })\n }\n }\n }\n }\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 (indtData: any) => {\n if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n try {\n const { id: indexGuid, indexCode } = indtData\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n // hrpIndexGuid: indexGuid,\n indexGuid,\n indexCode\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 .map((column: { [key: string]: any }) => {\n return {\n ...column,\n label: column.title || column.label\n }\n })\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data && visible.value && unref(source) !== 'EDV_DATA_SET') {\n getHrpIndexWithComplex(data)\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 source\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=\"55%\"\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=\"['classificationList', 'rowHeaderList', 'dimensionList'].includes(type)\">\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 {\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n CHANGE_CONDITION,\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_VIEW_COLUMNS,\n RENDER_USED_COMPONENTS,\n SELECTED_COMPONENT,\n UPDATE_USED_COMPONENT,\n SOURCE_TYPE\n} from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport { getConditions, getEventName, getSqlConditions } from '@/utils/util'\nimport { nanoid } from 'nanoid'\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 renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const dataSourceId = computed(() => unref(graphicConfig)?.dataSourceId)\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const updateUsedComponent = inject(UPDATE_USED_COMPONENT) as any\n const conditionList = ref<{ [key: string]: any } []>([])\n const truncationList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n const source = inject(SOURCE_TYPE)\n const addKeyValue = (conditions: { [key: string]: any } []) => {\n for (const item of conditions) {\n if (item.conditions?.length) {\n addKeyValue(item.conditions)\n } else {\n item.keyValue = nanoid()\n }\n }\n }\n\n watch(visible, (visible) => {\n if (visible) {\n if (Array.isArray(props.item?.conditions)) {\n const conditions = cloneDeep(props.item?.conditions || [])\n addKeyValue(conditions)\n conditionList.value = conditions\n }\n if (Array.isArray(props.item?.truncations)) {\n truncationList.value = cloneDeep(props.item?.truncations) || []\n } else {\n truncationList.value = [{\n rule: '',\n num: 0,\n name: '其他'\n }]\n }\n }\n if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!visible)\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 keyValue: nanoid()\n }\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({\n keyValue: nanoid()\n })\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, index: number, path: string) {\n isDataChange = true\n let conditions = unref(conditionList)\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n }\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 (index: number, path: string) {\n isDataChange = true\n let conditions = unref(conditionList)\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.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 if (pathArr.length > 0) {\n const lastIndex = pathArr.length - 1\n const lastPath = pathArr[lastIndex]\n const wrapperPath = pathArr.slice(0, lastIndex)\n let wrapperConditions = unref(conditionList)\n let wrapperJoin = ''\n for (const j of wrapperPath) {\n if (wrapperConditions[j]) {\n wrapperJoin = wrapperConditions[j]?.join\n wrapperConditions = wrapperConditions[j]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperJoin === conditions[0].join) {\n if (Array.isArray(conditions[0].conditions)) {\n const temp = cloneDeep(conditions[0].conditions)\n wrapperConditions.splice(+lastPath, 1)\n wrapperConditions.splice(+lastPath, 0, ...temp)\n }\n } else {\n wrapperConditions[lastPath] = conditions[0]\n }\n }\n } else if (conditions.length === 0) {\n conditionList.value = []\n }\n }\n }\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 addCondition (path: string, index: number, join: '||' | '&&') {\n isDataChange = true\n let conditions = unref(conditionList)\n let cdJoin = ''\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n cdJoin = conditions[i]?.join\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (cdJoin === join) {\n conditions.splice(index + 1, 0, {\n keyValue: nanoid()\n })\n } else {\n const temp = cloneDeep(conditions[index])\n conditions[index] = {\n join,\n conditions: [\n temp,\n {\n keyValue: nanoid()\n }\n ]\n }\n }\n }\n }\n })\n const onUpdatetruncation = (list: any[]) => {\n isDataChange = true\n truncationList.value = list\n }\n const renderControlList = computed(() => {\n const result = []\n unref(renderUsedComponents)?.forEach((item: any) => {\n const { keyName = '', id = '', type } = item\n if (type === 'ecanRangePicker') {\n result.push({\n value: `${id}-startTime`,\n label: `${keyName || id}-开始时间值`,\n keyName: `${keyName || id}-startTime`\n }, {\n value: `${id}-endTime`,\n label: `${keyName || id}-结束时间值`,\n keyName: `${keyName || id}-endTime`\n })\n } else {\n result.push({\n value: id,\n label: `${keyName || id}`,\n keyName: `${keyName || id}`\n })\n }\n })\n return result\n })\n const updateFilter = () => {\n const controlList = getConditions(unref(graphicConfig)?.controlList || [])\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const oldConditions = getConditions(cloneDeep(list[props.index].conditions))\n list[props.index].conditions = unref(conditionList)\n if (['classificationList', 'rowHeaderList', 'dimensionList'].includes(props.type) && unref(truncationList)?.length) {\n list[props.index].truncations = unref(truncationList)\n }\n const conditions = getConditions(unref(conditionList))\n for (const item of conditions) {\n if (item.dataType === 'component' && item.fieldValue) {\n const target = unref(renderControlList).find(v => v.value === item.fieldValue)\n if (target) {\n item.fieldValue = target.keyName\n }\n }\n }\n // 待删除的交互组件\n const pendingDelete =\n oldConditions\n .filter(v => !conditions.find(f => f.componentId === v.componentId))\n .filter(v => !controlList.find(f => f.id === v.componentId))\n // 待新增的交互组件\n const pendingAdd =\n conditions\n .filter(v => !oldConditions.find(f => f.componentId === v.componentId))\n setEvent(pendingDelete, pendingAdd)\n updateGraphicConfig({\n [props.type]: list,\n sqlConditions: getSqlConditions({\n ...unref(graphicConfig),\n [props.type]: list\n }, unref(renderUsedComponents))\n })\n }\n\n // 设置目标组件的交互,刷新当前选中组件\n function setEvent (deletes: any, adds: any) {\n const result = deletes.map(v => {\n return {\n ...v,\n delete: true\n }\n }).concat(adds.map(v => {\n return {\n ...v,\n add: true\n }\n }))\n for (const item of result) {\n const component = unref(renderUsedComponents).find(v => v.id === item.componentId)\n if (component) {\n const { type, id, events = [] } = component\n const event = getEventName(type)\n if (item.add) {\n if (!events.find((e: any) =>\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')) {\n updateUsedComponent({\n id,\n events: [...events, {\n on: event,\n target: unref(selectedComponent)?.id,\n emit: 'refreshData'\n }].reverse()\n })\n }\n } else if (item.delete) {\n const index = events.findIndex((e: any) =>\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')\n if (index !== -1) {\n events.splice(index, 1)\n updateUsedComponent({\n id,\n events\n })\n }\n }\n }\n }\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 (indtData: any) => {\n if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n try {\n const { id: indexGuid, indexCode } = indtData\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId),\n // hrpIndexGuid: indexGuid,\n indexGuid,\n indexCode\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 .map((column: { [key: string]: any }) => {\n return {\n ...column,\n label: column.title || column.label\n }\n })\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data && visible.value && unref(source) !== 'EDV_DATA_SET') {\n getHrpIndexWithComplex(data)\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 source\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>\r\n <a-modal\r\n title=\"配置展示名称\"\r\n :visible=\"visible\"\r\n destroy-on-close\r\n width=\"30%\"\r\n :bodyStyle=\"{\r\n overflow: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n paddingTop: '10px'\r\n }\"\r\n :closable=\"false\"\r\n @ok=\"onOk\"\r\n @cancel=\"onCancel\"\r\n >\r\n <div class=\"config-name\">\r\n <div style=\"word-break: keep-all;\">名称:</div>\r\n <a-input v-model:value=\"fieldName\" />\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, unref } from 'vue'\r\nimport {\r\n Input as AInput,\r\n Modal as AModal\r\n} from 'ant-design-vue'\r\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ConfigName',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n // 卡片类型\r\n type: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n AInput,\r\n AModal\r\n },\r\n setup (props, { expose }) {\r\n const visible = ref(false)\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const fieldName = ref()\r\n const showModal = (item: any) => {\r\n const { showLabel = '', label = '' } = item\r\n fieldName.value = showLabel || label || ''\r\n visible.value = true\r\n }\r\n const hideModal = () => {\r\n visible.value = false\r\n }\r\n const onOk = () => {\r\n const list = (unref(graphicConfig)[props.type])?.slice() || []\r\n list[props.index].showLabel = fieldName.value\r\n updateGraphicConfig({\r\n [props.type]: list\r\n })\r\n hideModal()\r\n }\r\n const onCancel = () => {\r\n hideModal()\r\n }\r\n expose({\r\n showModal\r\n })\r\n return {\r\n visible,\r\n onOk,\r\n onCancel,\r\n fieldName\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.config-name {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 10px;\r\n}\r\n</style>\r\n","<template>\r\n <a-modal\r\n title=\"配置展示名称\"\r\n :visible=\"visible\"\r\n destroy-on-close\r\n width=\"30%\"\r\n :bodyStyle=\"{\r\n overflow: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n paddingTop: '10px'\r\n }\"\r\n :closable=\"false\"\r\n @ok=\"onOk\"\r\n @cancel=\"onCancel\"\r\n >\r\n <div class=\"config-name\">\r\n <div style=\"word-break: keep-all;\">名称:</div>\r\n <a-input v-model:value=\"fieldName\" />\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, unref } from 'vue'\r\nimport {\r\n Input as AInput,\r\n Modal as AModal\r\n} from 'ant-design-vue'\r\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ConfigName',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n // 卡片类型\r\n type: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n AInput,\r\n AModal\r\n },\r\n setup (props, { expose }) {\r\n const visible = ref(false)\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const fieldName = ref()\r\n const showModal = (item: any) => {\r\n const { showLabel = '', label = '' } = item\r\n fieldName.value = showLabel || label || ''\r\n visible.value = true\r\n }\r\n const hideModal = () => {\r\n visible.value = false\r\n }\r\n const onOk = () => {\r\n const list = (unref(graphicConfig)[props.type])?.slice() || []\r\n list[props.index].showLabel = fieldName.value\r\n updateGraphicConfig({\r\n [props.type]: list\r\n })\r\n hideModal()\r\n }\r\n const onCancel = () => {\r\n hideModal()\r\n }\r\n expose({\r\n showModal\r\n })\r\n return {\r\n visible,\r\n onOk,\r\n onCancel,\r\n fieldName\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.config-name {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 10px;\r\n}\r\n</style>\r\n","<template>\r\n <a-modal\r\n title=\"配置关联组件排序\"\r\n :visible=\"visible\"\r\n destroy-on-close\r\n width=\"30%\"\r\n :bodyStyle=\"{\r\n overflow: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n paddingTop: '10px'\r\n }\"\r\n :closable=\"false\"\r\n @ok=\"onOk\"\r\n @cancel=\"onCancel\"\r\n >\r\n <div class=\"sort-by-cpnt\">\r\n <div style=\"word-break: keep-all;\">控件:</div>\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"fieldName\"\r\n mode=\"multiple\"\r\n style=\"width: 100%;\"\r\n :options=\"usedComponentList\"\r\n :fieldNames=\"{\r\n label: 'keyName',\r\n value: 'id'\r\n }\"\r\n show-search\r\n :filter-option=\"idFilterOption\"\r\n />\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, unref, computed } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Modal as AModal\r\n} from 'ant-design-vue'\r\nimport {\r\n GRAPHIC_CONFIG,\r\n UPDATE_GRAPHIC_CONFIG,\r\n RENDER_USED_COMPONENTS,\r\n SELECTED_COMPONENT,\r\n UPDATE_USED_COMPONENT\r\n} from '@/utils/constant'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport { getEventName, getConditions } from '@/utils/util'\r\nexport default defineComponent({\r\n name: 'SortByCpnt',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n // 卡片类型\r\n type: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AModal\r\n },\r\n setup (props, { expose }) {\r\n const visible = ref(false)\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const updateUsedComponent = inject(UPDATE_USED_COMPONENT) as any\r\n const fieldName = ref()\r\n const usedComponentList = computed(() => {\r\n return unref(renderUsedComponents)?.filter((usedComponent) => {\r\n return usedComponent.keyName !== ''\r\n })\r\n })\r\n let oldData = []\r\n const showModal = (item: any) => {\r\n const { sortCpnts = [] } = item\r\n oldData = cloneDeep(sortCpnts)\r\n fieldName.value = cloneDeep(sortCpnts)\r\n visible.value = true\r\n }\r\n const hideModal = () => {\r\n visible.value = false\r\n }\r\n\r\n // 设置关联组件的交互事件\r\n const setEvent = () => {\r\n const controlList = getConditions(unref(graphicConfig)?.controlList || [])\r\n // 待删除的交互组件\r\n const pendingDelete =\r\n oldData\r\n .filter(v => !unref(fieldName).includes(v))\r\n .filter(v => !controlList.find(f => f.id === v))\r\n // 待新增的交互组件\r\n const pendingAdd =\r\n unref(fieldName)\r\n .filter(v => !oldData.includes(v))\r\n .filter(v => !controlList.find(f => f.id === v))\r\n const result: any = pendingDelete.map(v => {\r\n return {\r\n componentId: v,\r\n delete: true\r\n }\r\n }).concat(pendingAdd.map(v => {\r\n return {\r\n componentId: v,\r\n add: true\r\n }\r\n }))\r\n for (const item of result) {\r\n const component = unref(renderUsedComponents).find(v => v.id === item.componentId)\r\n if (component) {\r\n const { type, id, events = [] } = component\r\n const event = getEventName(type)\r\n if (item.add) {\r\n if (!events.find((e: any) =>\r\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')) {\r\n updateUsedComponent({\r\n id,\r\n events: [...events, {\r\n on: event,\r\n target: unref(selectedComponent)?.id,\r\n emit: 'refreshData'\r\n }].reverse()\r\n })\r\n }\r\n } else if (item.delete) {\r\n const index = events.findIndex((e: any) =>\r\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')\r\n if (index !== -1) {\r\n events.splice(index, 1)\r\n updateUsedComponent({\r\n id,\r\n events\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const onOk = () => {\r\n setEvent()\r\n const list = (unref(graphicConfig)[props.type])?.slice() || []\r\n list[props.index].sortCpnts = fieldName.value\r\n updateGraphicConfig({\r\n [props.type]: list\r\n })\r\n hideModal()\r\n }\r\n const onCancel = () => {\r\n hideModal()\r\n }\r\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\r\n return option?.keyName?.toLowerCase().includes(inputValue?.toLowerCase())\r\n }\r\n expose({\r\n showModal\r\n })\r\n return {\r\n visible,\r\n onOk,\r\n onCancel,\r\n idFilterOption,\r\n fieldName,\r\n usedComponentList\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.sort-by-cpnt {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 10px;\r\n}\r\n</style>\r\n","<template>\r\n <a-modal\r\n title=\"配置关联组件排序\"\r\n :visible=\"visible\"\r\n destroy-on-close\r\n width=\"30%\"\r\n :bodyStyle=\"{\r\n overflow: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n paddingTop: '10px'\r\n }\"\r\n :closable=\"false\"\r\n @ok=\"onOk\"\r\n @cancel=\"onCancel\"\r\n >\r\n <div class=\"sort-by-cpnt\">\r\n <div style=\"word-break: keep-all;\">控件:</div>\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"fieldName\"\r\n mode=\"multiple\"\r\n style=\"width: 100%;\"\r\n :options=\"usedComponentList\"\r\n :fieldNames=\"{\r\n label: 'keyName',\r\n value: 'id'\r\n }\"\r\n show-search\r\n :filter-option=\"idFilterOption\"\r\n />\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, unref, computed } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Modal as AModal\r\n} from 'ant-design-vue'\r\nimport {\r\n GRAPHIC_CONFIG,\r\n UPDATE_GRAPHIC_CONFIG,\r\n RENDER_USED_COMPONENTS,\r\n SELECTED_COMPONENT,\r\n UPDATE_USED_COMPONENT\r\n} from '@/utils/constant'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport { getEventName, getConditions } from '@/utils/util'\r\nexport default defineComponent({\r\n name: 'SortByCpnt',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n // 卡片类型\r\n type: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AModal\r\n },\r\n setup (props, { expose }) {\r\n const visible = ref(false)\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const updateUsedComponent = inject(UPDATE_USED_COMPONENT) as any\r\n const fieldName = ref()\r\n const usedComponentList = computed(() => {\r\n return unref(renderUsedComponents)?.filter((usedComponent) => {\r\n return usedComponent.keyName !== ''\r\n })\r\n })\r\n let oldData = []\r\n const showModal = (item: any) => {\r\n const { sortCpnts = [] } = item\r\n oldData = cloneDeep(sortCpnts)\r\n fieldName.value = cloneDeep(sortCpnts)\r\n visible.value = true\r\n }\r\n const hideModal = () => {\r\n visible.value = false\r\n }\r\n\r\n // 设置关联组件的交互事件\r\n const setEvent = () => {\r\n const controlList = getConditions(unref(graphicConfig)?.controlList || [])\r\n // 待删除的交互组件\r\n const pendingDelete =\r\n oldData\r\n .filter(v => !unref(fieldName).includes(v))\r\n .filter(v => !controlList.find(f => f.id === v))\r\n // 待新增的交互组件\r\n const pendingAdd =\r\n unref(fieldName)\r\n .filter(v => !oldData.includes(v))\r\n .filter(v => !controlList.find(f => f.id === v))\r\n const result: any = pendingDelete.map(v => {\r\n return {\r\n componentId: v,\r\n delete: true\r\n }\r\n }).concat(pendingAdd.map(v => {\r\n return {\r\n componentId: v,\r\n add: true\r\n }\r\n }))\r\n for (const item of result) {\r\n const component = unref(renderUsedComponents).find(v => v.id === item.componentId)\r\n if (component) {\r\n const { type, id, events = [] } = component\r\n const event = getEventName(type)\r\n if (item.add) {\r\n if (!events.find((e: any) =>\r\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')) {\r\n updateUsedComponent({\r\n id,\r\n events: [...events, {\r\n on: event,\r\n target: unref(selectedComponent)?.id,\r\n emit: 'refreshData'\r\n }].reverse()\r\n })\r\n }\r\n } else if (item.delete) {\r\n const index = events.findIndex((e: any) =>\r\n e.on === event && e.target === unref(selectedComponent)?.id && e.emit === 'refreshData')\r\n if (index !== -1) {\r\n events.splice(index, 1)\r\n updateUsedComponent({\r\n id,\r\n events\r\n })\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n const onOk = () => {\r\n setEvent()\r\n const list = (unref(graphicConfig)[props.type])?.slice() || []\r\n list[props.index].sortCpnts = fieldName.value\r\n updateGraphicConfig({\r\n [props.type]: list\r\n })\r\n hideModal()\r\n }\r\n const onCancel = () => {\r\n hideModal()\r\n }\r\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\r\n return option?.keyName?.toLowerCase().includes(inputValue?.toLowerCase())\r\n }\r\n expose({\r\n showModal\r\n })\r\n return {\r\n visible,\r\n onOk,\r\n onCancel,\r\n idFilterOption,\r\n fieldName,\r\n usedComponentList\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.sort-by-cpnt {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 10px;\r\n}\r\n</style>\r\n","<template>\r\n <a-modal\r\n title=\"配置关联维度\"\r\n :visible=\"visible\"\r\n destroy-on-close\r\n width=\"30%\"\r\n :bodyStyle=\"{\r\n overflow: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n paddingTop: '10px'\r\n }\"\r\n :closable=\"false\"\r\n @ok=\"onOk\"\r\n @cancel=\"onCancel\"\r\n >\r\n <div class=\"dim-by-count\">\r\n <div style=\"word-break: keep-all;\">维度:</div>\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"fieldName\"\r\n style=\"width: 100%;\"\r\n :options=\"dimensionList\"\r\n show-search\r\n :filter-option=\"idFilterOption\"\r\n />\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, unref } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Modal as AModal\r\n} from 'ant-design-vue'\r\nimport {\r\n GRAPHIC_CONFIG,\r\n UPDATE_GRAPHIC_CONFIG\r\n} from '@/utils/constant'\r\n// import { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'DimByCount',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n // 卡片类型\r\n type: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AModal\r\n },\r\n setup (props, { expose }) {\r\n const visible = ref(false)\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const fieldName = ref()\r\n const dimensionList = ref([])\r\n\r\n const showModal = (item: any, columns: any) => {\r\n const { dimByCount = '' } = item\r\n fieldName.value = dimByCount\r\n dimensionList.value = columns\r\n .filter((v: any) => ['DIM', 'BUILT_IN_DIM', 'FIELD'].includes(v.scope))\r\n .map((v: any) => ({\r\n label: v.title || v.name,\r\n value: v.typeGuid\r\n }))\r\n visible.value = true\r\n }\r\n const hideModal = () => {\r\n visible.value = false\r\n }\r\n\r\n const onOk = () => {\r\n const list = (unref(graphicConfig)[props.type])?.slice() || []\r\n list[props.index].dimByCount = fieldName.value\r\n updateGraphicConfig({\r\n [props.type]: list\r\n })\r\n hideModal()\r\n }\r\n const onCancel = () => {\r\n hideModal()\r\n }\r\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\r\n return option?.label?.toLowerCase().includes(inputValue?.toLowerCase())\r\n }\r\n expose({\r\n showModal\r\n })\r\n return {\r\n visible,\r\n onOk,\r\n onCancel,\r\n idFilterOption,\r\n fieldName,\r\n dimensionList\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.dim-by-count {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 10px;\r\n}\r\n</style>\r\n","<template>\r\n <a-modal\r\n title=\"配置关联维度\"\r\n :visible=\"visible\"\r\n destroy-on-close\r\n width=\"30%\"\r\n :bodyStyle=\"{\r\n overflow: 'auto',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n position: 'relative',\r\n paddingTop: '10px'\r\n }\"\r\n :closable=\"false\"\r\n @ok=\"onOk\"\r\n @cancel=\"onCancel\"\r\n >\r\n <div class=\"dim-by-count\">\r\n <div style=\"word-break: keep-all;\">维度:</div>\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"fieldName\"\r\n style=\"width: 100%;\"\r\n :options=\"dimensionList\"\r\n show-search\r\n :filter-option=\"idFilterOption\"\r\n />\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, unref } from 'vue'\r\nimport {\r\n Select as ASelect,\r\n Modal as AModal\r\n} from 'ant-design-vue'\r\nimport {\r\n GRAPHIC_CONFIG,\r\n UPDATE_GRAPHIC_CONFIG\r\n} from '@/utils/constant'\r\n// import { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'DimByCount',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 0\r\n },\r\n // 卡片类型\r\n type: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n components: {\r\n ASelect,\r\n AModal\r\n },\r\n setup (props, { expose }) {\r\n const visible = ref(false)\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const fieldName = ref()\r\n const dimensionList = ref([])\r\n\r\n const showModal = (item: any, columns: any) => {\r\n const { dimByCount = '' } = item\r\n fieldName.value = dimByCount\r\n dimensionList.value = columns\r\n .filter((v: any) => ['DIM', 'BUILT_IN_DIM', 'FIELD'].includes(v.scope))\r\n .map((v: any) => ({\r\n label: v.title || v.name,\r\n value: v.typeGuid\r\n }))\r\n visible.value = true\r\n }\r\n const hideModal = () => {\r\n visible.value = false\r\n }\r\n\r\n const onOk = () => {\r\n const list = (unref(graphicConfig)[props.type])?.slice() || []\r\n list[props.index].dimByCount = fieldName.value\r\n updateGraphicConfig({\r\n [props.type]: list\r\n })\r\n hideModal()\r\n }\r\n const onCancel = () => {\r\n hideModal()\r\n }\r\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\r\n return option?.label?.toLowerCase().includes(inputValue?.toLowerCase())\r\n }\r\n expose({\r\n showModal\r\n })\r\n return {\r\n visible,\r\n onOk,\r\n onCancel,\r\n idFilterOption,\r\n fieldName,\r\n dimensionList\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.dim-by-count {\r\n display: flex;\r\n align-items: center;\r\n padding-top: 10px;\r\n}\r\n</style>\r\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 style=\"text-align: center;padding: 10px 0;\">\n <a-radio-group v-model:value=\"activeKey\" size=\"small\">\n <a-radio-button value=\"1\">数值字段({{ fieldList.length }})</a-radio-button>\n <a-radio-button value=\"2\">全局变量({{ varList.length }})</a-radio-button>\n </a-radio-group>\n </div>\n <template v-if=\"activeKey === '1'\">\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 </template>\n <template v-if=\"activeKey === '2'\">\n <div\n class=\"field\"\n v-for=\"(variabled, index) in varList\"\n :key=\"index\"\n @click=\"selectedElem(variabled.variableName, 'name')\"\n >\n {{ variabled.variableName }}\n </div>\n </template>\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, describe, exp }\">\n <a-tooltip placement=\"top\">\n <template #title v-if=\"leaf\">\n <div>\n <span style=\"font-weight: bold;\">描述:</span>\n <span>{{ describe }}</span>\n </div>\n <div>\n <span style=\"font-weight: bold;\">示例:</span>\n <span>{{ exp }}</span>\n </div>\n </template>\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 </a-tooltip>\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, PropType } from 'vue'\nimport { GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport {\n RadioGroup as ARadioGroup,\n RadioButton as ARadioButton,\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 mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea,\n APopover,\n AInputSearch,\n ATree,\n ARadioGroup,\n ARadioButton,\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 variableList = computed(() => unref(graphicConfig).variableList || [])\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 indexLibColumns = computed(() => unref(graphicConfig).indexLibColumns || [])\n const fieldList = computed(() => {\n let fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n if (unref(indexLibColumns)?.length) {\n fieldList = unref(queryColumnList)\n .concat(unref(indexLibColumns)) as { [key: string]: any }[]\n }\n // 公式计算需要过滤不是数字类型的字段\n // return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n if (props.mode === 'edit') {\n return fieldList?.filter((field) => field.id !== props.item?.id) || []\n }\n return fieldList || []\n })\n\n const varList = computed(() =>\n variableList.value.filter((v: any) => !v.randomKey))\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 activeKey = ref('1')\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 varList,\n myValue,\n calculMethods,\n funcDescsData,\n searchFuncValue,\n expandedKeys,\n autoExpandParent,\n activeKey,\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-bottom: 10px;\n padding-left: 15px;\n font-weight: 500;\n cursor: pointer;\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: 260px;\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 style=\"text-align: center;padding: 10px 0;\">\n <a-radio-group v-model:value=\"activeKey\" size=\"small\">\n <a-radio-button value=\"1\">数值字段({{ fieldList.length }})</a-radio-button>\n <a-radio-button value=\"2\">全局变量({{ varList.length }})</a-radio-button>\n </a-radio-group>\n </div>\n <template v-if=\"activeKey === '1'\">\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 </template>\n <template v-if=\"activeKey === '2'\">\n <div\n class=\"field\"\n v-for=\"(variabled, index) in varList\"\n :key=\"index\"\n @click=\"selectedElem(variabled.variableName, 'name')\"\n >\n {{ variabled.variableName }}\n </div>\n </template>\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, describe, exp }\">\n <a-tooltip placement=\"top\">\n <template #title v-if=\"leaf\">\n <div>\n <span style=\"font-weight: bold;\">描述:</span>\n <span>{{ describe }}</span>\n </div>\n <div>\n <span style=\"font-weight: bold;\">示例:</span>\n <span>{{ exp }}</span>\n </div>\n </template>\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 </a-tooltip>\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, PropType } from 'vue'\nimport { GRAPHIC_CONFIG, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport {\n RadioGroup as ARadioGroup,\n RadioButton as ARadioButton,\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 mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea,\n APopover,\n AInputSearch,\n ATree,\n ARadioGroup,\n ARadioButton,\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 variableList = computed(() => unref(graphicConfig).variableList || [])\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 indexLibColumns = computed(() => unref(graphicConfig).indexLibColumns || [])\n const fieldList = computed(() => {\n let fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n if (unref(indexLibColumns)?.length) {\n fieldList = unref(queryColumnList)\n .concat(unref(indexLibColumns)) as { [key: string]: any }[]\n }\n // 公式计算需要过滤不是数字类型的字段\n // return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n if (props.mode === 'edit') {\n return fieldList?.filter((field) => field.id !== props.item?.id) || []\n }\n return fieldList || []\n })\n\n const varList = computed(() =>\n variableList.value.filter((v: any) => !v.randomKey))\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 activeKey = ref('1')\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 varList,\n myValue,\n calculMethods,\n funcDescsData,\n searchFuncValue,\n expandedKeys,\n autoExpandParent,\n activeKey,\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-bottom: 10px;\n padding-left: 15px;\n font-weight: 500;\n cursor: pointer;\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: 260px;\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 v-show=\"type !== 'indexLibColumns'\"\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-option value=\"COMPONENT\">固定值</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 :mode=\"mode\"\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-option value=\"FIRST_ROW_RATE\"\n >首行占比</a-select-option\n >\n <a-select-option value=\"DATE_OFFSET\"\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.label\"\n :disabled=\"mode === 'edit' && 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 v-if=\"!['FIRST_ROW_RATE', 'DATE_OFFSET'].includes(formState.builtInFormula)\"\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 v-if=\"!['FIRST_ROW_RATE', 'DATE_OFFSET'].includes(formState.builtInFormula)\"\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 <template v-if=\"formState.calcType === 'COMPONENT'\">\n <a-form-item\n label=\"数值来自\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n show-search\n v-model:value=\"formState.builtInValueSource\"\n :filter-option=\"filterOption\"\n :options=\"componentList\"\n :fieldNames=\"{ value: 'id', label: 'keyName' }\"\n @change=\"onChangeComponent\"\n ></a-select>\n </a-form-item>\n </template>\n <template v-if=\"formState.builtInFormula === 'DATE_OFFSET'\">\n <a-form-item\n label=\"偏移设置\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <div style=\"display: flex;align-items: center;\">\n <a-input-number\n v-model:value=\"offsetConfig.value\"\n style=\"width: 120px;margin-right: 10px;\"\n @change=\"onChange\"\n ></a-input-number>\n <a-select\n v-model:value=\"offsetConfig.unit\"\n style=\"width: 120px;margin-right: 10px;\"\n @change=\"onChange\"\n >\n <a-select-option value=\"YEAR\">年</a-select-option>\n <a-select-option value=\"MONTH\">月</a-select-option>\n <a-select-option value=\"DAY\">天</a-select-option>\n </a-select>\n <a-select\n v-model:value=\"offsetConfig.around\"\n style=\"width: 120px;\"\n @change=\"onChange\"\n >\n <a-select-option value=\"before\">前</a-select-option>\n <a-select-option value=\"after\">后</a-select-option>\n </a-select>\n <a-tooltip\n title=\"内置公式【日期偏移】,依赖于【全局过滤】中的时间条件,若没有配置则不会进行偏移计算\"\n overlayClassName=\"question-tooltip\"\n color=\"#fff\"\n >\n <question-circle-outlined class=\"icon\" style=\"color: #40a9ff;font-size: 18px;cursor: pointer;margin-left: 10px;\"/>\n </a-tooltip>\n </div>\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 InputNumber as AInputNumber,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea,\n Tooltip as ATooltip\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, RENDER_USED_COMPONENTS, SELECTED_COMPONENT } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport type { Rule } from 'ant-design-vue/es/form'\nimport { QuestionCircleOutlined } from '@ant-design/icons-vue'\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\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 AInputNumber,\n ATooltip,\n QuestionCircleOutlined\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 renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const componentList = computed(() => unref(renderUsedComponents))\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 defaultConfig = {\n value: 0,\n unit: 'YEAR',\n around: 'before'\n }\n const offsetConfig = ref<any>({})\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 if (builtInFormula === 'DATE_OFFSET') {\n // 日期偏移\n const list = builtInCalcWay.split('-')\n if (list?.length === 3) {\n offsetConfig.value = {\n value: list[0],\n unit: list[1],\n around: list[2]\n }\n }\n }\n } else if (props.mode === 'add') {\n formState.value = cloneDeep(formDefaultValue)\n offsetConfig.value = cloneDeep(defaultConfig)\n }\n } else {\n formState.value = cloneDeep(formDefaultValue)\n offsetConfig.value = cloneDeep(defaultConfig)\n }\n if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!value)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const onChangeComponent = (value: string) => {\n const option = unref(componentList).find(v => v.id === value)\n if (option) {\n formState.value.builtInCalcWay = option.keyName\n }\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label, builtInFormula } = unref(formState) || {}\n const offset: any = {}\n if (builtInFormula === 'DATE_OFFSET') {\n offset.builtInCalcWay = `${unref(offsetConfig).value}-${unref(offsetConfig).unit}-${unref(offsetConfig).around}`\n }\n if (props.mode === 'add') {\n const id = nanoid()\n if (lowerCaseIncludes(unref(selectedComponent).type, ['indexPanel'])) {\n list.forEach((v: any) => {\n v.show = false\n })\n }\n list.push({\n ...unref(formState),\n ...offset,\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 ...offset,\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 const filterOption = (input: string, option: any) => {\n return option.keyName.toLowerCase().indexOf(input.toLowerCase()) >= 0\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 componentList,\n onChangeComponent,\n filterOption,\n offsetConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.accesstip{\n color: #3f8ce8;\n}\n</style>\n<style lang=\"less\">\n.question-tooltip .ant-tooltip-inner {\n color: #333;\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 v-show=\"type !== 'indexLibColumns'\"\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-option value=\"COMPONENT\">固定值</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 :mode=\"mode\"\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-option value=\"FIRST_ROW_RATE\"\n >首行占比</a-select-option\n >\n <a-select-option value=\"DATE_OFFSET\"\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.label\"\n :disabled=\"mode === 'edit' && 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 v-if=\"!['FIRST_ROW_RATE', 'DATE_OFFSET'].includes(formState.builtInFormula)\"\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 v-if=\"!['FIRST_ROW_RATE', 'DATE_OFFSET'].includes(formState.builtInFormula)\"\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 <template v-if=\"formState.calcType === 'COMPONENT'\">\n <a-form-item\n label=\"数值来自\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n name=\"builtInValueSource\"\n >\n <a-select\n show-search\n v-model:value=\"formState.builtInValueSource\"\n :filter-option=\"filterOption\"\n :options=\"componentList\"\n :fieldNames=\"{ value: 'id', label: 'keyName' }\"\n @change=\"onChangeComponent\"\n ></a-select>\n </a-form-item>\n </template>\n <template v-if=\"formState.builtInFormula === 'DATE_OFFSET'\">\n <a-form-item\n label=\"偏移设置\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <div style=\"display: flex;align-items: center;\">\n <a-input-number\n v-model:value=\"offsetConfig.value\"\n style=\"width: 120px;margin-right: 10px;\"\n @change=\"onChange\"\n ></a-input-number>\n <a-select\n v-model:value=\"offsetConfig.unit\"\n style=\"width: 120px;margin-right: 10px;\"\n @change=\"onChange\"\n >\n <a-select-option value=\"YEAR\">年</a-select-option>\n <a-select-option value=\"MONTH\">月</a-select-option>\n <a-select-option value=\"DAY\">天</a-select-option>\n </a-select>\n <a-select\n v-model:value=\"offsetConfig.around\"\n style=\"width: 120px;\"\n @change=\"onChange\"\n >\n <a-select-option value=\"before\">前</a-select-option>\n <a-select-option value=\"after\">后</a-select-option>\n </a-select>\n <a-tooltip\n title=\"内置公式【日期偏移】,依赖于【全局过滤】中的时间条件,若没有配置则不会进行偏移计算\"\n overlayClassName=\"question-tooltip\"\n color=\"#fff\"\n >\n <question-circle-outlined class=\"icon\" style=\"color: #40a9ff;font-size: 18px;cursor: pointer;margin-left: 10px;\"/>\n </a-tooltip>\n </div>\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 InputNumber as AInputNumber,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea,\n Tooltip as ATooltip\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, RENDER_USED_COMPONENTS, SELECTED_COMPONENT } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport type { Rule } from 'ant-design-vue/es/form'\nimport { QuestionCircleOutlined } from '@ant-design/icons-vue'\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\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 AInputNumber,\n ATooltip,\n QuestionCircleOutlined\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 renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const componentList = computed(() => unref(renderUsedComponents))\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 defaultConfig = {\n value: 0,\n unit: 'YEAR',\n around: 'before'\n }\n const offsetConfig = ref<any>({})\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 if (builtInFormula === 'DATE_OFFSET') {\n // 日期偏移\n const list = builtInCalcWay.split('-')\n if (list?.length === 3) {\n offsetConfig.value = {\n value: list[0],\n unit: list[1],\n around: list[2]\n }\n }\n }\n } else if (props.mode === 'add') {\n formState.value = cloneDeep(formDefaultValue)\n offsetConfig.value = cloneDeep(defaultConfig)\n }\n } else {\n formState.value = cloneDeep(formDefaultValue)\n offsetConfig.value = cloneDeep(defaultConfig)\n }\n if ((window as any).changeShowTable) {\n (window as any).changeShowTable(!value)\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const onChangeComponent = (value: string) => {\n const option = unref(componentList).find(v => v.id === value)\n if (option) {\n formState.value.builtInCalcWay = option.keyName\n }\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label, builtInFormula } = unref(formState) || {}\n const offset: any = {}\n if (builtInFormula === 'DATE_OFFSET') {\n offset.builtInCalcWay = `${unref(offsetConfig).value}-${unref(offsetConfig).unit}-${unref(offsetConfig).around}`\n }\n if (props.mode === 'add') {\n const id = nanoid()\n if (lowerCaseIncludes(unref(selectedComponent).type, ['indexPanel'])) {\n list.forEach((v: any) => {\n v.show = false\n })\n }\n list.push({\n ...unref(formState),\n ...offset,\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 ...offset,\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 const filterOption = (input: string, option: any) => {\n return option.keyName.toLowerCase().indexOf(input.toLowerCase()) >= 0\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 componentList,\n onChangeComponent,\n filterOption,\n offsetConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.accesstip{\n color: #3f8ce8;\n}\n</style>\n<style lang=\"less\">\n.question-tooltip .ant-tooltip-inner {\n color: #333;\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 :mode=\"lowerCaseIncludes(selectedComponent.type, 'valueline') ? 'multiple' : undefined\"\n @change=\"onFieldChange($event, 'valueField')\"\n >\n </a-select>\n </div>\n <div class=\"field-item\" v-if=\"selectedComponent.type === 'ecanSelect'\">\n <div class=\"item-label\" style=\"width: 20px;\"></div>\n <a-checkbox v-model:checked=\"fieldData.hasAllOption\">\n 显示【全部】选项\n </a-checkbox>\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\">\n {{ title }}\n <template v-if=\"type === 'dimensionList'\">\n <a-popover title=\"提示\" placement=\"topLeft\">\n <template #content>\n <p>配置了维度后,会使用返回数据的第一条中以【维度名】为key的值作为显示值</p>\n </template>\n <info-circle-outlined style=\"color: #919191;cursor: pointer;\" />\n </a-popover>\n </template>\n </div>\n <div\n class=\"add-calculation\"\n v-if=\"isShowCalcBtn\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n <a-checkbox\n v-else-if=\"isIndexSet\"\n v-model:checked=\"compositeIndicator\"\n >复合指标</a-checkbox>\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 :disabled=\"type === 'indexLibColumns'\"\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, cardItem.label)\"\n @pressEnter=\"onCommitLabelChange($event, index, cardItem.label)\"\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', 'COMPONENT'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\" @visibleChange=\"onVisibleChange($event, cardItem)\" v-if=\"type !== 'indexLibColumns'\">\n <setting-outlined class=\"setting-icon\" @click=\"onClickSetting(cardItem)\"/>\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"dimensionType.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-DD') ? '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 v-if=\"!dimensionType.includes(type)\">\n <!-- 指标排序 -->\n <a-sub-menu :title=\"handleIndSortTitle(cardItem.sort)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sort in indSortList\"\n :key=\"sort.value\"\n @click=\"onIndSortChange(sort.value, index)\"\n >\n <span\n :style=\"cardItem.sort && cardItem.sort === sort.value ? 'color: #1890FF;' : ''\">\n {{ sort.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n\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 <!-- 展示名称 -->\n <template v-if=\"isShowConfigName\">\n <a-menu-item @click=\"showConfigNameModal(cardItem, index)\">\n 修改展示名称\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 关联组件排序 -->\n <template v-if=\"isShowSortByCpnt\">\n <a-menu-item @click=\"showSortByCpntModal(cardItem, index)\">\n 关联组件排序\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 计数(内置)指标关联维度 -->\n <template v-if=\"cardItem.name === 'the_count'\">\n <a-menu-item @click=\"showDimByCountModal(cardItem, index)\">\n 关联维度\n </a-menu-item>\n <a-menu-divider />\n <a-sub-menu :title=\"handleDistinctTitle(cardItem.distinct)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"distinct in distinctList\"\n :key=\"distinct.value\"\n @click=\"onDistinctChange(distinct.value, index)\"\n >\n {{ distinct.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n <!-- 指标名 -->\n <template v-if=\"!dimensionType.includes(type)\">\n <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name].name)\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name].name\">\n <span style=\"font-weight: bold;\">指标名:</span>\n {{ dataViewMap[cardItem.name].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 <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name].code)\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name].code\">\n <span style=\"font-weight: bold;\">指标编码:</span>\n {{ dataViewMap[cardItem.name].code }}\n </span>\n <copy-outlined\n style=\"color: #52C41A;margin-left: 10px;\"\n title=\"点击复制\"\n />\n </div>\n </a-menu-item>\n </template>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n v-if=\"type !== 'indexLibColumns' || cardItem.calcType === 'FORMULA'\"\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 :sortList=\"sortList\"\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 <config-name\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"configNameRef\"\n />\n <sort-by-cpnt\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"sortByCpntRef\"\n />\n <dim-by-count\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"dimByCountRef\"\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 Popover as APopover,\n message\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined,\n CopyOutlined,\n InfoCircleOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport {\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n SOURCE_TYPE,\n SELECTED_COMPONENT,\n RENDER_USED_COMPONENTS\n} from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport ConfigName from './config-name'\nimport SortByCpnt from './sort-by-cpnt'\nimport DimByCount from './dim-by-count'\nimport CalculationModal from './calculation-modal'\nimport Draggable from 'vuedraggable'\nimport { handleVariableList } from '@/utils/util'\nimport { hasOwn, lowerCaseIncludes } from '@ecan-bi/tools'\nimport { cloneDeep } from 'lodash-es'\nimport { nanoid } from 'nanoid'\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 InfoCircleOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider,\n ASelect,\n APopover,\n Draggable,\n ConfigName,\n SortByCpnt,\n DimByCount\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 indSortList = [\n { label: '升序', value: 'ASC' },\n { label: '降序', value: 'DESC' },\n { label: '无', value: '' }\n ]\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const idxList = ['leftAxisList', 'rightAxisList', 'indicators']\n const dimList = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList', 'dimensionList']\n const indexSetList = ['CURRENT', 'LAST_CYCLE', 'LAST_YEAR', 'PERIOD_ON_PERIOD', 'YEAR_ON_YEAR', 'DW']\n const source = inject(SOURCE_TYPE)\n const currentCardItem = ref()\n // const variableList = computed(() => {\n // const list = unref(graphicConfig)?.variableList || []\n // return list\n // })\n\n const compositeIndicator = computed({\n get () {\n return unref(graphicConfig)?.compositeIndicator || false\n },\n set (val: boolean) {\n updateGraphicConfig({\n compositeIndicator: val\n })\n }\n })\n\n const isAllowAdd = (data: any = {}) => {\n const { type } = props\n if (unref(source) === 'SQL_VIEW') {\n // 视图不需要判断\n return true\n }\n if (unref(source) === 'EDV_DATA_SET') {\n // 数据集需要多传一个edvDataSetId\n updateGraphicConfig({ edvDataSetId: data.parentId })\n }\n let result = false\n if (data.scope === 'FIELD') {\n // 数据集没有维度指标区分,指标库-数据集配置时,列信息需要真是字段类型(字符串0,数字1,日期2),字符串不可以拉到值轴上\n result = true\n if (data.genericType === '0' && idxList.includes(type)) {\n result = false\n }\n }\n if (['IDX', 'BUILT_IN_IDX'].includes(data.scope)) {\n if (idxList.includes(type)) {\n result = true\n }\n } else if (['DIM', 'BUILT_IN_DIM'].includes(data.scope)) {\n if (dimList.includes(type)) {\n result = true\n }\n }\n if (type === 'dimensionList') {\n // 只能拖一个维度\n const list = unref(graphicConfig)[type]?.slice() || []\n if (list?.length === 1) {\n result = false\n }\n }\n return result\n }\n const dataSelectIndicators = computed(() =>\n lowerCaseIncludes(unref(selectedComponent)?.type, ['dataSelect']) && props.type === 'indicators')\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 (\n props.type === 'seriesList' ||\n (props.type === 'classificationList' && !lowerCaseIncludes(unref(selectedComponent).type, ['list', 'circulate', 'scatter'])) ||\n unref(dataSelectIndicators) ||\n lowerCaseIncludes(unref(selectedComponent).type, ['indexPanel'])\n ) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n // 新增一个随机值作为唯一值,用于指标的内置变量的处理\n data.randomKey = nanoid()\n list.push(data)\n const { type } = props\n const varConfig: { [key: string]: any } = {}\n if (['IDX', 'BUILT_IN_IDX', 'FIELD'].includes(data.scope)) {\n const varList = unref(graphicConfig)?.variableList || []\n let variates = sessionStorage.getItem('indicator-variates')\n if (data.scope === 'FIELD' && !idxList.includes(type)) {\n variates = '[]'\n }\n if (variates) {\n const variableList = JSON.parse(variates)\n if (variableList?.length) {\n for (const val of variableList) {\n varList.unshift({\n ...val,\n dataType: '',\n id: null,\n variableValue: unref(source) === 'EDV_DATA_SET' ? val.defaultValue : null,\n dateTypeValue: null,\n format: val.valueFormat ? (val.valueFormat.toUpperCase() || null) : null,\n variableName: val.name,\n variableType: val.valueType,\n label: data.label,\n randomKey: data.randomKey,\n keyValue: nanoid(),\n disabled: unref(source) === 'EDV_DATA_SET'\n })\n }\n }\n }\n varConfig.variableList = varList\n varConfig.variableConditions = handleVariableList(varList, renderUsedComponents)\n }\n updateGraphicConfig({\n [props.type]: list,\n ...varConfig\n })\n sessionStorage.setItem('indicator-list-item', '')\n sessionStorage.setItem('indicator-variates', '')\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 (\n props.type === 'seriesList' ||\n (props.type === 'classificationList' && !lowerCaseIncludes(unref(selectedComponent).type, ['list', 'circulate'])) ||\n unref(dataSelectIndicators) ||\n lowerCaseIncludes(unref(selectedComponent).type, ['indexPanel'])\n ) {\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 = (e) => {\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 if (list[index]?.randomKey) {\n // 同步全部变量中的label\n const varList = unref(graphicConfig)?.variableList || []\n for (let i = varList.length - 1; i >= 0; i--) {\n if (varList[i].randomKey === list[index].randomKey) {\n varList.splice(i, 1)\n }\n }\n updateGraphicConfig({\n variableConditions: handleVariableList(varList, renderUsedComponents),\n variableList: varList\n })\n }\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, oldLabel: string) => {\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 const aboutFormulaIds = list.filter((v: any) => v?.formula?.includes(oldLabel)).map((v: any) => v.id)\n // 数值来源中有包含旧值的数据\n const aboutSourceIds = list.filter((v: any) => v?.builtInValueSource?.includes(oldLabel)).map((v: any) => v.id)\n if (aboutFormulaIds?.length) {\n for (const id of aboutFormulaIds) {\n const item = list.find((v: any) => v.id === id)\n item.formula = item.formula.replaceAll(oldLabel, value)\n }\n }\n if (aboutSourceIds?.length) {\n for (const id of aboutSourceIds) {\n const item = list.find((v: any) => v.id === id)\n item.builtInValueSource = item.builtInValueSource.replaceAll(oldLabel, value)\n }\n }\n // 限定单选\n list[index].label = value\n\n if (list[index]?.randomKey) {\n // 同步全部变量中的label\n const varList = unref(graphicConfig)?.variableList || []\n const targetList = varList.filter(v => v.randomKey === list[index].randomKey)\n if (targetList?.length) {\n targetList.forEach((item: any) => {\n item.label = value\n })\n }\n updateGraphicConfig({\n variableConditions: handleVariableList(varList, renderUsedComponents),\n variableList: varList\n })\n }\n\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n const codeDim = []\n const { scope } = unref(currentCardItem) || {}\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n // if (['DIM', 'BUILT_IN_DIM', 'FIELD'].includes(scope)) {\n // // 当前想要排序的是维度\n // list = list.filter((v: any) => v.label === label)\n // }\n if (scope === 'DIM' && !unref(currentCardItem).typeGuid.includes('_code')) {\n const cloneDim = cloneDeep(unref(currentCardItem))\n delete cloneDim.show\n delete cloneDim.truncations\n delete cloneDim.conditions\n cloneDim.hrpIndexComplexid += '_code'\n cloneDim.id += '_code'\n cloneDim.typeGuid += '_code'\n cloneDim.label = cloneDim.name + '_编码'\n cloneDim.name = cloneDim.typeGuid\n cloneDim.defaultCode = cloneDim.typeGuid\n codeDim.push(cloneDim)\n }\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 ...codeDim,\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, defaultCode } = 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 defaultCode\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(item)\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n // return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n return '排序' + (item?.sort ? '(已配置)' : '')\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 // 是否去重\n const distinctList = [\n {\n name: '是',\n value: 1\n },\n {\n name: '否',\n value: 0\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 onDistinctChange = (value: number, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].distinct = 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 onIndSortChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].sort = 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 handleIndSortTitle = (key: string) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n if (key) {\n return `排序(${map[key]})`\n } else {\n return '排序'\n }\n }\n\n const handleDistinctTitle = (\n key: 0 | 1\n ) => {\n const map = {\n 0: '否',\n 1: '是'\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 configNameRef = ref()\n const sortByCpntRef = ref()\n const dimByCountRef = 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 showConfigNameModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(configNameRef).showModal(item)\n }\n const showSortByCpntModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(sortByCpntRef).showModal(item)\n }\n const showDimByCountModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(dimByCountRef).showModal(item, unref(dataViewColumns))\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 watch(graphicConfig, () => {\n if (lowerCaseIncludes(unref(selectedComponent).type, ['scatter', 'valueline']) && unref(graphicConfig)?.indicators) {\n fieldOptions.value = unref(graphicConfig).indicators.map((v: any) => ({\n label: v.label,\n value: v.label\n }))\n }\n })\n\n watch(() => graphicConfig.value.classificationList, () => {\n getEdvFieldData()\n })\n\n const currentEdvId = ref('')\n const getEdvFieldData = async () => {\n const { source } = unref(graphicConfig)\n if (source !== 'EDV_DATA_SET') {\n return\n }\n if (!lowerCaseIncludes(unref(selectedComponent).type, 'select')) {\n return\n }\n const { classificationList = [] } = unref(graphicConfig)\n const target = classificationList.find((v: any) => v.show)\n if (target?.parentId) {\n if (unref(currentEdvId) === target.parentId) {\n return\n } else {\n currentEdvId.value = target.parentId\n }\n } else {\n unref(graphicConfig).selectFieldOptions = []\n fieldOptions.value = []\n currentEdvId.value = ''\n return\n }\n const res = await request.get(`${INDICATOR_URL}/dataset/` + target.parentId, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n const columnList = data.column.map(v => {\n return {\n label: v.columnName,\n value: v.columnName\n }\n })\n unref(graphicConfig).selectFieldOptions = columnList\n fieldOptions.value = columnList\n }\n }\n\n const getFieldData = async () => {\n const { source } = unref(graphicConfig)\n if (!lowerCaseIncludes(unref(selectedComponent).type, ['scatter', 'valueline'])) {\n try {\n if (source === 'EDV_DATA_SET') {\n await getEdvFieldData()\n } else {\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 unref(graphicConfig).selectFieldOptions = data || []\n fieldOptions.value = data\n }\n }\n } catch (e) {\n console.error(e)\n }\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 dimensionType = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList', 'dimensionList']\n const dataViewMap = ref({})\n const dataViewColumns = ref([])\n const onVisibleChange = async (visible: boolean, cardItem: any) => {\n const { name: itemName } = cardItem\n if (!dimensionType.includes(props.type) && visible && hasOwn(cardItem, 'indexCode')) {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n dataSourceId: '',\n indexGuid: cardItem.id,\n indexCode: cardItem.indexCode,\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 && data) {\n dataViewColumns.value = data?.dataViewColumns || []\n dataViewMap.value[itemName] = {\n name: data.name,\n code: data.indexCode\n }\n }\n }\n }\n const onClickSetting = (cardItem: any) => {\n currentCardItem.value = cardItem\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\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n // 是否需要显示展示名称的配置\n const isShowConfigName = computed(() => {\n if (props.type === 'indicators' && unref(selectedComponent).type === 'ecanTable') {\n return true\n } else {\n return false\n }\n })\n // 是否显示关联控件排序\n const isShowSortByCpnt = computed(() => {\n if (['indicators', 'classificationList', 'leftAxisList', 'rightAxisList'].includes(props.type)) {\n return true\n } else {\n return false\n }\n })\n\n const isIndexSet = computed(() => lowerCaseIncludes(unref(selectedComponent)?.type, ['table']) && unref(graphicConfig)?.isIndexSet)\n\n // 是否显示添加计算指标按钮\n const isShowCalcBtn = computed(() => {\n return !dimensionType.includes(props.type) && !unref(dataSelectIndicators) && (!unref(isIndexSet) || props.type !== 'indicators')\n })\n\n onMounted(() => {\n if (props.type === 'formFields') {\n if (unref(selectedComponent).type === 'ecanDataSelect') {\n fieldOptions.value = [\n {\n label: '维度编码',\n value: '_code'\n },\n {\n label: '维度值',\n value: '_value'\n }\n ]\n } else {\n getFieldData()\n }\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 distinctList,\n onAggregateChange,\n onDistinctChange,\n onDateFormatChange,\n onIndSortChange,\n handleAggregateTitle,\n handleDistinctTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n configNameRef,\n sortByCpntRef,\n dimByCountRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode,\n formatList,\n indSortList,\n fieldOptions,\n fieldData,\n onFieldChange,\n onVisibleChange,\n onClickSetting,\n copyDataViewName,\n dataViewMap,\n isShowConfigName,\n showConfigNameModal,\n dimensionType,\n isShowSortByCpnt,\n showSortByCpntModal,\n dataSelectIndicators,\n showDimByCountModal,\n selectedComponent,\n lowerCaseIncludes,\n isShowCalcBtn,\n isIndexSet,\n indexSetList,\n compositeIndicator,\n handleIndSortTitle\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 :mode=\"lowerCaseIncludes(selectedComponent.type, 'valueline') ? 'multiple' : undefined\"\n @change=\"onFieldChange($event, 'valueField')\"\n >\n </a-select>\n </div>\n <div class=\"field-item\" v-if=\"selectedComponent.type === 'ecanSelect'\">\n <div class=\"item-label\" style=\"width: 20px;\"></div>\n <a-checkbox v-model:checked=\"fieldData.hasAllOption\">\n 显示【全部】选项\n </a-checkbox>\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\">\n {{ title }}\n <template v-if=\"type === 'dimensionList'\">\n <a-popover title=\"提示\" placement=\"topLeft\">\n <template #content>\n <p>配置了维度后,会使用返回数据的第一条中以【维度名】为key的值作为显示值</p>\n </template>\n <info-circle-outlined style=\"color: #919191;cursor: pointer;\" />\n </a-popover>\n </template>\n </div>\n <div\n class=\"add-calculation\"\n v-if=\"isShowCalcBtn\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n <a-checkbox\n v-else-if=\"isIndexSet\"\n v-model:checked=\"compositeIndicator\"\n >复合指标</a-checkbox>\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 :disabled=\"type === 'indexLibColumns'\"\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, cardItem.label)\"\n @pressEnter=\"onCommitLabelChange($event, index, cardItem.label)\"\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', 'COMPONENT'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\" @visibleChange=\"onVisibleChange($event, cardItem)\" v-if=\"type !== 'indexLibColumns'\">\n <setting-outlined class=\"setting-icon\" @click=\"onClickSetting(cardItem)\"/>\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"dimensionType.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-DD') ? '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 v-if=\"!dimensionType.includes(type)\">\n <!-- 指标排序 -->\n <a-sub-menu :title=\"handleIndSortTitle(cardItem.sort)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sort in indSortList\"\n :key=\"sort.value\"\n @click=\"onIndSortChange(sort.value, index)\"\n >\n <span\n :style=\"cardItem.sort && cardItem.sort === sort.value ? 'color: #1890FF;' : ''\">\n {{ sort.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n\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 <!-- 展示名称 -->\n <template v-if=\"isShowConfigName\">\n <a-menu-item @click=\"showConfigNameModal(cardItem, index)\">\n 修改展示名称\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 关联组件排序 -->\n <template v-if=\"isShowSortByCpnt\">\n <a-menu-item @click=\"showSortByCpntModal(cardItem, index)\">\n 关联组件排序\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 计数(内置)指标关联维度 -->\n <template v-if=\"cardItem.name === 'the_count'\">\n <a-menu-item @click=\"showDimByCountModal(cardItem, index)\">\n 关联维度\n </a-menu-item>\n <a-menu-divider />\n <a-sub-menu :title=\"handleDistinctTitle(cardItem.distinct)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"distinct in distinctList\"\n :key=\"distinct.value\"\n @click=\"onDistinctChange(distinct.value, index)\"\n >\n {{ distinct.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n <!-- 指标名 -->\n <template v-if=\"!dimensionType.includes(type)\">\n <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name].name)\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name].name\">\n <span style=\"font-weight: bold;\">指标名:</span>\n {{ dataViewMap[cardItem.name].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 <template v-if=\"dataViewMap[cardItem.name]\">\n <a-menu-item @click=\"copyDataViewName(dataViewMap[cardItem.name].code)\">\n <div style=\"display: flex;align-items: center\">\n <span class=\"data-view-name\" :title=\"dataViewMap[cardItem.name].code\">\n <span style=\"font-weight: bold;\">指标编码:</span>\n {{ dataViewMap[cardItem.name].code }}\n </span>\n <copy-outlined\n style=\"color: #52C41A;margin-left: 10px;\"\n title=\"点击复制\"\n />\n </div>\n </a-menu-item>\n </template>\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n v-if=\"type !== 'indexLibColumns' || cardItem.calcType === 'FORMULA'\"\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 :sortList=\"sortList\"\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 <config-name\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"configNameRef\"\n />\n <sort-by-cpnt\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"sortByCpntRef\"\n />\n <dim-by-count\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"dimByCountRef\"\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 Popover as APopover,\n message\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined,\n CopyOutlined,\n InfoCircleOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport {\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n SOURCE_TYPE,\n SELECTED_COMPONENT,\n RENDER_USED_COMPONENTS\n} from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport ConfigName from './config-name'\nimport SortByCpnt from './sort-by-cpnt'\nimport DimByCount from './dim-by-count'\nimport CalculationModal from './calculation-modal'\nimport Draggable from 'vuedraggable'\nimport { handleVariableList } from '@/utils/util'\nimport { hasOwn, lowerCaseIncludes } from '@ecan-bi/tools'\nimport { cloneDeep } from 'lodash-es'\nimport { nanoid } from 'nanoid'\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 InfoCircleOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider,\n ASelect,\n APopover,\n Draggable,\n ConfigName,\n SortByCpnt,\n DimByCount\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 indSortList = [\n { label: '升序', value: 'ASC' },\n { label: '降序', value: 'DESC' },\n { label: '无', value: '' }\n ]\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const idxList = ['leftAxisList', 'rightAxisList', 'indicators']\n const dimList = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList', 'dimensionList']\n const indexSetList = ['CURRENT', 'LAST_CYCLE', 'LAST_YEAR', 'PERIOD_ON_PERIOD', 'YEAR_ON_YEAR', 'DW']\n const source = inject(SOURCE_TYPE)\n const currentCardItem = ref()\n // const variableList = computed(() => {\n // const list = unref(graphicConfig)?.variableList || []\n // return list\n // })\n\n const compositeIndicator = computed({\n get () {\n return unref(graphicConfig)?.compositeIndicator || false\n },\n set (val: boolean) {\n updateGraphicConfig({\n compositeIndicator: val\n })\n }\n })\n\n const isAllowAdd = (data: any = {}) => {\n const { type } = props\n if (unref(source) === 'SQL_VIEW') {\n // 视图不需要判断\n return true\n }\n if (unref(source) === 'EDV_DATA_SET') {\n // 数据集需要多传一个edvDataSetId\n updateGraphicConfig({ edvDataSetId: data.parentId })\n }\n let result = false\n if (data.scope === 'FIELD') {\n // 数据集没有维度指标区分,指标库-数据集配置时,列信息需要真是字段类型(字符串0,数字1,日期2),字符串不可以拉到值轴上\n result = true\n if (data.genericType === '0' && idxList.includes(type)) {\n result = false\n }\n }\n if (['IDX', 'BUILT_IN_IDX'].includes(data.scope)) {\n if (idxList.includes(type)) {\n result = true\n }\n } else if (['DIM', 'BUILT_IN_DIM'].includes(data.scope)) {\n if (dimList.includes(type)) {\n result = true\n }\n }\n if (type === 'dimensionList') {\n // 只能拖一个维度\n const list = unref(graphicConfig)[type]?.slice() || []\n if (list?.length === 1) {\n result = false\n }\n }\n return result\n }\n const dataSelectIndicators = computed(() =>\n lowerCaseIncludes(unref(selectedComponent)?.type, ['dataSelect']) && props.type === 'indicators')\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 (\n props.type === 'seriesList' ||\n (props.type === 'classificationList' && !lowerCaseIncludes(unref(selectedComponent).type, ['list', 'circulate', 'scatter'])) ||\n unref(dataSelectIndicators) ||\n lowerCaseIncludes(unref(selectedComponent).type, ['indexPanel'])\n ) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n // 新增一个随机值作为唯一值,用于指标的内置变量的处理\n data.randomKey = nanoid()\n list.push(data)\n const { type } = props\n const varConfig: { [key: string]: any } = {}\n if (['IDX', 'BUILT_IN_IDX', 'FIELD'].includes(data.scope)) {\n const varList = unref(graphicConfig)?.variableList || []\n let variates = sessionStorage.getItem('indicator-variates')\n if (data.scope === 'FIELD' && !idxList.includes(type)) {\n variates = '[]'\n }\n if (variates) {\n const variableList = JSON.parse(variates)\n if (variableList?.length) {\n for (const val of variableList) {\n varList.unshift({\n ...val,\n dataType: '',\n id: null,\n variableValue: unref(source) === 'EDV_DATA_SET' ? val.defaultValue : null,\n dateTypeValue: null,\n format: val.valueFormat ? (val.valueFormat.toUpperCase() || null) : null,\n variableName: val.name,\n variableType: val.valueType,\n label: data.label,\n randomKey: data.randomKey,\n keyValue: nanoid(),\n disabled: unref(source) === 'EDV_DATA_SET'\n })\n }\n }\n }\n varConfig.variableList = varList\n varConfig.variableConditions = handleVariableList(varList, renderUsedComponents)\n }\n updateGraphicConfig({\n [props.type]: list,\n ...varConfig\n })\n sessionStorage.setItem('indicator-list-item', '')\n sessionStorage.setItem('indicator-variates', '')\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 (\n props.type === 'seriesList' ||\n (props.type === 'classificationList' && !lowerCaseIncludes(unref(selectedComponent).type, ['list', 'circulate'])) ||\n unref(dataSelectIndicators) ||\n lowerCaseIncludes(unref(selectedComponent).type, ['indexPanel'])\n ) {\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 = (e) => {\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 if (list[index]?.randomKey) {\n // 同步全部变量中的label\n const varList = unref(graphicConfig)?.variableList || []\n for (let i = varList.length - 1; i >= 0; i--) {\n if (varList[i].randomKey === list[index].randomKey) {\n varList.splice(i, 1)\n }\n }\n updateGraphicConfig({\n variableConditions: handleVariableList(varList, renderUsedComponents),\n variableList: varList\n })\n }\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, oldLabel: string) => {\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 const aboutFormulaIds = list.filter((v: any) => v?.formula?.includes(oldLabel)).map((v: any) => v.id)\n // 数值来源中有包含旧值的数据\n const aboutSourceIds = list.filter((v: any) => v?.builtInValueSource?.includes(oldLabel)).map((v: any) => v.id)\n if (aboutFormulaIds?.length) {\n for (const id of aboutFormulaIds) {\n const item = list.find((v: any) => v.id === id)\n item.formula = item.formula.replaceAll(oldLabel, value)\n }\n }\n if (aboutSourceIds?.length) {\n for (const id of aboutSourceIds) {\n const item = list.find((v: any) => v.id === id)\n item.builtInValueSource = item.builtInValueSource.replaceAll(oldLabel, value)\n }\n }\n // 限定单选\n list[index].label = value\n\n if (list[index]?.randomKey) {\n // 同步全部变量中的label\n const varList = unref(graphicConfig)?.variableList || []\n const targetList = varList.filter(v => v.randomKey === list[index].randomKey)\n if (targetList?.length) {\n targetList.forEach((item: any) => {\n item.label = value\n })\n }\n updateGraphicConfig({\n variableConditions: handleVariableList(varList, renderUsedComponents),\n variableList: varList\n })\n }\n\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n const codeDim = []\n const { scope } = unref(currentCardItem) || {}\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n // if (['DIM', 'BUILT_IN_DIM', 'FIELD'].includes(scope)) {\n // // 当前想要排序的是维度\n // list = list.filter((v: any) => v.label === label)\n // }\n if (scope === 'DIM' && !unref(currentCardItem).typeGuid.includes('_code')) {\n const cloneDim = cloneDeep(unref(currentCardItem))\n delete cloneDim.show\n delete cloneDim.truncations\n delete cloneDim.conditions\n cloneDim.hrpIndexComplexid += '_code'\n cloneDim.id += '_code'\n cloneDim.typeGuid += '_code'\n cloneDim.label = cloneDim.name + '_编码'\n cloneDim.name = cloneDim.typeGuid\n cloneDim.defaultCode = cloneDim.typeGuid\n codeDim.push(cloneDim)\n }\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 ...codeDim,\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, defaultCode } = 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 defaultCode\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(item)\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n // return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n return '排序' + (item?.sort ? '(已配置)' : '')\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 // 是否去重\n const distinctList = [\n {\n name: '是',\n value: 1\n },\n {\n name: '否',\n value: 0\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 onDistinctChange = (value: number, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].distinct = 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 onIndSortChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].sort = 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 handleIndSortTitle = (key: string) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n if (key) {\n return `排序(${map[key]})`\n } else {\n return '排序'\n }\n }\n\n const handleDistinctTitle = (\n key: 0 | 1\n ) => {\n const map = {\n 0: '否',\n 1: '是'\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 configNameRef = ref()\n const sortByCpntRef = ref()\n const dimByCountRef = 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 showConfigNameModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(configNameRef).showModal(item)\n }\n const showSortByCpntModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(sortByCpntRef).showModal(item)\n }\n const showDimByCountModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(dimByCountRef).showModal(item, unref(dataViewColumns))\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 watch(graphicConfig, () => {\n if (lowerCaseIncludes(unref(selectedComponent).type, ['scatter', 'valueline']) && unref(graphicConfig)?.indicators) {\n fieldOptions.value = unref(graphicConfig).indicators.map((v: any) => ({\n label: v.label,\n value: v.label\n }))\n }\n })\n\n watch(() => graphicConfig.value.classificationList, () => {\n getEdvFieldData()\n })\n\n const currentEdvId = ref('')\n const getEdvFieldData = async () => {\n const { source } = unref(graphicConfig)\n if (source !== 'EDV_DATA_SET') {\n return\n }\n if (!lowerCaseIncludes(unref(selectedComponent).type, 'select')) {\n return\n }\n const { classificationList = [] } = unref(graphicConfig)\n const target = classificationList.find((v: any) => v.show)\n if (target?.parentId) {\n if (unref(currentEdvId) === target.parentId) {\n return\n } else {\n currentEdvId.value = target.parentId\n }\n } else {\n unref(graphicConfig).selectFieldOptions = []\n fieldOptions.value = []\n currentEdvId.value = ''\n return\n }\n const res = await request.get(`${INDICATOR_URL}/dataset/` + target.parentId, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n const columnList = data.column.map(v => {\n return {\n label: v.columnName,\n value: v.columnName\n }\n })\n unref(graphicConfig).selectFieldOptions = columnList\n fieldOptions.value = columnList\n }\n }\n\n const getFieldData = async () => {\n const { source } = unref(graphicConfig)\n if (!lowerCaseIncludes(unref(selectedComponent).type, ['scatter', 'valueline'])) {\n try {\n if (source === 'EDV_DATA_SET') {\n await getEdvFieldData()\n } else {\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 unref(graphicConfig).selectFieldOptions = data || []\n fieldOptions.value = data\n }\n }\n } catch (e) {\n console.error(e)\n }\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 dimensionType = ['classificationList', 'seriesList', 'rowHeaderList', 'queryColumnList', 'dimensionList']\n const dataViewMap = ref({})\n const dataViewColumns = ref([])\n const onVisibleChange = async (visible: boolean, cardItem: any) => {\n const { name: itemName } = cardItem\n if (!dimensionType.includes(props.type) && visible && hasOwn(cardItem, 'indexCode')) {\n const res = await request.post(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n dataSourceId: '',\n indexGuid: cardItem.id,\n indexCode: cardItem.indexCode,\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 && data) {\n dataViewColumns.value = data?.dataViewColumns || []\n dataViewMap.value[itemName] = {\n name: data.name,\n code: data.indexCode\n }\n }\n }\n }\n const onClickSetting = (cardItem: any) => {\n currentCardItem.value = cardItem\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\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n // 是否需要显示展示名称的配置\n const isShowConfigName = computed(() => {\n if (props.type === 'indicators' && unref(selectedComponent).type === 'ecanTable') {\n return true\n } else {\n return false\n }\n })\n // 是否显示关联控件排序\n const isShowSortByCpnt = computed(() => {\n if (['indicators', 'classificationList', 'leftAxisList', 'rightAxisList'].includes(props.type)) {\n return true\n } else {\n return false\n }\n })\n\n const isIndexSet = computed(() => lowerCaseIncludes(unref(selectedComponent)?.type, ['table']) && unref(graphicConfig)?.isIndexSet)\n\n // 是否显示添加计算指标按钮\n const isShowCalcBtn = computed(() => {\n return !dimensionType.includes(props.type) && !unref(dataSelectIndicators) && (!unref(isIndexSet) || props.type !== 'indicators')\n })\n\n onMounted(() => {\n if (props.type === 'formFields') {\n if (unref(selectedComponent).type === 'ecanDataSelect') {\n fieldOptions.value = [\n {\n label: '维度编码',\n value: '_code'\n },\n {\n label: '维度值',\n value: '_value'\n }\n ]\n } else {\n getFieldData()\n }\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 distinctList,\n onAggregateChange,\n onDistinctChange,\n onDateFormatChange,\n onIndSortChange,\n handleAggregateTitle,\n handleDistinctTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n configNameRef,\n sortByCpntRef,\n dimByCountRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode,\n formatList,\n indSortList,\n fieldOptions,\n fieldData,\n onFieldChange,\n onVisibleChange,\n onClickSetting,\n copyDataViewName,\n dataViewMap,\n isShowConfigName,\n showConfigNameModal,\n dimensionType,\n isShowSortByCpnt,\n showSortByCpntModal,\n dataSelectIndicators,\n showDimByCountModal,\n selectedComponent,\n lowerCaseIncludes,\n isShowCalcBtn,\n isIndexSet,\n indexSetList,\n compositeIndicator,\n handleIndSortTitle\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 dimensionList: {\n title: '维度'\n },\n indexLibColumns: {\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, watch } 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'\nimport { hasOwn } from '@ecan-bi/tools'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\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 handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n card: ['rowHeaderList', 'indicators'],\n pie: ['classificationList', 'indicators'],\n circulate: ['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'] : [graphicConfig.isIndexSet ? 'indexLibColumns' : 'queryColumnList', 'indicators'],\n text: ['dimensionList', 'indicators'],\n proportion: ['indicators'],\n select: ['classificationList', 'formFields'],\n dataSelect: ['classificationList', 'indicators', 'formFields'],\n checkbox: ['classificationList', 'formFields'],\n radio: ['classificationList', 'formFields'],\n list: ['classificationList', 'indicators'],\n counter: ['indicators'],\n scatter: ['classificationList', 'indicators', 'formFields'],\n pivotTable: ['queryColumnList', 'indicators'],\n valueLine: ['classificationList', 'indicators', 'formFields'],\n indexPanel: ['indicators']\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 } else {\n delete graphicConfig[item]\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n // xiaohua\n handleGraphicConfigMap()\n watch(() => selectedComponentType.value, () => {\n cards.length = 0\n handleGraphicConfigMap()\n })\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, watch } 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'\nimport { hasOwn } from '@ecan-bi/tools'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\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 handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n card: ['rowHeaderList', 'indicators'],\n pie: ['classificationList', 'indicators'],\n circulate: ['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'] : [graphicConfig.isIndexSet ? 'indexLibColumns' : 'queryColumnList', 'indicators'],\n text: ['dimensionList', 'indicators'],\n proportion: ['indicators'],\n select: ['classificationList', 'formFields'],\n dataSelect: ['classificationList', 'indicators', 'formFields'],\n checkbox: ['classificationList', 'formFields'],\n radio: ['classificationList', 'formFields'],\n list: ['classificationList', 'indicators'],\n counter: ['indicators'],\n scatter: ['classificationList', 'indicators', 'formFields'],\n pivotTable: ['queryColumnList', 'indicators'],\n valueLine: ['classificationList', 'indicators', 'formFields'],\n indexPanel: ['indicators']\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 } else {\n delete graphicConfig[item]\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n // xiaohua\n handleGraphicConfigMap()\n watch(() => selectedComponentType.value, () => {\n cards.length = 0\n handleGraphicConfigMap()\n })\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 showSwitch?: boolean\r\n onlyType?: string | string[],\r\n excludeType?: string | string[]\r\n props: (string | { value: string, onlyType?: string | string[], excludeType?: string | 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 showSwitch?: boolean\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 'keyName',\r\n 'left',\r\n 'top',\r\n 'width',\r\n 'height',\r\n 'colors',\r\n 'textShadow',\r\n 'backgroundColor',\r\n 'backgroundImage',\r\n 'backgroundSize',\r\n 'theme',\r\n 'pageFontFamily',\r\n 'contextRequestUrl',\r\n 'graphicType'\r\n ]\r\n },\r\n {\r\n title: '定时跳转',\r\n props: [\r\n 'jumpType',\r\n 'jumpTime',\r\n 'jumpPage',\r\n 'jumpLink'\r\n ]\r\n },\r\n // {\r\n // title: '文本',\r\n // props: [\r\n // 'text',\r\n // {\r\n // value: 'format',\r\n // excludeType: ['date', 'range', 'time']\r\n // },\r\n // 'color',\r\n // 'title',\r\n // {\r\n // excludeType: ['table'],\r\n // value: 'fontSize'\r\n // },\r\n // 'fontFamily',\r\n // {\r\n // excludeType: ['table'],\r\n // value: 'fontWeight'\r\n // },\r\n // 'fontStyle',\r\n // 'lineHeight',\r\n // 'textAlign',\r\n // 'strokeTextWidth',\r\n // 'justifyContent',\r\n // 'alignItems',\r\n // 'titleFontSize',\r\n // 'titleColor',\r\n // 'decimalFormat',\r\n // 'variableColor',\r\n // 'variableFontSize',\r\n // 'variableDefaultValue',\r\n // 'strokeTextShow',\r\n // 'percentageSide',\r\n // 'increaseColor',\r\n // 'declineColor',\r\n // 'minusSignShow',\r\n // 'exceedConfig',\r\n // 'showAnimation'\r\n // ]\r\n // },\r\n {\r\n title: '弹窗',\r\n onlyType: 'modal',\r\n props: [\r\n 'position',\r\n 'fullModal',\r\n 'isShowCloseBtn',\r\n 'centered',\r\n 'destroyOnClose',\r\n 'closeBtnColor',\r\n 'borderRadius',\r\n 'borderWidth',\r\n 'borderColor',\r\n 'boxShadow'\r\n ]\r\n },\r\n {\r\n title: '图片',\r\n props: [\r\n 'borderRadius',\r\n 'isAnimation',\r\n 'animationSource',\r\n 'isHoverStyle',\r\n 'imgUrl'\r\n ]\r\n },\r\n {\r\n title: '链接',\r\n props: [\r\n 'linkPage',\r\n 'href',\r\n 'target',\r\n 'transParams'\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 'areaGradientShow',\r\n 'areaGradientColor',\r\n 'smooth',\r\n 'lineStyleWidth',\r\n 'symbolSize',\r\n 'shadowColor',\r\n 'shadowBlur',\r\n 'shadowOffsetX',\r\n 'shadowOffsetY'\r\n ]\r\n },\r\n {\r\n title: '散点图',\r\n onlyType: ['scatter'],\r\n props: [\r\n 'symbolSize',\r\n 'symbolColor'\r\n ]\r\n },\r\n {\r\n title: '雷达图',\r\n onlyType: ['radar'],\r\n props: [\r\n 'areaStyleOpacity',\r\n 'lineStyleWidth',\r\n 'symbolSize',\r\n 'labelShow',\r\n 'axisNameColor'\r\n ]\r\n },\r\n {\r\n title: '单选框',\r\n onlyType: ['radio'],\r\n props: [\r\n 'value',\r\n 'optionType',\r\n 'tabFontSize',\r\n 'tabHorizontalPadding',\r\n 'tabBarGutter',\r\n 'tabFlexDirection',\r\n 'tabTextAlign',\r\n 'tabColor',\r\n 'activeTabColor',\r\n 'tabBackgroundImage',\r\n 'activeTabBackgroundImage'\r\n ]\r\n },\r\n {\r\n title: '柱状图',\r\n onlyType: ['bar', 'comboGraph'],\r\n props: [\r\n 'barWidth',\r\n 'barBorderRadius',\r\n 'isUseHorizontalAxis',\r\n 'axisInverse',\r\n 'isStack',\r\n 'stackColumns',\r\n 'labelShow',\r\n 'showBarBackground'\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: '标签边距',\r\n props: [\r\n 'gridTopPx',\r\n 'gridBottomPx',\r\n 'gridLeftPx',\r\n 'gridRightPx'\r\n ]\r\n },\r\n {\r\n title: '标题',\r\n onlyType: ['bar', 'combo-graph', 'line', 'pie', 'radar', 'scatter'],\r\n props: [\r\n 'titleText',\r\n 'titleFontSize',\r\n 'titleColor',\r\n 'fontWeight',\r\n 'textAlign'\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 'xAxisSplitLineType',\r\n 'xAxisSplitAreaShow',\r\n 'xAxisLineShow',\r\n 'isBoundaryGap',\r\n 'xAxisSplitLineInterval',\r\n 'xAxisSplitLineStyleColor',\r\n 'xAxisLabelFormatter',\r\n 'xAxisInverse',\r\n 'xAxisMinInterval',\r\n 'xAxisLabelInterval',\r\n 'xAxisLabelFontSize',\r\n 'xAxisName',\r\n 'xAxisMaxValue',\r\n 'showXAxisLineArrow',\r\n 'xAxisLineInverse'\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 'yAxisTickShow',\r\n 'yAxisSplitLineShow',\r\n\r\n 'yAxisSplitLineType',\r\n 'yAxisLeftSplitLineShow',\r\n 'yAxisLeftSplitLineType',\r\n 'yAxisRightSplitLineShow',\r\n 'yAxisRightSplitLineType',\r\n 'yAxisSplitAreaShow',\r\n 'yAxisLabelShow',\r\n 'yAxisSplitLineStyleColor',\r\n 'yAxisLabelFormatter',\r\n 'yAxisInverse',\r\n 'yAxisMinInterval',\r\n 'yAxis',\r\n 'yAxisLabelFontSize',\r\n 'yAxisName',\r\n 'yAxisLeftName',\r\n 'yAxisRightName',\r\n 'yAxisMaxValue',\r\n 'showYAxisLineArrow',\r\n 'yAxisLineInverse'\r\n ]\r\n },\r\n {\r\n title: '标签',\r\n enableProps: 'labelShow',\r\n excludeType: 'map',\r\n props: [\r\n 'labelFormatter',\r\n 'labelWidth',\r\n 'labelColor',\r\n 'isUseLabelColors',\r\n 'labelFontSize',\r\n 'labelPosition',\r\n 'labelOverflow'\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 'legendFormatter',\r\n 'legendWidth',\r\n 'legendHeight',\r\n 'legendTextWidth',\r\n 'legendTextStyleColor',\r\n 'legendFontSize',\r\n 'legendTop',\r\n 'legendLeft',\r\n 'legendOrient',\r\n 'legendType',\r\n 'legendItemGap',\r\n 'legendItemWidth',\r\n 'legendItemHeight',\r\n 'legendScroll'\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 'tooltipBackgroundColor',\r\n 'tooltipRequestData',\r\n 'tooltipPosition'\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 // 'toolboxIconStyleBorderColor',\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 title: '渐变',\r\n enableProps: 'gradientShow',\r\n showSwitch: true,\r\n onlyType: ['bar', 'proportion', 'border', 'comboGraph', 'text', 'radar'],\r\n props: [\r\n 'isTransparent',\r\n 'gradientColor',\r\n 'gradientColors',\r\n 'gradientOffset',\r\n 'gradientAngle'\r\n ]\r\n },\r\n {\r\n title: '图表标线',\r\n enableProps: 'isShowMarkLine',\r\n showSwitch: true,\r\n onlyType: ['line', 'bar', 'comboGraph', 'scatter'],\r\n props: [\r\n 'markLineType'\r\n ]\r\n },\r\n {\r\n title: '图表标线',\r\n onlyType: ['scatter'],\r\n props: [\r\n 'xAxisMarkLineValue',\r\n 'yAxisMarkLineValue'\r\n ]\r\n },\r\n {\r\n title: '图表标域',\r\n onlyType: ['scatter'],\r\n props: [\r\n 'axisMarkArea'\r\n ]\r\n },\r\n {\r\n title: '默认范围值',\r\n enableProps: 'defaultRangeValue',\r\n showSwitch: true,\r\n onlyType: ['bar', 'comboGraph'],\r\n props: [\r\n 'startValue',\r\n 'endValue'\r\n ]\r\n },\r\n {\r\n title: '单位',\r\n enableProps: 'unitShow',\r\n onlyType: ['text'],\r\n props: [\r\n 'unitText',\r\n 'unitFontSize',\r\n 'unitFontWeight',\r\n 'unitColor',\r\n 'unitTop',\r\n 'unitLeft'\r\n ]\r\n },\r\n {\r\n title: '目标值',\r\n enableProps: 'targetShow',\r\n onlyType: ['text'],\r\n props: [\r\n 'targetRule',\r\n 'targetValue',\r\n 'notExpectColor'\r\n ]\r\n },\r\n {\r\n title: '时间',\r\n onlyType: ['date', 'time', 'range'],\r\n props: [\r\n 'picker',\r\n 'optionFontSize',\r\n 'format',\r\n 'show',\r\n 'limitInterval',\r\n 'startTime',\r\n 'endTime',\r\n 'value',\r\n 'showTime',\r\n 'useCurrentTime',\r\n 'isAllowSpanYear',\r\n 'interval',\r\n 'intervalUnit',\r\n 'updateInterval',\r\n 'operate',\r\n 'limitStartTime',\r\n 'limitEndTime'\r\n ]\r\n },\r\n {\r\n title: '选择器',\r\n onlyType: 'select',\r\n props: [\r\n 'value',\r\n 'mode',\r\n 'multiple',\r\n 'treeCheckable',\r\n 'maxTagCount',\r\n 'autoClearSearchValue',\r\n 'isAllowClear',\r\n 'placeholder',\r\n // 'selectFirstOption',\r\n 'valueType',\r\n 'optionFontSize'\r\n ]\r\n },\r\n {\r\n title: '表格',\r\n onlyType: 'table',\r\n props: [\r\n 'size',\r\n 'allOverflow',\r\n 'hoverRow',\r\n 'hoverColor',\r\n 'boderList',\r\n 'columnDropEnable',\r\n 'showTotalBool',\r\n 'totalName',\r\n 'expandAll'\r\n ]\r\n },\r\n {\r\n title: '列表',\r\n onlyType: 'list',\r\n props: [\r\n 'columns',\r\n 'sliceCount',\r\n // 'columnCount',\r\n 'itemWidth',\r\n 'itemHeight',\r\n 'itemColSpan',\r\n 'itemPadding',\r\n 'itemRowSpan',\r\n // 'useRanking',\r\n 'useTitle',\r\n 'isAutoScroll',\r\n 'scrollSpeed'\r\n ]\r\n },\r\n {\r\n title: '小计',\r\n onlyType: 'table',\r\n props: [\r\n 'subTotalName',\r\n 'subTotalColumn'\r\n ]\r\n },\r\n {\r\n title: '序号列',\r\n onlyType: ['table', 'list'],\r\n enableProps: 'isUseSeq',\r\n props: [\r\n 'seqWidth',\r\n 'seqName',\r\n 'seqIcon',\r\n 'seqFontSize',\r\n 'seqIndexFormatter'\r\n ]\r\n },\r\n {\r\n title: '序号图标',\r\n onlyType: ['list'],\r\n enableProps: 'seqIcon',\r\n props: [\r\n 'seqIconConfig',\r\n 'seqIconWidth',\r\n 'seqIconHeight',\r\n 'seqIconOffsetX',\r\n 'seqIconOffsetY'\r\n ]\r\n },\r\n {\r\n title: '操作列',\r\n onlyType: 'table',\r\n enableProps: 'isUseAction',\r\n props: [\r\n 'actionList',\r\n 'actionColumnWidth'\r\n ]\r\n },\r\n {\r\n title: '分页',\r\n enableProps: 'paginationShow',\r\n props: [\r\n 'paginationPageSize',\r\n 'simple',\r\n 'pageSizeShow',\r\n 'showQuickJumper',\r\n 'paginationPosition',\r\n 'isPageBottom',\r\n 'isShowTotal',\r\n 'paginationColor',\r\n 'paginationBgColor',\r\n 'activePaginationColor',\r\n 'activePaginationBgColor'\r\n ]\r\n },\r\n {\r\n title: '循环列表',\r\n onlyType: 'circulate',\r\n props: [\r\n 'colNum',\r\n 'unitInterval',\r\n 'isAutoScroll',\r\n 'scrollSpeed',\r\n 'scrollDirection',\r\n 'keyFieldMap'\r\n ]\r\n },\r\n {\r\n title: '计数器',\r\n onlyType: 'counter',\r\n props: [\r\n 'digits',\r\n 'unitInterval',\r\n 'unitWidth',\r\n 'unitHeight',\r\n 'counterBackgroundImage'\r\n ]\r\n },\r\n {\r\n title: '边框',\r\n onlyType: ['border', 'circulate'],\r\n props: [\r\n 'mode',\r\n 'borderWidth',\r\n 'borderRadius',\r\n 'borderColor',\r\n 'useBorderModify',\r\n 'borderStyle',\r\n 'titleMode'\r\n ]\r\n },\r\n {\r\n title: '标签页',\r\n onlyType: 'tabs',\r\n props: [\r\n 'tabType',\r\n 'tabWidth',\r\n 'activeKey',\r\n 'tabFontSize',\r\n 'tabFontWeight',\r\n 'tabHorizontalPadding',\r\n 'tabBarGutter',\r\n 'tabOuterMargin',\r\n 'tabFlexDirection',\r\n 'tabAlignItems',\r\n 'tabJustifyContent',\r\n 'tabColor',\r\n 'activeTabColor',\r\n 'tabBackgroundImage',\r\n 'activeTabBackgroundImage',\r\n 'autoSwitch',\r\n 'autoSwitchInterval',\r\n 'hideTabs'\r\n // 'isAutoScroll',\r\n // 'scrollSpeed'\r\n ]\r\n },\r\n {\r\n title: '进度条',\r\n onlyType: 'proportion',\r\n props: [\r\n 'strokeWidth',\r\n 'strokeType',\r\n 'strokeLinecap',\r\n 'strokeColor',\r\n 'trailColor'\r\n ]\r\n },\r\n {\r\n title: '地图数据',\r\n onlyType: 'map',\r\n props: [\r\n 'mapJson',\r\n 'geoCenter'\r\n ]\r\n },\r\n {\r\n title: '地图样式',\r\n onlyType: 'map',\r\n props: [\r\n 'geoRoam',\r\n 'geoZoom',\r\n 'geoLabelColor',\r\n 'geoLabelShow',\r\n 'geoLabelFontSize',\r\n 'geoBackgroundImage',\r\n 'geoBackgroundImageRepeat',\r\n 'geoItemStyleAreaColor',\r\n 'geoItemStyleBorderColor',\r\n 'geoItemStyleBorderWidth',\r\n 'geoItemStyleShadowColor',\r\n 'geoItemStyleShadowOffsetX',\r\n 'geoItemStyleShadowOffsetY',\r\n 'geoItemStyleShadowBlur',\r\n 'symbolImage',\r\n 'symbolWidth',\r\n 'symbolHeight'\r\n ]\r\n },\r\n {\r\n title: '悬停地图样式',\r\n onlyType: 'map',\r\n props: [\r\n 'geoEmphasisDisabled',\r\n 'geoEmphasisLabelColor',\r\n 'geoEmphasisItemStyleAreaColor',\r\n 'geoEmphasisItemStyleBorderColor'\r\n ]\r\n },\r\n {\r\n title: '按钮',\r\n onlyType: 'button',\r\n props: [\r\n 'mode',\r\n 'danger',\r\n 'shape',\r\n 'tooltipTextStyleColor',\r\n 'borderColor',\r\n 'buttonBackgroundColor'\r\n ]\r\n },\r\n {\r\n title: '输入框',\r\n onlyType: 'input',\r\n props: [\r\n 'value',\r\n 'placeholder',\r\n 'optionFontSize'\r\n ]\r\n },\r\n {\r\n title: '网页',\r\n onlyType: 'iframe',\r\n props: [\r\n 'link',\r\n 'linkType'\r\n ]\r\n }\r\n]\r\n","import { VNode } from 'vue'\n\nexport 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 show?: { [key: string]: any }[]\n effect?: any\n effectVal?: any\n}\n\ntype PropToAttributeConfigList = PropToAttributeConfig[]\n\n// 属性转换配置(表单)\nexport type PropsToAttributeConfig = {\n [key: string]: PropToAttributeConfig | PropToAttributeConfigList\n}\n\nconst fontFamilyArr = [\n { label: '思源黑体', value: '\"SansSc\"' },\n { label: '黑体', value: '\"SimHei\",\"STHeiti\"' },\n { label: '楷体', value: '\"KaiTi\",\"STKaiti\"' },\n { label: '宋体', value: '\"SimSun\",\"STSong\"' },\n { label: '仿宋', value: '\"FangSong\",\"STFangsong\"' }\n]\n// 内嵌样式 jsx 转 template\nconst fontFamilyOptions = fontFamilyArr.map((font) => {\n return {\n value: font.value,\n label: (<span style={{ fontFamily: font.value }}>{font.label}</span>) as VNode\n }\n})\n\n// 属性转表单的字典映射\nexport const mapAttributeProps: PropsToAttributeConfig = {\n keyName: {\n label: '控件别名',\n component: 'input',\n props: {\n isKeyName: true\n }\n },\n text: {\n label: '文本',\n component: 'textarea'\n },\n title: {\n label: '标题',\n component: 'input'\n },\n textShadow: {\n label: '阴影',\n component: 'input'\n },\n width: [\n {\n label: '页面宽度',\n updateMode: 'page',\n component: 'input-number',\n onlyType: 'page',\n props: {\n suffix: 'px',\n disabled: false\n }\n },\n {\n label: '弹窗宽度',\n onlyType: 'modal',\n component: 'input-number',\n props: {\n suffix: 'px',\n max: 1920,\n min: 0\n }\n },\n {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n }\n ],\n height: [\n {\n label: '页面高度',\n updateMode: 'page',\n onlyType: 'page',\n component: 'input-number',\n props: {\n suffix: 'px',\n disabled: false\n }\n },\n {\n label: '弹窗高度',\n onlyType: 'modal',\n component: 'input-number',\n props: {\n suffix: 'px',\n max: 1080,\n min: 10\n }\n },\n {\n label: '高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 1\n }\n }\n ],\n backgroundImage: [\n {\n label: '背景图',\n component: 'image-pick',\n updateMode: 'page',\n onlyType: 'page'\n },\n {\n label: '背景图',\n component: 'image-pick'\n }\n ],\n backgroundSize: [\n {\n label: '背景尺寸',\n component: 'radio-group',\n updateMode: 'page',\n onlyType: 'page',\n props: {\n options: [\n {\n label: '覆盖',\n value: 'cover'\n },\n {\n label: '铺满',\n value: '100% 100%'\n }\n ]\n }\n }\n ],\n backgroundColor: [\n {\n label: '背景颜色',\n component: 'color-pick',\n updateMode: 'page',\n onlyType: 'page'\n },\n {\n label: '背景颜色',\n component: 'color-pick'\n }\n ],\n contextRequestUrl: {\n label: '请求地址',\n component: 'input',\n updateMode: 'page'\n },\n theme: {\n label: '主题',\n component: 'select',\n props: {\n options: [\n {\n label: '默认',\n value: 'light'\n },\n {\n label: '暗蓝',\n value: 'darkBlue'\n }\n ]\n },\n updateMode: 'page'\n },\n pageFontFamily: {\n label: '字体',\n component: 'select',\n updateMode: 'page',\n onlyType: 'page',\n props: {\n options: [\n {\n label: '无',\n value: ''\n },\n ...fontFamilyOptions\n ]\n }\n },\n value: [\n {\n label: '时间值',\n component: 'time-pick',\n onlyType: 'date'\n },\n {\n label: '默认值',\n component: 'input',\n onlyType: 'select'\n },\n {\n label: '默认值',\n component: 'input',\n onlyType: 'tabs'\n },\n {\n label: '默认值',\n component: 'input',\n onlyType: 'input'\n },\n {\n label: '默认值',\n component: 'checkbox',\n onlyType: 'checkbox'\n },\n {\n label: '默认值',\n component: 'input',\n onlyType: 'radio'\n }\n ],\n placeholder: [\n {\n label: '占位文字',\n component: 'input'\n }\n ],\n imgUrl: {\n label: '图片',\n component: 'image-pick',\n show: [\n {\n match: 'isAnimation',\n value: false\n }\n ]\n },\n linkUrl: {\n label: '链接地址',\n component: 'input'\n },\n linkMethod: {\n label: '打开方式',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '本窗口',\n value: '_self'\n },\n {\n label: '新窗口',\n value: '_blank'\n }\n ]\n }\n },\n linkPage: {\n label: '链接项目页面',\n component: 'page-pick'\n },\n fontSize: {\n label: '字号',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 12,\n max: 100\n }\n },\n variableFontSize: {\n label: '变量字号',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 12,\n max: 100\n }\n },\n percentageSide: {\n label: '涨跌幅图标',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '左',\n value: 'left'\n },\n {\n label: '右',\n value: 'right'\n }\n ]\n }\n },\n left: {\n label: 'x轴',\n component: 'input-number',\n props: {\n suffix: 'px'\n }\n },\n top: {\n label: 'y轴',\n component: 'input-number',\n props: {\n suffix: 'px'\n }\n },\n textAlign: {\n label: '水平对齐',\n component: 'radio-group',\n props: {\n optionType: 'button',\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 verticalAlign: {\n label: '垂直对齐',\n component: 'radio-group',\n props: {\n optionType: 'button',\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 justifyContent: {\n label: '水平对齐',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '左',\n value: 'flex-start'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '右',\n value: 'flex-end'\n }\n ]\n }\n },\n alignItems: {\n label: '垂直对齐',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '上',\n value: 'flex-start'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '下',\n value: 'flex-end'\n }\n ]\n }\n },\n fontFamily: {\n label: '字体',\n component: 'select',\n props: {\n options: [\n {\n label: '无',\n value: ''\n },\n ...fontFamilyOptions\n ]\n }\n },\n tabFontWeight: {\n label: '字体粗细',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '细',\n value: 100\n },\n {\n label: '正常',\n value: 400\n },\n {\n label: '粗',\n value: 700\n }\n ],\n isTransformNumber: true\n }\n },\n headerFontWeight: {\n label: '字体粗细',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '细',\n value: 100\n },\n {\n label: '正常',\n value: 400\n },\n {\n label: '粗',\n value: 700\n }\n ],\n isTransformNumber: true\n }\n },\n fontWeight: {\n label: '字体粗细',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '细',\n value: 100\n },\n {\n label: '正常',\n value: 400\n },\n {\n label: '粗',\n value: 700\n }\n ],\n isTransformNumber: true\n }\n },\n fontStyle: {\n label: '字体风格',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '正常',\n value: 'normal'\n },\n {\n label: '倾斜',\n value: 'italic'\n }\n ],\n isTransformNumber: true\n }\n },\n color: {\n label: '颜色',\n component: 'color-pick'\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 lineHeight: {\n label: '行高',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0,\n step: 0.1\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 titleText: {\n label: '标题',\n component: 'input'\n },\n titleSubtext: {\n label: '副标题',\n component: 'input'\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', 'radar'],\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 symbolColor: {\n label: '标记点颜色',\n component: 'color-pick'\n },\n symbolWidth: {\n label: '图标宽',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n symbolHeight: {\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 picker: {\n label: '选择类型',\n component: 'select',\n props: {\n options: [\n {\n label: '日期',\n value: 'date'\n },\n {\n label: '年份',\n value: 'year'\n },\n {\n label: '月份',\n value: 'month'\n },\n {\n label: '星期',\n value: 'week'\n },\n {\n label: '季度',\n value: 'quarter'\n }\n ]\n }\n },\n format: [\n {\n label: '格式化',\n onlyType: 'text',\n component: 'select',\n props: {\n options: [\n {\n label: '无',\n value: ''\n },\n {\n label: '百分比',\n value: 'percent'\n },\n {\n label: '涨跌幅',\n value: 'percentage'\n },\n {\n label: '金额',\n value: 'money'\n },\n {\n label: '千分位',\n value: 'thousands'\n }\n ]\n }\n },\n {\n label: '格式化',\n component: 'input',\n onlyType: ['date', 'range', 'time']\n }\n ],\n showTime: {\n label: '展示时间',\n component: 'switch'\n },\n xAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n xAxisSplitAreaShow: {\n label: '分隔区域',\n component: 'switch'\n },\n xAxisLineShow: {\n label: '显示轴线',\n component: 'switch'\n },\n isBoundaryGap: {\n label: '两边留白',\n component: 'switch'\n },\n xAxisSplitLineInterval: {\n label: '分割线间隔',\n component: 'input-number',\n props: {\n suffix: '',\n min: 0\n }\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 yAxisTickShow: {\n label: '显示刻度',\n component: 'switch'\n },\n xAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n yAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n yAxisLeftSplitLineShow: {\n label: '分割线-左轴',\n component: 'switch'\n },\n yAxisRightSplitLineShow: {\n label: '分割线-右轴',\n component: 'switch'\n },\n yAxisSplitLineType: {\n label: '分割线类型',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '实线',\n value: 'solid'\n },\n {\n label: '虚线',\n value: 'dashed'\n },\n {\n label: '点状',\n value: 'dotted'\n }\n ]\n }\n },\n yAxisLeftSplitLineType: {\n label: '分割线类型-左轴',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '实线',\n value: 'solid'\n },\n {\n label: '虚线',\n value: 'dashed'\n },\n {\n label: '点状',\n value: 'dotted'\n }\n ]\n }\n },\n yAxisRightSplitLineType: {\n label: '分割线类型-左轴',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '实线',\n value: 'solid'\n },\n {\n label: '虚线',\n value: 'dashed'\n },\n {\n label: '点状',\n value: 'dotted'\n }\n ]\n }\n },\n xAxisSplitLineType: {\n label: '分割线类型',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '实线',\n value: 'solid'\n },\n {\n label: '虚线',\n value: 'dashed'\n },\n {\n label: '点状',\n value: 'dotted'\n }\n ]\n }\n },\n yAxisSplitAreaShow: {\n label: '分隔区域',\n component: 'switch'\n },\n yAxisLabelShow: {\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 fullModal: {\n label: '全屏',\n component: 'switch'\n },\n seqIconConfig: [\n {\n label: '图标索引',\n component: 'icon-config',\n layout: 'vertical',\n onlyType: 'list'\n }\n ],\n columns: [\n {\n label: '表格列',\n component: 'form-collapse',\n onlyType: 'table',\n props: {\n format: [\n {\n label: '名称',\n value: 'title',\n type: 'input'\n },\n {\n label: '索引',\n value: 'dataIndex',\n type: 'input'\n },\n {\n label: '宽度',\n value: 'width',\n type: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n {\n label: '头部对齐',\n value: 'headerCellAlign',\n type: 'select',\n defaultValue: 'center',\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 {\n label: '单元格对齐',\n value: 'cellAlign',\n type: 'select',\n defaultValue: 'center',\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 // {\n // label: '头部字体',\n // value: 'headerCellColor',\n // type: 'color',\n // defaultValue: ''\n // },\n // {\n // label: '单元格字体',\n // value: 'cellColor',\n // type: 'color',\n // defaultValue: ''\n // },\n {\n label: '格式化',\n value: 'format',\n type: 'select',\n defaultValue: '',\n props: {\n options: [\n {\n label: '无',\n value: ''\n },\n {\n label: '金额',\n value: 'money'\n },\n {\n label: '百分比',\n value: 'percentage'\n },\n {\n label: '布尔值',\n value: 'boolean'\n },\n {\n label: '对比',\n value: 'contrast'\n },\n {\n label: '进度条',\n value: 'progress'\n },\n {\n label: '保留小数',\n value: 'decimals'\n },\n {\n label: '自定义',\n value: 'custom'\n }\n ]\n }\n },\n {\n label: '保留位数',\n value: 'retentiondigit',\n type: 'input-number',\n show: {\n match: 'format',\n value: 'decimals'\n },\n props: {\n min: 0\n }\n },\n {\n label: '自定义格式化',\n value: 'customFormatter',\n type: 'input',\n defaultValue: '{value}',\n show: {\n match: 'format',\n value: ['custom', 'contrast']\n }\n },\n {\n label: '涨幅颜色',\n value: 'increaseColor',\n type: 'color',\n defaultValue: '#ff512e',\n show: {\n match: 'format',\n value: 'contrast'\n }\n },\n {\n label: '跌幅颜色',\n value: 'declineColor',\n type: 'color',\n defaultValue: '#39cf93',\n show: {\n match: 'format',\n value: 'contrast'\n }\n },\n {\n label: '进度条颜色',\n value: 'progressColor',\n type: 'color',\n defaultValue: '#1890ff',\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条文字颜色',\n value: 'progressTextColor',\n type: 'color',\n defaultValue: '#333',\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条完成文字颜色',\n value: 'progressFinishedTextColor',\n type: 'color',\n defaultValue: '#fff',\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条文字保留小数位',\n value: 'progressTextDecimalPlaces',\n type: 'input-number',\n defaultValue: '2',\n props: {\n min: 0\n },\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条线宽度',\n value: 'progressWidth',\n type: 'input-number',\n defaultValue: '18',\n props: {\n suffix: 'px',\n min: 0\n },\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '默认值',\n value: 'defaultVal',\n type: 'input',\n defaultValue: ''\n },\n {\n label: '内容超出时',\n value: 'overflow',\n type: 'select',\n defaultValue: 'wrap',\n props: {\n options: [\n {\n label: '换行',\n value: 'wrap'\n },\n {\n label: '省略号',\n value: 'ellipsis'\n }\n ]\n }\n },\n {\n label: '排序',\n value: 'sorter',\n type: 'switch',\n typeValue: 'checked'\n },\n {\n label: '小计',\n value: 'isCalcTotal',\n type: 'switch',\n typeValue: 'checked'\n },\n {\n label: '过滤',\n value: 'tableFilter',\n type: 'switch',\n typeValue: 'checked'\n },\n {\n label: '隐藏',\n value: 'isHidden',\n type: 'switch',\n typeValue: 'checked'\n }\n ]\n }\n },\n {\n label: '列索引',\n component: 'form-group',\n layout: 'vertical',\n onlyType: 'list',\n props: {\n format: [\n {\n label: '索引',\n value: 'key',\n type: 'input'\n },\n {\n label: '标题',\n value: 'title',\n type: 'input'\n },\n {\n label: '宽度',\n value: 'width',\n type: 'input-number',\n props: {\n suffix: '%',\n min: 1\n }\n },\n {\n label: '对齐',\n value: 'align',\n type: 'select',\n defaultValue: 'left',\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 {\n label: '内容对齐',\n value: 'cellAlign',\n type: 'select',\n defaultValue: 'left',\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 {\n label: '背景颜色',\n value: 'cellColor',\n type: 'color',\n defaultValue: ''\n },\n {\n label: '字体大小',\n value: 'fontSize',\n type: 'input-number',\n props: {\n suffix: 'px',\n min: 12\n }\n },\n {\n label: '字体颜色',\n value: 'color',\n type: 'color',\n defaultValue: ''\n },\n {\n label: '字体粗细',\n value: 'fontWeight',\n type: 'select',\n defaultValue: 'normal',\n props: {\n options: [\n {\n label: '较细',\n value: 'lighter'\n },\n {\n label: '正常',\n value: 'normal'\n },\n {\n label: '较粗',\n value: 'bold'\n }\n ]\n }\n },\n {\n label: '标题字体颜色',\n value: 'titleColor',\n type: 'color',\n defaultValue: ''\n },\n {\n label: '格式化',\n value: 'format',\n type: 'select',\n defaultValue: '',\n props: {\n options: [\n {\n label: '无',\n value: ''\n },\n {\n label: '金额',\n value: 'money'\n },\n {\n label: '百分比',\n value: 'percentage'\n },\n {\n label: '对比',\n value: 'contrast'\n },\n {\n label: '进度条',\n value: 'progress'\n },\n {\n label: '自定义',\n value: 'custom'\n }\n ]\n }\n },\n {\n label: '进度条颜色',\n value: 'progressColor',\n type: 'color',\n defaultValue: '#1890ff',\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条渐变色',\n value: 'progressGradientColor',\n type: 'color',\n defaultValue: '#1890ff',\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条底色',\n value: 'progressBaseColor',\n type: 'color',\n defaultValue: '',\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '进度条线宽度',\n value: 'progressWidth',\n type: 'input-number',\n defaultValue: '14',\n props: {\n suffix: 'px',\n min: 0\n },\n show: {\n match: 'format',\n value: 'progress'\n }\n },\n {\n label: '自定义格式化',\n value: 'customFormatter',\n type: 'input',\n defaultValue: '{value}',\n show: {\n match: 'format',\n value: ['custom']\n }\n }\n ]\n }\n }\n ],\n bordered: {\n label: '边框',\n component: 'switch'\n },\n size: [\n {\n label: '尺寸',\n onlyType: 'table',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '默认',\n value: 'default'\n },\n {\n label: '中等',\n value: 'middle'\n },\n {\n label: '小号',\n value: 'small'\n }\n ]\n }\n }\n ],\n allOverflow: {\n label: '表内容超出',\n onlyType: 'table',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '换行',\n value: 'false'\n },\n {\n label: '省略号',\n value: 'ellipsis'\n },\n {\n label: '省略号+title显示',\n value: 'title'\n },\n {\n label: '省略号+tooltip显示',\n value: 'tooltip'\n }\n ]\n }\n },\n hoverRow: {\n onlyType: 'table',\n label: '点击行高亮',\n component: 'switch'\n },\n hoverColor: {\n onlyType: 'table',\n label: 'hover行颜色',\n component: 'color-pick'\n },\n boderList: {\n label: '边框不显示',\n component: 'select',\n onlyType: 'table',\n props: {\n mode: 'multiple',\n options: [\n {\n label: '表格上边框',\n value: 'top'\n },\n {\n label: '表格下边框',\n value: 'bottom'\n },\n {\n label: '表格左边框',\n value: 'left'\n },\n {\n label: '表格右边框',\n value: 'right'\n },\n {\n label: '表格内容边框',\n value: 'middle'\n },\n {\n label: '列按钮边框',\n value: 'button'\n }\n ]\n }\n },\n columnDropEnable: {\n onlyType: 'table',\n label: '列拖拽',\n component: 'switch'\n },\n showTotalBool: {\n onlyType: 'table',\n label: '显示汇总行',\n component: 'switch'\n },\n totalName: {\n onlyType: 'table',\n label: '汇总行名',\n component: 'input'\n },\n expandAll: {\n onlyType: 'table',\n label: '展开所有节点',\n component: 'switch'\n },\n isUseSeq: {\n label: '使用序列',\n component: 'switch'\n },\n centered: {\n label: '居中',\n component: 'switch'\n },\n columnsFixedNum: {\n label: '左固定列数',\n component: 'input-number',\n props: {\n min: 0,\n step: 1\n }\n },\n scrollX: {\n label: '滚动宽度',\n component: 'input-number',\n props: {\n min: 0,\n step: 1\n }\n },\n variableColor: {\n label: '变量颜色',\n component: 'color-pick'\n },\n mode: [\n {\n label: '类型',\n component: 'select',\n onlyType: 'border',\n props: {\n options: [\n // { label: '默认', value: 'only-border' },\n {\n label: '无标题',\n value: 'no-title'\n },\n {\n label: '上标题',\n value: 'top-title'\n },\n {\n label: '左标题',\n value: 'left-title'\n }\n ]\n }\n },\n {\n label: '类型',\n component: 'radio-group',\n onlyType: 'tabs',\n props: {\n options: [\n {\n label: '线条',\n value: 'line'\n },\n {\n label: '卡片',\n value: 'card'\n }\n ]\n }\n },\n {\n label: '类型',\n component: 'select',\n onlyType: 'button',\n props: {\n options: [\n {\n label: '默认',\n value: 'default'\n },\n {\n label: '主要',\n value: 'primary'\n },\n {\n label: '虚线',\n value: 'dashed'\n },\n {\n label: '链接',\n value: 'link'\n },\n {\n label: '文本',\n value: 'text'\n }\n ]\n }\n },\n {\n label: '模式',\n onlyType: 'select',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '单选',\n value: ''\n },\n {\n label: '多选',\n value: 'multiple'\n }\n ]\n }\n }\n ],\n tabColor: {\n label: '字体颜色',\n component: 'color-pick'\n },\n activeTabColor: {\n label: '激活颜色',\n component: 'color-pick'\n },\n tabBackgroundImage: {\n label: '背景图',\n component: 'image-pick'\n },\n activeTabBackgroundImage: {\n label: '激活背景图',\n component: 'image-pick'\n },\n tabBarGutter: {\n label: '标签间隔',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n tabFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 12\n }\n },\n simple: {\n label: '简单分页',\n component: 'switch'\n },\n pageSizeShow: {\n label: '每页条数',\n component: 'switch'\n },\n sliceCount: {\n label: '截取条数',\n component: 'input-number',\n props: {\n min: 1\n }\n },\n useRanking: {\n label: '使用排行',\n component: 'switch'\n },\n headerBackgroundColor: {\n label: '表头背景',\n component: 'color-pick'\n },\n cellBackgroundColor: {\n label: '单元格背景',\n component: 'color-pick'\n },\n borderColor: {\n label: '边框颜色',\n component: 'color-pick'\n },\n useBorderModify: {\n label: '边框(四角)',\n component: 'switch'\n },\n useTitle: {\n label: '使用标题',\n component: 'switch'\n },\n paginationPosition: {\n label: '位置',\n component: 'select',\n props: {\n options: [\n {\n label: '上左',\n value: 'topLeft'\n },\n {\n label: '上中',\n value: 'topCenter'\n },\n {\n label: '上右',\n value: 'topRight'\n },\n {\n label: '下左',\n value: 'bottomLeft'\n },\n {\n label: '下中',\n value: 'bottomCenter'\n },\n {\n label: '下右',\n value: 'bottomRight'\n }\n ]\n }\n },\n paginationPageSize: {\n label: '分页数',\n component: 'input-number'\n },\n destroyOnClose: {\n label: '关闭销毁',\n component: 'switch'\n },\n position: [\n {\n label: '位置',\n onlyType: 'modal',\n component: 'select',\n props: {\n options: [\n {\n label: '默认',\n value: 'default'\n },\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 ],\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 startTime: {\n label: '开始时间值',\n component: 'time-pick'\n },\n endTime: {\n label: '结束时间值',\n component: 'time-pick'\n },\n limitStartTime: {\n label: '限制开始时间',\n component: 'time-pick'\n },\n limitEndTime: {\n label: '限制结束时间',\n component: 'time-pick'\n },\n strokeColor: {\n label: '完成颜色',\n component: 'color-pick'\n },\n trailColor: {\n label: '未完成颜色',\n component: 'color-pick'\n },\n strokeType: {\n label: '类型',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '环形',\n value: 'circle'\n },\n {\n label: '仪表盘',\n value: 'dashboard'\n },\n {\n label: '直线',\n value: 'line'\n }\n ]\n }\n },\n strokeLinecap: {\n label: '进度条样式',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '圆形',\n value: 'round'\n },\n {\n label: '方角',\n value: 'square'\n }\n ]\n }\n },\n strokeWidth: {\n label: '进度条宽度',\n component: 'input-number',\n props: {\n min: 1\n }\n },\n strokeTextWidth: {\n label: '文本宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 20\n }\n },\n geoBackgroundImage: {\n label: '填充背景',\n component: 'image-pick'\n },\n geoItemStyleAreaColor: {\n label: '板块颜色',\n component: 'color-pick'\n },\n geoItemStyleBorderColor: {\n label: '边框颜色',\n component: 'color-pick'\n },\n geoEmphasisLabelColor: {\n label: '字体颜色',\n component: 'color-pick'\n },\n geoEmphasisItemStyleAreaColor: {\n label: '板块颜色',\n component: 'color-pick'\n },\n geoEmphasisItemStyleBorderColor: {\n label: '边框颜色',\n component: 'color-pick'\n },\n symbolImage: {\n label: '坐标点图标',\n component: 'image-pick'\n },\n mapJson: {\n label: '上传数据',\n component: 'file-pick'\n },\n barWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0\n }\n },\n columnCount: {\n label: '并行数',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n itemHeight: {\n label: '高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n itemColSpan: {\n label: '边距',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n itemPadding: {\n label: '内填充',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n itemRowSpan: {\n label: '行距',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n geoLabelColor: {\n label: '标签颜色',\n component: 'color-pick'\n },\n geoLabelFontSize: {\n label: '标签大小',\n component: 'input-number',\n props: {\n min: 12,\n max: 100\n }\n },\n geoItemStyleShadowColor: {\n label: '阴影颜色',\n component: 'color-pick'\n },\n geoItemStyleBorderWidth: {\n label: '边框宽度',\n component: 'input-number'\n },\n geoItemStyleShadowBlur: {\n label: '阴影模糊',\n component: 'input-number'\n },\n geoItemStyleShadowOffsetX: {\n label: '阴影水平偏移',\n component: 'input-number'\n },\n geoItemStyleShadowOffsetY: {\n label: '阴影垂直偏移',\n component: 'input-number'\n },\n geoZoom: {\n label: '缩放大小',\n component: 'input-number'\n },\n geoRoam: {\n label: '手动缩放',\n component: 'switch'\n },\n geoCenter: {\n label: '中心位置',\n component: 'input'\n },\n geoBackgroundImageRepeat: {\n label: '背景图片',\n component: 'select',\n props: {\n options: [\n {\n label: '重复',\n value: 'repeat'\n },\n {\n label: '水平重复',\n value: 'repeat-x'\n },\n {\n label: '垂直重复',\n value: 'repeat-y'\n },\n {\n label: '不重复',\n value: 'no-repeat'\n }\n ]\n }\n },\n titleColor: {\n label: '字体颜色',\n component: 'color-pick'\n },\n titleFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 12,\n max: 100\n }\n },\n headerFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 12,\n max: 100\n }\n },\n geoEmphasisDisabled: {\n label: '禁用',\n component: 'switch'\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 geoLabelShow: {\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 shape: {\n label: '形状',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '默认',\n value: 'default'\n },\n {\n label: '角圆',\n value: 'round'\n },\n {\n label: '圆形',\n value: 'circle'\n }\n ]\n }\n },\n danger: {\n label: '危险模式',\n component: 'switch'\n },\n href: {\n label: '链接',\n component: 'textarea',\n show: [\n {\n match: 'linkPage',\n value: ''\n }\n ]\n },\n target: {\n label: '链接方式',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '当前窗口',\n value: 'self'\n },\n {\n label: '新窗口',\n value: 'blank'\n },\n {\n label: '事件',\n value: 'event'\n }\n ]\n }\n },\n transParams: {\n label: '传递参数',\n component: 'unit-config',\n layout: 'vertical',\n props: {\n indexTip: `【参数名】是跳转链接上携带参数的key值;\n 【参数值】是跳转链接上携带参数的value值。`,\n keyName: '参数名',\n fieldName: '参数值',\n layout: 'vertical'\n }\n },\n borderWidth: {\n label: '边框宽度',\n component: 'input-number',\n props: {\n suffix: 'px'\n }\n },\n borderRadius: {\n label: '圆角',\n component: 'input'\n },\n activeKey: {\n label: '激活标签页',\n component: 'input-number'\n },\n isUseAction: {\n label: '使用操作列',\n component: 'switch'\n },\n actionColumnWidth: {\n label: '操作列宽',\n component: 'input-number'\n },\n actionList: {\n label: '操作列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n format: [\n {\n label: '名称',\n value: 'title',\n type: 'input'\n },\n {\n label: '链接地址',\n value: 'href',\n type: 'input'\n },\n {\n label: '链接方式',\n value: 'target',\n type: 'select',\n props: {\n options: [\n {\n label: '本窗口',\n value: 'self'\n },\n {\n label: '新窗口',\n value: 'blank'\n },\n {\n label: '事件',\n value: 'event'\n }\n ]\n }\n },\n {\n label: '颜色',\n value: 'color',\n type: 'color'\n }\n ]\n }\n },\n barBorderRadius: {\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 decimalFormat: {\n label: '保留小数',\n component: 'switch'\n },\n variableDefaultValue: {\n label: '变量默认值',\n component: 'input'\n },\n strokeTextShow: {\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 areaGradientShow: {\n label: '面积渐变',\n component: 'switch'\n },\n areaGradientColor: {\n label: '渐变颜色',\n component: 'color-pick'\n },\n tabHorizontalPadding: {\n label: '内水平边距',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\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 effectVal (key, value, updateOptions, graphicConfig) {\n const { leftAxisList = [] } = graphicConfig\n const stackColumns = value ? leftAxisList.map(i => i.label) : []\n updateOptions({ stackColumns })\n }\n },\n stackColumns: {\n label: '堆叠列配置',\n component: 'select',\n props: {\n mode: 'multiple',\n options: (graphicConfig) => {\n const { leftAxisList = [] } = graphicConfig\n return leftAxisList.map(i => ({ label: i.label, value: i.label }))\n }\n },\n effect: {\n hide: {\n props: [\n {\n props: 'isStack',\n value: false,\n rule: '==='\n }\n ]\n }\n }\n },\n clickHighlight: {\n label: '点击高亮',\n component: 'switch'\n },\n labelShow: {\n label: '展示标签',\n component: 'switch'\n },\n isReverse: {\n label: '是否反转',\n component: 'switch'\n },\n link: {\n label: '链接',\n component: 'textarea'\n },\n linkType: {\n onlyType: 'iframe',\n label: '链接类型',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '网页',\n value: 'web'\n },\n {\n label: '报表工程',\n value: 'erd'\n }\n ]\n }\n },\n maxTagCount: {\n label: '显示最大数',\n component: 'input-number'\n },\n tabAlignItems: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '上',\n value: 'flex-start'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '下',\n value: 'flex-end'\n }\n ]\n }\n },\n tabJustifyContent: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '左',\n value: 'flex-start'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '右',\n value: 'flex-end'\n }\n ]\n }\n },\n tabFlexDirection: {\n label: '布局',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '水平',\n value: 'row'\n },\n {\n label: '垂直',\n value: 'column'\n }\n ]\n }\n },\n filterDropdownHeight: {\n label: '过滤面板高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n stripedShow: {\n label: '斑马线条纹',\n component: 'switch'\n },\n useCurrentTime: {\n label: '使用当前时间',\n component: 'switch'\n },\n interval: {\n label: '时间间隔',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n intervalUnit: {\n label: '时间间隔单位',\n component: 'select',\n props: {\n options: [\n {\n label: '年',\n value: 'year'\n },\n {\n label: '月',\n value: 'month'\n },\n {\n label: '周',\n value: 'week'\n },\n {\n label: '日',\n value: 'day'\n },\n {\n label: '时',\n value: 'hour'\n },\n {\n label: '分',\n value: 'minute'\n }\n ]\n }\n },\n operate: {\n label: '操作',\n component: 'input-number',\n props: {\n min: 0,\n prefixValueKey: 'type',\n prefix: [\n {\n label: '加',\n value: 'add'\n },\n {\n label: '减',\n value: 'minus'\n }\n ],\n suffixValueKey: 'mode',\n suffix: [\n {\n label: '年',\n value: 'year'\n },\n {\n label: '月',\n value: 'month'\n },\n {\n label: '周',\n value: 'week'\n },\n {\n label: '日',\n value: 'day'\n },\n {\n label: '时',\n value: 'hour'\n },\n {\n label: '分',\n value: 'minute'\n }\n ]\n }\n },\n updateInterval: {\n label: '更新间隔',\n component: 'input-number',\n props: {\n min: 1,\n suffixValueKey: 'mode',\n suffix: [\n {\n label: '秒',\n value: 'second'\n },\n {\n label: '分',\n value: 'minute'\n },\n {\n label: '时',\n value: 'hour'\n },\n {\n label: '天',\n value: 'day'\n }\n ]\n }\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 autoSwitch: {\n label: '自动切换',\n component: 'switch'\n },\n autoSwitchInterval: {\n label: '切换间隔',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisLabelInterval: {\n label: '标签间隔',\n component: 'input-number',\n props: {\n min: -1\n }\n },\n isUseExport: {\n label: '导出数据',\n component: 'switch'\n },\n autoClearSearchValue: {\n label: '选中清空搜索',\n component: 'switch'\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 multiple: {\n label: '多选模式',\n component: 'switch'\n },\n treeCheckable: {\n label: '复选框模式',\n component: 'switch'\n },\n selectFirstOption: {\n label: '选择首选项',\n component: 'switch'\n },\n gradientColor: {\n label: '渐变颜色',\n component: 'color-pick'\n },\n gradientOffset: {\n label: '渐变度',\n component: 'slider'\n },\n legendItemGap: {\n label: '图例项间隔',\n component: 'input-number',\n props: {\n min: 1\n }\n },\n legendItemWidth: {\n label: '图例图形宽度',\n component: 'input-number',\n props: {\n min: 1\n }\n },\n legendItemHeight: {\n label: '图例图形高度',\n component: 'input-number',\n props: {\n min: 1\n }\n },\n showBarBackground: {\n label: '背景色',\n component: 'switch'\n },\n gradientColors: {\n label: '颜色',\n onlyType: 'bar',\n component: 'color-group-pick'\n },\n increaseColor: {\n label: '涨幅颜色 ',\n component: 'color-pick'\n },\n declineColor: {\n label: '跌幅颜色',\n component: 'color-pick'\n },\n legendType: {\n label: '图例类型 ',\n component: 'select',\n props: {\n options: [\n {\n label: '默认',\n value: ''\n },\n {\n label: '圆形',\n value: 'circle'\n },\n {\n label: '矩形',\n value: 'rect'\n },\n {\n label: '圆角矩形',\n value: 'roundRect'\n },\n {\n label: '三角形',\n value: 'triangle'\n },\n {\n label: '菱形',\n value: 'diamond'\n },\n {\n label: '箭头',\n value: 'arrow'\n }\n ]\n }\n },\n optionType: {\n label: '单选类型',\n component: 'select',\n props: {\n options: [\n {\n label: '默认',\n value: 'default'\n },\n {\n label: '框组',\n value: 'button'\n }\n ]\n }\n },\n minusSignShow: {\n label: '涨跌幅负号',\n component: 'switch'\n },\n gradientAngle: {\n label: '渐变角度',\n component: 'input-number',\n props: {\n suffix: 'deg'\n }\n },\n stripedColor: {\n label: '条纹颜色',\n component: 'color-pick'\n },\n axisNameColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n shadowColor: {\n label: '阴影颜色',\n component: 'color-pick'\n },\n shadowBlur: {\n label: '阴影模糊度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n shadowOffsetX: {\n label: '阴影偏移(X)',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n shadowOffsetY: {\n label: '阴影偏移(Y)',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n borderStyle: {\n label: '边框线类型',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '实线',\n value: 'solid'\n },\n {\n label: '虚线',\n value: 'dashed'\n },\n {\n label: '点状',\n value: 'dotted'\n }\n ]\n }\n },\n unitText: {\n label: '文本',\n component: 'input'\n },\n unitFontSize: {\n label: '字号',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 12,\n max: 100\n }\n },\n unitFontWeight: {\n label: '字体粗细',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '细',\n value: 100\n },\n {\n label: '正常',\n value: 400\n },\n {\n label: '粗',\n value: 700\n }\n ],\n isTransformNumber: true\n }\n },\n unitColor: {\n label: '颜色',\n component: 'color-pick'\n },\n unitTop: {\n label: '上侧距离',\n component: 'input-number',\n props: {\n suffix: '%'\n }\n },\n unitLeft: {\n label: '左侧距离',\n component: 'input-number',\n props: {\n suffix: '%'\n }\n },\n legendFormatter: {\n label: '格式化',\n component: 'textarea'\n },\n titleMode: {\n label: '标题背景',\n component: 'select',\n props: {\n options: [\n {\n label: '类型一',\n value: 'type-1'\n },\n {\n label: '类型二',\n value: 'type-2'\n }\n ]\n }\n },\n legendFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 1,\n suffix: 'px'\n }\n },\n valueType: {\n label: '传值类型',\n component: 'select',\n props: {\n options: [\n {\n label: '值',\n value: 'value'\n },\n {\n label: '名称',\n value: 'label'\n }\n ]\n }\n },\n isGroupTable: {\n label: '分组表格',\n component: 'switch'\n },\n xAxisLabelFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 1,\n suffix: 'px'\n }\n },\n yAxisLabelFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 1,\n suffix: 'px'\n }\n },\n tooltipRequestData: {\n label: '配置请求',\n component: 'tooltip-request'\n },\n tooltipBackgroundColor: {\n label: '背景颜色',\n component: 'color-pick'\n },\n seqWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n min: 0,\n max: 100,\n suffix: '%'\n }\n },\n isAllowClear: {\n label: '支持清除',\n component: 'switch'\n },\n isSummaryFixed: {\n label: '固定小计行',\n component: 'switch'\n },\n labelWidth: {\n label: '标签宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n labelOverflow: {\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 isPageBottom: {\n label: '固定在底部',\n component: 'switch'\n },\n optionFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 12,\n suffix: 'px'\n }\n },\n isShowTotal: {\n label: '显示总数',\n component: 'switch'\n },\n graphicType: {\n label: '图表类型',\n component: 'select',\n props: {\n options: [\n {\n label: '饼图',\n value: 'ecanPie'\n },\n {\n label: '折线图',\n value: 'ecanLine'\n },\n {\n label: '柱状图',\n value: 'ecanBar'\n },\n {\n label: '散点图',\n value: 'ecanScatter'\n },\n {\n label: '组合图表',\n value: 'ecanComboGraph'\n },\n {\n label: '自定义图表',\n value: 'ecanCustomGraph'\n },\n {\n label: '雷达图',\n value: 'ecanRadar'\n }\n ],\n graphic: true\n }\n },\n isAllowSpanYear: {\n label: '允许跨年',\n component: 'switch'\n },\n tabType: {\n label: '类型',\n component: 'select',\n props: {\n options: [\n {\n label: '标签',\n value: 'tabs'\n },\n {\n label: '下拉框',\n value: 'select'\n }\n ]\n }\n },\n targetRule: {\n label: '规则',\n component: 'select',\n props: {\n options: [\n {\n label: '等于',\n value: 'equal'\n },\n {\n label: '大于',\n value: 'greater'\n },\n {\n label: '大于等于',\n value: 'greater_equal'\n },\n {\n label: '小于',\n value: 'less'\n },\n {\n label: '小于等于',\n value: 'less_equal'\n }\n ]\n }\n },\n targetValue: {\n label: '值',\n component: 'input'\n },\n notExpectColor: {\n label: '颜色',\n component: 'color-pick'\n },\n buttonBackgroundColor: {\n label: '背景色',\n component: 'color-pick'\n },\n tabWidth: {\n label: '标签宽度',\n component: 'input-number',\n props: {\n min: 50,\n suffix: 'px'\n }\n },\n headerFontColor: {\n label: '文字颜色',\n component: 'color-pick'\n },\n cellFontColor: {\n label: '文字颜色',\n component: 'color-pick'\n },\n isTransparent: {\n label: '透明色',\n component: 'switch'\n },\n hideTableHeader: {\n label: '隐藏',\n component: 'switch'\n },\n closeBtnColor: {\n label: '关闭按钮颜色',\n component: 'color-pick'\n },\n paginationColor: {\n label: '页码颜色',\n component: 'color-pick'\n },\n paginationBgColor: {\n label: '页码背景色',\n component: 'color-pick'\n },\n activePaginationColor: {\n label: '当前页颜色',\n component: 'color-pick'\n },\n activePaginationBgColor: {\n label: '当前页背景色',\n component: 'color-pick'\n },\n hoverBackgroundColor: {\n label: 'hover行颜色',\n component: 'color-pick'\n },\n tooltipPosition: {\n label: '位置',\n component: 'select',\n props: {\n options: [\n {\n label: '默认',\n value: ''\n },\n {\n label: '左侧',\n value: 'left'\n },\n {\n label: '右侧',\n value: 'right'\n }\n ]\n }\n },\n tabTextAlign: {\n label: '对齐方式',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '默认',\n value: ''\n },\n {\n label: '居中',\n value: 'center'\n }\n ]\n }\n },\n seqName: {\n label: '名称',\n component: 'input'\n },\n seqIcon: {\n label: '显示图标',\n component: 'switch'\n },\n isShowCloseBtn: {\n label: '显示关闭按钮',\n component: 'switch'\n },\n markLineType: {\n label: '标线类型',\n component: 'select',\n props: {\n options: [\n {\n label: '平均值',\n value: 'average'\n },\n {\n label: '最小值',\n value: 'min'\n },\n {\n label: '最大值',\n value: 'max'\n },\n {\n label: '中位数',\n value: 'median'\n }\n ]\n }\n },\n seqFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 1,\n suffix: 'px'\n }\n },\n isAutoScroll: {\n label: '循环滚动',\n component: 'switch'\n },\n scrollSpeed: {\n label: '滚动速度',\n component: 'input-number',\n props: {\n min: 0.1\n }\n },\n isHoverStyle: {\n label: '悬浮效果',\n component: 'switch',\n show: [\n {\n match: 'isAnimation',\n value: false\n }\n ]\n },\n isAnimation: {\n label: 'JSON动画',\n component: 'switch'\n },\n animationSource: {\n label: '资源文件',\n component: 'zip-pick',\n style: 'width: auto;',\n show: [\n {\n match: 'isAnimation',\n value: true\n }\n ]\n },\n subTotalColumn: {\n label: '放置列',\n component: 'select',\n props: {\n options: [],\n dynamics: true\n }\n },\n subTotalName: {\n label: '名称',\n component: 'input'\n },\n isSortByFront: {\n label: '是否前端排序',\n component: 'switch'\n },\n legendWidth: {\n label: '区域宽度',\n component: 'input-number'\n },\n legendHeight: {\n label: '区域高度',\n component: 'input-number'\n },\n legendTextWidth: {\n label: '文字宽度',\n component: 'input-number'\n },\n legendScroll: {\n label: '分页',\n component: 'switch'\n },\n boxShadow: {\n label: '阴影',\n component: 'textarea'\n },\n limitInterval: {\n label: '限制范围',\n component: 'input-number',\n props: {\n min: 0,\n suffixValueKey: 'mode',\n suffix: [\n {\n label: '年',\n value: 'year'\n },\n {\n label: '月',\n value: 'month'\n },\n {\n label: '周',\n value: 'week'\n },\n {\n label: '日',\n value: 'day'\n },\n {\n label: '时',\n value: 'hour'\n },\n {\n label: '分',\n value: 'minute'\n }\n ]\n }\n },\n xAxisName: {\n label: '坐标轴名称',\n component: 'input'\n },\n yAxisName: {\n label: '坐标轴名称',\n component: 'input'\n },\n yAxisLeftName: {\n label: '坐标轴名称-左轴',\n component: 'input'\n },\n yAxisRightName: {\n label: '坐标轴名称-右轴',\n component: 'input'\n },\n seqIconWidth: {\n label: '图标宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n seqIconHeight: {\n label: '图标高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n seqIconOffsetX: {\n label: '横向偏移',\n component: 'input-number',\n props: {\n suffix: 'px'\n }\n },\n seqIconOffsetY: {\n label: '纵向偏移',\n component: 'input-number',\n props: {\n suffix: 'px'\n }\n },\n seqIndexFormatter: {\n label: '格式化',\n component: 'textarea'\n },\n unitInterval: {\n label: '单位间隔',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n keyFieldMap: {\n label: '数据配置',\n component: 'unit-config',\n layout: 'vertical',\n onlyType: 'circulate',\n props: {\n indexTip: `【别名】是循环列表内部要循环的组件别名;\n 【字段】是接口返回的数据字段;`,\n keyName: '别名',\n fieldName: '字段'\n }\n },\n itemWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 1,\n max: 100\n }\n },\n startValue: {\n label: '开始值',\n component: 'textarea'\n },\n endValue: {\n label: '结束值',\n component: 'textarea'\n },\n colNum: {\n label: '列数量',\n component: 'input-number'\n },\n digits: {\n label: '位数',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n unitWidth: {\n label: '单位宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 10\n }\n },\n unitHeight: {\n label: '单位高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 10\n }\n },\n counterBackgroundImage: {\n label: '背景图',\n component: 'image-pick'\n },\n showEllipsis: {\n label: '超出省略号',\n component: 'switch'\n },\n exceedConfig: {\n label: '内容超出时',\n component: 'select',\n props: {\n options: [\n {\n label: '默认',\n value: ''\n },\n {\n label: '换行',\n value: 'wrap'\n },\n {\n label: '省略号',\n value: 'ellipsis'\n }\n ]\n }\n },\n xAxisMaxValue: {\n label: '最大值',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisMaxValue: {\n label: '最大值',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n scrollDirection: {\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 hideTabs: {\n label: '隐藏标签',\n component: 'switch'\n },\n jumpType: {\n label: '跳转类型',\n component: 'select',\n updateMode: 'page',\n onlyType: 'page',\n props: {\n options: [\n {\n label: '当前项目页面',\n value: 'page'\n },\n {\n label: '外部链接页面',\n value: 'link'\n }\n ]\n }\n },\n jumpTime: {\n label: '定时',\n component: 'input-number',\n updateMode: 'page',\n onlyType: 'page',\n props: {\n min: 0,\n suffix: [\n {\n label: '时',\n value: 'hours'\n },\n {\n label: '分',\n value: 'minute'\n },\n {\n label: '秒',\n value: 'seconds'\n }\n ]\n }\n },\n jumpPage: {\n label: '项目页面',\n component: 'page-pick',\n updateMode: 'page',\n onlyType: 'page',\n show: [\n {\n match: 'jumpType',\n value: 'page'\n }\n ]\n },\n jumpLink: {\n label: '链接',\n component: 'textarea',\n updateMode: 'page',\n onlyType: 'page',\n show: [\n {\n match: 'jumpType',\n value: 'link'\n }\n ]\n },\n gridTopPx: {\n label: '上侧距离',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n gridBottomPx: {\n label: '下侧距离',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n gridLeftPx: {\n label: '左侧距离',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n gridRightPx: {\n label: '右侧距离',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n showAnimation: {\n label: '动画',\n component: 'switch',\n style: 'width: auto;',\n props: {\n tooltip: '文本组件的值会以动画的形式发生变化(只有值为数字类型的时候才生效)'\n }\n },\n showXAxisLineArrow: {\n label: '显示箭头',\n component: 'switch'\n },\n showYAxisLineArrow: {\n label: '显示箭头',\n component: 'switch'\n },\n xAxisLineInverse: {\n label: '倒序',\n component: 'switch'\n },\n yAxisLineInverse: {\n label: '倒序',\n component: 'switch'\n },\n xAxisMarkLineValue: {\n label: 'x轴标线',\n component: 'mark-link-config',\n layout: 'vertical',\n onlyType: 'scatter',\n props: {\n indexTip: `【值】代表标线在x轴上的刻度。固定的值直接输入数字;动态的值可以输入表达式,系统提供了两个变量:max和min,\n max表示x轴刻度最大值,min表示x轴刻度最小值。使用变量的时候需要用“{}”符号包裹变量,例如添加一根位于x轴正中间的标线可以这么写:({max} + {min}) / 2`\n }\n },\n yAxisMarkLineValue: {\n label: 'y轴标线',\n component: 'mark-link-config',\n layout: 'vertical',\n onlyType: 'scatter',\n props: {\n indexTip: `【值】代表标线在y轴上的刻度。固定的值直接输入数字;动态的值可以输入表达式,系统提供了两个变量:max和min,\n max表示y轴刻度最大值,min表示y轴刻度最小值。使用变量的时候需要用“{}”符号包裹变量,例如添加一根位于y轴正中间的标线可以这么写:({max} + {min}) / 2`\n }\n },\n axisMarkArea: {\n label: '标域设置',\n component: 'mark-area-config',\n layout: 'vertical',\n onlyType: 'scatter',\n props: {\n indexTip: `每个标域需要配置两个坐标点才能确定区域,所以需要填写两个坐标的x和y的值,即(x1, y1)、(x2, y2),这两个点需要配置为区域的对角两个点才能\n 正确的标出区域。如果不设置标域颜色将会使用图表默认颜色。系统提供四个变量:xMax、xMin、yMax、yMin,xMax表示x轴刻度最大值,xMin表示x轴刻度最小值,\n yMax表示y轴刻度最大值,yMin表示y轴刻度最小值。使用变量的时候需要用“{}”符号包裹变量`\n }\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, Array<String>, Array<Number>],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n },\n customOption: {\n type: Function\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, Array<String>, Array<Number>],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n },\n customOption: {\n type: Function\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 class=\"pick-colors\" v-model:value=\"colorValue\" :size=\"25\" :showAlpha=\"true\" />\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 class=\"pick-colors\" v-model:value=\"colorValue\" :size=\"25\" :showAlpha=\"true\" />\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>\r\n <a-row>\r\n <a-col :span=\"16\">\r\n <a-slider\r\n :value=\"value\"\r\n :min=\"0\"\r\n :max=\"1\"\r\n :step=\"0.1\"\r\n @change=\"onChange\"\r\n />\r\n </a-col>\r\n <a-col :span=\"8\" style=\"padding-left: 10px;\">\r\n <a-input-number\r\n :value=\"value\"\r\n :min=\"0\"\r\n :max=\"1\"\r\n :step=\"0.1\"\r\n style=\"width: 100%;\"\r\n @change=\"onChange\"\r\n />\r\n </a-col>\r\n </a-row>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from 'vue'\r\nimport { Slider as ASlider, InputNumber as AInputNumber } from 'ant-design-vue'\r\nexport default defineComponent({\r\n name: 'Slider',\r\n components: {\r\n ASlider,\r\n AInputNumber\r\n },\r\n props: {\r\n value: {\r\n type: Number,\r\n default: 1\r\n }\r\n },\r\n emits: ['change'],\r\n setup (props, { emit }) {\r\n const onChange = (value: number) => {\r\n emit('change', value)\r\n }\r\n return {\r\n onChange\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\r\n","<template>\r\n <a-row>\r\n <a-col :span=\"16\">\r\n <a-slider\r\n :value=\"value\"\r\n :min=\"0\"\r\n :max=\"1\"\r\n :step=\"0.1\"\r\n @change=\"onChange\"\r\n />\r\n </a-col>\r\n <a-col :span=\"8\" style=\"padding-left: 10px;\">\r\n <a-input-number\r\n :value=\"value\"\r\n :min=\"0\"\r\n :max=\"1\"\r\n :step=\"0.1\"\r\n style=\"width: 100%;\"\r\n @change=\"onChange\"\r\n />\r\n </a-col>\r\n </a-row>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent } from 'vue'\r\nimport { Slider as ASlider, InputNumber as AInputNumber } from 'ant-design-vue'\r\nexport default defineComponent({\r\n name: 'Slider',\r\n components: {\r\n ASlider,\r\n AInputNumber\r\n },\r\n props: {\r\n value: {\r\n type: Number,\r\n default: 1\r\n }\r\n },\r\n emits: ['change'],\r\n setup (props, { emit }) {\r\n const onChange = (value: number) => {\r\n emit('change', value)\r\n }\r\n return {\r\n onChange\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n\r\n</style>\r\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\" v-if=\"formProp.hide !== true\">\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 || v.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 || formProp.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 {\n CHARTS_OPTIONS,\n UPDATE_CHARTS_OPTIONS,\n UPDATE_TABLE_OPTIONS\n , GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\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'\nimport Slider from './slider'\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 Slider\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n componentType: {\n // 控件类型\n type: String,\n default: ''\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 graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const updateTableOptions = inject(UPDATE_TABLE_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const updateOptions = (options: any) => {\n if (props.componentType && props.componentType === 'table') {\n updateTableOptions(options)\n } else {\n updateChartsOptions(options)\n }\n }\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 effect,\n effectVal,\n props\n } = mapAttributeProp\n\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (value: any, updateValue: boolean = true) => {\n // 值改变后回调\n if (updateValue) {\n updateOptions({ [key]: value })\n if (effectVal) {\n effectVal(key, value, updateOptions, unref(graphicConfig))\n }\n } else {\n updateOptions({})\n }\n },\n ...events\n },\n ...effectProps(effect),\n props: { ...props, ...getFunProps(props, unref(graphicConfig)) }\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 // 受其他组件影响的 属性生成\n const effectProps = (effect: any) => {\n const nProps: any = {}\n for (const key in effect) {\n nProps[key] = reduce(\n effect[key].props,\n (status: boolean, item: any) => effect[key].joinType === '&&' ? (status && calcSingleItemRes(item)) : (status || calcSingleItemRes(item)),\n Boolean(effect[key].default))\n }\n return nProps\n }\n // 值变更影响其他属性-其他组件作用的结果\n const calcSingleItemRes = (item) => {\n // 影响他的属性的 其他组件的值\n const effectVal = props.props[item.props]\n let result\n switch (item.rule) {\n case '!==':\n result = effectVal !== item.value\n break\n case 'includes':\n result = effectVal.includes(item.value)\n break\n case 'action':\n result = item.value(item, props.props)\n break\n default:\n result = effectVal === item.value\n }\n return result\n }\n // 函数获取属性的值\n function getFunProps (props = {}, graphicConfig) {\n // 当前选择的元素\n const otherProps = {}\n for (const prop in props) {\n if (typeof props[prop] === 'function') {\n otherProps[prop] = props[prop](graphicConfig)\n }\n }\n return otherProps\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\" v-if=\"formProp.hide !== true\">\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 || v.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 || formProp.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 {\n CHARTS_OPTIONS,\n UPDATE_CHARTS_OPTIONS,\n UPDATE_TABLE_OPTIONS\n , GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\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'\nimport Slider from './slider'\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 Slider\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n componentType: {\n // 控件类型\n type: String,\n default: ''\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 graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const updateTableOptions = inject(UPDATE_TABLE_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const updateOptions = (options: any) => {\n if (props.componentType && props.componentType === 'table') {\n updateTableOptions(options)\n } else {\n updateChartsOptions(options)\n }\n }\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 effect,\n effectVal,\n props\n } = mapAttributeProp\n\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (value: any, updateValue: boolean = true) => {\n // 值改变后回调\n if (updateValue) {\n updateOptions({ [key]: value })\n if (effectVal) {\n effectVal(key, value, updateOptions, unref(graphicConfig))\n }\n } else {\n updateOptions({})\n }\n },\n ...events\n },\n ...effectProps(effect),\n props: { ...props, ...getFunProps(props, unref(graphicConfig)) }\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 // 受其他组件影响的 属性生成\n const effectProps = (effect: any) => {\n const nProps: any = {}\n for (const key in effect) {\n nProps[key] = reduce(\n effect[key].props,\n (status: boolean, item: any) => effect[key].joinType === '&&' ? (status && calcSingleItemRes(item)) : (status || calcSingleItemRes(item)),\n Boolean(effect[key].default))\n }\n return nProps\n }\n // 值变更影响其他属性-其他组件作用的结果\n const calcSingleItemRes = (item) => {\n // 影响他的属性的 其他组件的值\n const effectVal = props.props[item.props]\n let result\n switch (item.rule) {\n case '!==':\n result = effectVal !== item.value\n break\n case 'includes':\n result = effectVal.includes(item.value)\n break\n case 'action':\n result = item.value(item, props.props)\n break\n default:\n result = effectVal === item.value\n }\n return result\n }\n // 函数获取属性的值\n function getFunProps (props = {}, graphicConfig) {\n // 当前选择的元素\n const otherProps = {}\n for (const prop in props) {\n if (typeof props[prop] === 'function') {\n otherProps[prop] = props[prop](graphicConfig)\n }\n }\n return otherProps\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' | 'javascript'\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' || label === 'javascript') {\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' | 'javascript'\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' || label === 'javascript') {\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=\"condition\">\n <a-select class=\"field-name\" v-model:value=\"condition.rule\" :options=\"ruleOptions\" @change=\"onRuleChange\">\n </a-select>\n <a-input class=\"field-value\" v-model:value=\"condition.value\" placeholder=\"请输入值\" />\n <a-dropdown :trigger=\"['click']\">\n <menu-outlined class=\"more-icon\" />\n <template #overlay>\n <a-menu @click=\"clickConditionMenu\">\n <a-menu-item key=\"1\">添加且条件</a-menu-item>\n <a-menu-item key=\"2\">添加或条件</a-menu-item>\n </a-menu>\n </template>\n </a-dropdown>\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, unref, ref, watch, onMounted, inject } from 'vue'\nimport { CloseOutlined, MenuOutlined } from '@ant-design/icons-vue'\nimport { nanoid } from 'nanoid'\nimport { cloneDeep } from 'lodash-es'\nimport { CHANGE_CONDITION } from '@/utils/constant'\nimport {\n Menu as AMenu,\n MenuItem as AMenuItem,\n Input as AInput,\n Select as ASelect,\n Dropdown as ADropdown\n} from 'ant-design-vue'\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n MenuOutlined,\n AMenu,\n AMenuItem,\n AInput,\n ASelect,\n ADropdown\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 path: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const ruleOptions = [\n {\n label: '大于',\n value: '>'\n },\n {\n label: '大于等于',\n value: '>='\n },\n {\n label: '小于',\n value: '<'\n },\n {\n label: '小于等于',\n value: '<='\n },\n {\n label: '等于',\n value: '=='\n },\n {\n label: '不等于',\n value: '!='\n }\n ]\n\n const condition = ref({\n rule: '==',\n value: '',\n key: ''\n })\n\n const { updateCondition, deleteCondition, addCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any }, _index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n addCondition: (_path: string, _index: number, _join: '||' | '&&') => void 0\n })\n\n watch(\n condition,\n (condition) => {\n updateCondition(cloneDeep(condition), props.index, props.path)\n },\n {\n deep: true\n }\n )\n\n const onRuleChange = () => {\n // unref(condition).value = ''\n }\n\n const clickConditionMenu = (data: any) => {\n addCondition(props.path, props.index, data.key === '2' ? '||' : '&&')\n }\n\n const onDelete = () => {\n deleteCondition(props.index, props.path)\n }\n\n onMounted(() => {\n unref(condition).rule = props.data?.rule || ''\n unref(condition).value = props.data?.value || ''\n unref(condition).key = props.data?.key || nanoid()\n })\n\n return {\n ruleOptions,\n condition,\n onRuleChange,\n clickConditionMenu,\n onDelete\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: 25%;\n margin-right: 10px;\n}\n\n.field-value {\n width: 75%;\n margin-right: 10px;\n}\n\n.data-type {\n width: 100px;\n margin-left: 20px;\n}\n\n.rule {\n width: 20%;\n}\n\n.delete-icon,\n.more-icon {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"condition\">\n <a-select class=\"field-name\" v-model:value=\"condition.rule\" :options=\"ruleOptions\" @change=\"onRuleChange\">\n </a-select>\n <a-input class=\"field-value\" v-model:value=\"condition.value\" placeholder=\"请输入值\" />\n <a-dropdown :trigger=\"['click']\">\n <menu-outlined class=\"more-icon\" />\n <template #overlay>\n <a-menu @click=\"clickConditionMenu\">\n <a-menu-item key=\"1\">添加且条件</a-menu-item>\n <a-menu-item key=\"2\">添加或条件</a-menu-item>\n </a-menu>\n </template>\n </a-dropdown>\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, unref, ref, watch, onMounted, inject } from 'vue'\nimport { CloseOutlined, MenuOutlined } from '@ant-design/icons-vue'\nimport { nanoid } from 'nanoid'\nimport { cloneDeep } from 'lodash-es'\nimport { CHANGE_CONDITION } from '@/utils/constant'\nimport {\n Menu as AMenu,\n MenuItem as AMenuItem,\n Input as AInput,\n Select as ASelect,\n Dropdown as ADropdown\n} from 'ant-design-vue'\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n MenuOutlined,\n AMenu,\n AMenuItem,\n AInput,\n ASelect,\n ADropdown\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 path: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const ruleOptions = [\n {\n label: '大于',\n value: '>'\n },\n {\n label: '大于等于',\n value: '>='\n },\n {\n label: '小于',\n value: '<'\n },\n {\n label: '小于等于',\n value: '<='\n },\n {\n label: '等于',\n value: '=='\n },\n {\n label: '不等于',\n value: '!='\n }\n ]\n\n const condition = ref({\n rule: '==',\n value: '',\n key: ''\n })\n\n const { updateCondition, deleteCondition, addCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any }, _index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_index: number, _path: string) => void 0,\n // eslint-disable-next-line no-void\n addCondition: (_path: string, _index: number, _join: '||' | '&&') => void 0\n })\n\n watch(\n condition,\n (condition) => {\n updateCondition(cloneDeep(condition), props.index, props.path)\n },\n {\n deep: true\n }\n )\n\n const onRuleChange = () => {\n // unref(condition).value = ''\n }\n\n const clickConditionMenu = (data: any) => {\n addCondition(props.path, props.index, data.key === '2' ? '||' : '&&')\n }\n\n const onDelete = () => {\n deleteCondition(props.index, props.path)\n }\n\n onMounted(() => {\n unref(condition).rule = props.data?.rule || ''\n unref(condition).value = props.data?.value || ''\n unref(condition).key = props.data?.key || nanoid()\n })\n\n return {\n ruleOptions,\n condition,\n onRuleChange,\n clickConditionMenu,\n onDelete\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: 25%;\n margin-right: 10px;\n}\n\n.field-value {\n width: 75%;\n margin-right: 10px;\n}\n\n.data-type {\n width: 100px;\n margin-left: 20px;\n}\n\n.rule {\n width: 20%;\n}\n\n.delete-icon,\n.more-icon {\n margin-right: 10px;\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 :path=\"`${path ? path + '-' : ''}${index}`\"\n :list=\"item.conditions\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :key=\"item.key || `${level}-${index}`\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :path=\"path || ''\"\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 path: {\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</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 :path=\"`${path ? path + '-' : ''}${index}`\"\n :list=\"item.conditions\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :key=\"item.key || `${level}-${index}`\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :path=\"path || ''\"\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 path: {\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</style>\n","<template>\r\n <a-modal\r\n width=\"60%\"\r\n v-model:visible=\"visible\"\r\n :title=\"`条件设置`\"\r\n :destroyOnClose=\"true\"\r\n :maskClosable=\"false\"\r\n :bodyStyle=\"{\r\n height: '500px',\r\n overflow: 'auto'\r\n }\"\r\n @ok=\"handleOk\"\r\n >\r\n\r\n <div class=\"config-wrap\">\r\n <div class=\"wrap-item left\">\r\n <div class=\"title\">\r\n 条件配置\r\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\r\n <a-button\r\n class=\"add-and-condition\"\r\n @click=\"addCondition('&&')\"\r\n >\r\n 添加且条件\r\n </a-button>\r\n <a-button\r\n class=\"add-or-condition\"\r\n @click=\"addCondition('||')\"\r\n >\r\n 添加或条件\r\n </a-button>\r\n </template>\r\n <a-button style=\"margin-left: 15px;\" @click=\"addCondition()\" v-else>\r\n 添加条件\r\n </a-button>\r\n </div>\r\n <div class=\"border\">\r\n <condition-list\r\n class=\"condition-list\"\r\n :list=\"conditionList\"\r\n :level=\"0\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"wrap-item right\">\r\n <div class=\"title\">属性配置</div>\r\n <div class=\"border\">\r\n <div class=\"row\">\r\n <div>字体颜色:</div>\r\n <pick-colors\r\n class=\"pick-colors\"\r\n v-model:value=\"attribute.color\"\r\n :size=\"25\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div>图标:</div>\r\n <div style=\"display: flex; align-items: center;justify-items: center;\">\r\n <!-- fff -->\r\n <!-- <image-picker\r\n :value=\"attribute.icon\"\r\n :mini=\"true\"\r\n @change=\"onUploadChange\"\r\n /> -->\r\n <!-- <img class=\"image\" v-if=\" attribute.icon\" :src=\"imgBaseUrl + attribute.icon\" style=\"width: 16px;height: 16px\"/> -->\r\n <!-- <svg-icon v-if=\"attribute.icon\" :iSrc=\"attribute.icon\"></svg-icon> -->\r\n <a-select v-model:value=\"attribute.icon\" :options=\"iconOptions\" style=\"width: 160px\"></a-select>\r\n <pick-colors\r\n class=\"pick-colors\"\r\n v-model:value=\"attribute.iconColor\"\r\n :size=\"25\"\r\n />\r\n <!-- </div> -->\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\" v-if=\"attribute.icon\">\r\n <div>图标位置:</div>\r\n <a-radio-group v-model:value=\"attribute.iconAlign\">\r\n <a-radio-button value=\"left\">靠左</a-radio-button>\r\n <a-radio-button value=\"right\">靠右</a-radio-button>\r\n </a-radio-group>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, watch, unref, provide, computed } from 'vue'\r\nimport ConditionList from './ConditionList.vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport { nanoid } from 'nanoid'\r\nimport { CHANGE_CONDITION } from '@/utils/constant'\r\nimport PickColors from 'vue-pick-colors'\r\n// import SvgIcon from '@/components/SvgIcon.vue'\r\n// import ImagePicker from './ImagePicker.vue'\r\nimport {\r\n Button as AButton,\r\n Modal as AModal,\r\n message,\r\n Select as ASelect\r\n // Select as ASelect\r\n} from 'ant-design-vue'\r\nexport default defineComponent({\r\n components: {\r\n ConditionList,\r\n PickColors,\r\n // ImagePicker,\r\n AButton,\r\n AModal,\r\n ASelect\r\n // SvgIcon\r\n },\r\n props: {\r\n data: {\r\n type: Object,\r\n default: () => ({})\r\n },\r\n index: {\r\n type: Number,\r\n default: -1\r\n }\r\n },\r\n setup (props, { emit, expose }) {\r\n const visible = ref(false)\r\n const conditionList = ref<{ [key: string]: any } []>([])\r\n const attribute = ref<{ [key: string]: any }>({})\r\n const params = computed(() => ({\r\n pageId: unref('pageId')\r\n }))\r\n const getSameLevelList = (list: { [key: string]: any } []): { [key: string]: any } [] => {\r\n const result: { [key: string]: any } [] = []\r\n for (const l of list) {\r\n if (l.conditions) {\r\n result.push(...getSameLevelList(l.conditions))\r\n } else {\r\n result.push(l)\r\n }\r\n }\r\n return result\r\n }\r\n const handleOk = () => {\r\n const sameLevelList = getSameLevelList(unref(conditionList))\r\n if (sameLevelList.find((v: any) => !v.value || !v.rule)) {\r\n message.error('条件值或规则不能为空')\r\n return\r\n }\r\n emit('save', {\r\n conditions: unref(conditionList),\r\n attribute: unref(attribute)\r\n })\r\n visible.value = false\r\n }\r\n\r\n const addKeyValue = (conditions: { [key: string]: any } []) => {\r\n for (const item of conditions) {\r\n if (item.conditions?.length) {\r\n addKeyValue(item.conditions)\r\n } else {\r\n item.key = nanoid()\r\n }\r\n }\r\n }\r\n\r\n watch(visible, (visible) => {\r\n if (visible) {\r\n if (Array.isArray(props.data?.conditions)) {\r\n const conditions = cloneDeep(props.data?.conditions || [])\r\n addKeyValue(conditions)\r\n conditionList.value = conditions\r\n }\r\n attribute.value = cloneDeep(props.data?.attribute || {})\r\n if (!unref(attribute).color) {\r\n attribute.value.color = ''\r\n }\r\n if (!unref(attribute).iconColor) {\r\n attribute.value.iconColor = ''\r\n }\r\n } else {\r\n conditionList.value = []\r\n attribute.value = {}\r\n }\r\n }, {\r\n flush: 'post'\r\n })\r\n\r\n const showModal = () => {\r\n visible.value = true\r\n }\r\n\r\n const addCondition = (join?: '||' | '&&') => {\r\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\r\n conditionList.value = [{\r\n key: nanoid()\r\n }]\r\n } else if (unref(conditionList)[0] != null) {\r\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\r\n conditionList.value = [{\r\n join,\r\n conditions: [\r\n unref(conditionList)[0],\r\n {\r\n key: nanoid()\r\n }\r\n ]\r\n }]\r\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\r\n conditionList.value[0].conditions.push({\r\n key: nanoid()\r\n })\r\n }\r\n }\r\n }\r\n\r\n provide(CHANGE_CONDITION, {\r\n updateCondition (condition: { [key:string]: any}, index: number, path: string) {\r\n let conditions = conditionList.value\r\n const pathArr = path.split('-')\r\n if (path && pathArr?.length) {\r\n for (const i of pathArr) {\r\n if (conditions[+i]) {\r\n conditions = conditions[+i]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n if (Array.isArray(conditions) && conditions[index]) {\r\n conditions[index] = condition\r\n }\r\n },\r\n deleteCondition (index: number, path: string) {\r\n if (!path) {\r\n conditionList.value = []\r\n return\r\n }\r\n let conditions = unref(conditionList)\r\n const pathArr = path.split('-')\r\n if (pathArr?.length) {\r\n for (const i of pathArr) {\r\n if (conditions[+i]) {\r\n conditions = conditions[+i]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n if (Array.isArray(conditions) && conditions[index]) {\r\n conditions.splice(index, 1)\r\n if (conditions.length === 1) {\r\n if (pathArr.length > 0) {\r\n const lastIndex = pathArr.length - 1\r\n const lastPath = pathArr[lastIndex]\r\n const wrapperPath = pathArr.slice(0, lastIndex)\r\n let wrapperConditions = unref(conditionList)\r\n let wrapperJoin = ''\r\n for (const j of wrapperPath) {\r\n if (wrapperConditions[+j]) {\r\n wrapperJoin = wrapperConditions[+j]?.join\r\n wrapperConditions = wrapperConditions[+j]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n // 合并\r\n if (wrapperJoin === conditions[0].join) {\r\n if (Array.isArray(conditions[0].conditions)) {\r\n const temp = cloneDeep(conditions[0].conditions)\r\n wrapperConditions.splice(+lastPath, 1)\r\n wrapperConditions.splice(+lastPath, 0, ...temp)\r\n }\r\n } else {\r\n wrapperConditions[+lastPath] = conditions[0]\r\n }\r\n }\r\n } else if (conditions.length === 0) {\r\n conditionList.value = []\r\n }\r\n }\r\n }\r\n },\r\n addCondition (path: string, index: number, join: '||' | '&&') {\r\n let conditions = unref(conditionList)\r\n let cdJoin = ''\r\n const pathArr = path.split('-')\r\n if (path && pathArr?.length) {\r\n for (const i of pathArr) {\r\n if (conditions[+i]) {\r\n cdJoin = conditions[+i]?.join\r\n conditions = conditions[+i]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n if (cdJoin === join) {\r\n conditions.splice(index + 1, 0, {\r\n key: nanoid()\r\n })\r\n } else {\r\n const temp = cloneDeep(conditions[index])\r\n conditions[index] = {\r\n join,\r\n conditions: [\r\n temp,\r\n {\r\n key: nanoid()\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n })\r\n\r\n const onUploadChange = (imgSrc: string) => {\r\n attribute.value.icon = imgSrc\r\n // if (!unref(attribute).iconAlign) {\r\n // attribute.value.iconAlign = 'left'\r\n // }\r\n }\r\n\r\n const imgBaseUrl = computed(() => (window.config as any).imgBaseUrl)\r\n\r\n const iconOptions = ref([\r\n { label: '向下箭头', value: '/static/img/indicator-icon/arrow-down.svg' },\r\n { label: '向上箭头', value: '/static/img/indicator-icon/arrow-up.svg' }])\r\n\r\n expose({\r\n showModal\r\n })\r\n\r\n return {\r\n params,\r\n visible,\r\n conditionList,\r\n attribute,\r\n handleOk,\r\n addCondition,\r\n onUploadChange,\r\n imgBaseUrl,\r\n iconOptions\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.config-wrap {\r\n display: flex;\r\n align-items: center;\r\n .wrap-item {\r\n .title {\r\n height: 32px;\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 10px;\r\n }\r\n .border {\r\n width: 100%;\r\n height: 400px;\r\n border: 1px solid #e8e8e8;\r\n overflow: auto;\r\n .row {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 15px;\r\n }\r\n }\r\n &.left {\r\n width: calc(60% - 20px);\r\n margin-right: 20px;\r\n }\r\n &.right {\r\n width: 40%;\r\n .border {\r\n padding: 10px;\r\n }\r\n }\r\n }\r\n\r\n .add-and-condition {\r\n margin-left: 15px;\r\n margin-right: 15px;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <a-modal\r\n width=\"60%\"\r\n v-model:visible=\"visible\"\r\n :title=\"`条件设置`\"\r\n :destroyOnClose=\"true\"\r\n :maskClosable=\"false\"\r\n :bodyStyle=\"{\r\n height: '500px',\r\n overflow: 'auto'\r\n }\"\r\n @ok=\"handleOk\"\r\n >\r\n\r\n <div class=\"config-wrap\">\r\n <div class=\"wrap-item left\">\r\n <div class=\"title\">\r\n 条件配置\r\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\r\n <a-button\r\n class=\"add-and-condition\"\r\n @click=\"addCondition('&&')\"\r\n >\r\n 添加且条件\r\n </a-button>\r\n <a-button\r\n class=\"add-or-condition\"\r\n @click=\"addCondition('||')\"\r\n >\r\n 添加或条件\r\n </a-button>\r\n </template>\r\n <a-button style=\"margin-left: 15px;\" @click=\"addCondition()\" v-else>\r\n 添加条件\r\n </a-button>\r\n </div>\r\n <div class=\"border\">\r\n <condition-list\r\n class=\"condition-list\"\r\n :list=\"conditionList\"\r\n :level=\"0\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"wrap-item right\">\r\n <div class=\"title\">属性配置</div>\r\n <div class=\"border\">\r\n <div class=\"row\">\r\n <div>字体颜色:</div>\r\n <pick-colors\r\n class=\"pick-colors\"\r\n v-model:value=\"attribute.color\"\r\n :size=\"25\"\r\n />\r\n </div>\r\n <div class=\"row\">\r\n <div>图标:</div>\r\n <div style=\"display: flex; align-items: center;justify-items: center;\">\r\n <!-- fff -->\r\n <!-- <image-picker\r\n :value=\"attribute.icon\"\r\n :mini=\"true\"\r\n @change=\"onUploadChange\"\r\n /> -->\r\n <!-- <img class=\"image\" v-if=\" attribute.icon\" :src=\"imgBaseUrl + attribute.icon\" style=\"width: 16px;height: 16px\"/> -->\r\n <!-- <svg-icon v-if=\"attribute.icon\" :iSrc=\"attribute.icon\"></svg-icon> -->\r\n <a-select v-model:value=\"attribute.icon\" :options=\"iconOptions\" style=\"width: 160px\"></a-select>\r\n <pick-colors\r\n class=\"pick-colors\"\r\n v-model:value=\"attribute.iconColor\"\r\n :size=\"25\"\r\n />\r\n <!-- </div> -->\r\n </div>\r\n </div>\r\n <!-- <div class=\"row\" v-if=\"attribute.icon\">\r\n <div>图标位置:</div>\r\n <a-radio-group v-model:value=\"attribute.iconAlign\">\r\n <a-radio-button value=\"left\">靠左</a-radio-button>\r\n <a-radio-button value=\"right\">靠右</a-radio-button>\r\n </a-radio-group>\r\n </div> -->\r\n </div>\r\n </div>\r\n </div>\r\n </a-modal>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, watch, unref, provide, computed } from 'vue'\r\nimport ConditionList from './ConditionList.vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport { nanoid } from 'nanoid'\r\nimport { CHANGE_CONDITION } from '@/utils/constant'\r\nimport PickColors from 'vue-pick-colors'\r\n// import SvgIcon from '@/components/SvgIcon.vue'\r\n// import ImagePicker from './ImagePicker.vue'\r\nimport {\r\n Button as AButton,\r\n Modal as AModal,\r\n message,\r\n Select as ASelect\r\n // Select as ASelect\r\n} from 'ant-design-vue'\r\nexport default defineComponent({\r\n components: {\r\n ConditionList,\r\n PickColors,\r\n // ImagePicker,\r\n AButton,\r\n AModal,\r\n ASelect\r\n // SvgIcon\r\n },\r\n props: {\r\n data: {\r\n type: Object,\r\n default: () => ({})\r\n },\r\n index: {\r\n type: Number,\r\n default: -1\r\n }\r\n },\r\n setup (props, { emit, expose }) {\r\n const visible = ref(false)\r\n const conditionList = ref<{ [key: string]: any } []>([])\r\n const attribute = ref<{ [key: string]: any }>({})\r\n const params = computed(() => ({\r\n pageId: unref('pageId')\r\n }))\r\n const getSameLevelList = (list: { [key: string]: any } []): { [key: string]: any } [] => {\r\n const result: { [key: string]: any } [] = []\r\n for (const l of list) {\r\n if (l.conditions) {\r\n result.push(...getSameLevelList(l.conditions))\r\n } else {\r\n result.push(l)\r\n }\r\n }\r\n return result\r\n }\r\n const handleOk = () => {\r\n const sameLevelList = getSameLevelList(unref(conditionList))\r\n if (sameLevelList.find((v: any) => !v.value || !v.rule)) {\r\n message.error('条件值或规则不能为空')\r\n return\r\n }\r\n emit('save', {\r\n conditions: unref(conditionList),\r\n attribute: unref(attribute)\r\n })\r\n visible.value = false\r\n }\r\n\r\n const addKeyValue = (conditions: { [key: string]: any } []) => {\r\n for (const item of conditions) {\r\n if (item.conditions?.length) {\r\n addKeyValue(item.conditions)\r\n } else {\r\n item.key = nanoid()\r\n }\r\n }\r\n }\r\n\r\n watch(visible, (visible) => {\r\n if (visible) {\r\n if (Array.isArray(props.data?.conditions)) {\r\n const conditions = cloneDeep(props.data?.conditions || [])\r\n addKeyValue(conditions)\r\n conditionList.value = conditions\r\n }\r\n attribute.value = cloneDeep(props.data?.attribute || {})\r\n if (!unref(attribute).color) {\r\n attribute.value.color = ''\r\n }\r\n if (!unref(attribute).iconColor) {\r\n attribute.value.iconColor = ''\r\n }\r\n } else {\r\n conditionList.value = []\r\n attribute.value = {}\r\n }\r\n }, {\r\n flush: 'post'\r\n })\r\n\r\n const showModal = () => {\r\n visible.value = true\r\n }\r\n\r\n const addCondition = (join?: '||' | '&&') => {\r\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\r\n conditionList.value = [{\r\n key: nanoid()\r\n }]\r\n } else if (unref(conditionList)[0] != null) {\r\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\r\n conditionList.value = [{\r\n join,\r\n conditions: [\r\n unref(conditionList)[0],\r\n {\r\n key: nanoid()\r\n }\r\n ]\r\n }]\r\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\r\n conditionList.value[0].conditions.push({\r\n key: nanoid()\r\n })\r\n }\r\n }\r\n }\r\n\r\n provide(CHANGE_CONDITION, {\r\n updateCondition (condition: { [key:string]: any}, index: number, path: string) {\r\n let conditions = conditionList.value\r\n const pathArr = path.split('-')\r\n if (path && pathArr?.length) {\r\n for (const i of pathArr) {\r\n if (conditions[+i]) {\r\n conditions = conditions[+i]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n if (Array.isArray(conditions) && conditions[index]) {\r\n conditions[index] = condition\r\n }\r\n },\r\n deleteCondition (index: number, path: string) {\r\n if (!path) {\r\n conditionList.value = []\r\n return\r\n }\r\n let conditions = unref(conditionList)\r\n const pathArr = path.split('-')\r\n if (pathArr?.length) {\r\n for (const i of pathArr) {\r\n if (conditions[+i]) {\r\n conditions = conditions[+i]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n if (Array.isArray(conditions) && conditions[index]) {\r\n conditions.splice(index, 1)\r\n if (conditions.length === 1) {\r\n if (pathArr.length > 0) {\r\n const lastIndex = pathArr.length - 1\r\n const lastPath = pathArr[lastIndex]\r\n const wrapperPath = pathArr.slice(0, lastIndex)\r\n let wrapperConditions = unref(conditionList)\r\n let wrapperJoin = ''\r\n for (const j of wrapperPath) {\r\n if (wrapperConditions[+j]) {\r\n wrapperJoin = wrapperConditions[+j]?.join\r\n wrapperConditions = wrapperConditions[+j]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n // 合并\r\n if (wrapperJoin === conditions[0].join) {\r\n if (Array.isArray(conditions[0].conditions)) {\r\n const temp = cloneDeep(conditions[0].conditions)\r\n wrapperConditions.splice(+lastPath, 1)\r\n wrapperConditions.splice(+lastPath, 0, ...temp)\r\n }\r\n } else {\r\n wrapperConditions[+lastPath] = conditions[0]\r\n }\r\n }\r\n } else if (conditions.length === 0) {\r\n conditionList.value = []\r\n }\r\n }\r\n }\r\n },\r\n addCondition (path: string, index: number, join: '||' | '&&') {\r\n let conditions = unref(conditionList)\r\n let cdJoin = ''\r\n const pathArr = path.split('-')\r\n if (path && pathArr?.length) {\r\n for (const i of pathArr) {\r\n if (conditions[+i]) {\r\n cdJoin = conditions[+i]?.join\r\n conditions = conditions[+i]?.conditions as { [key:string]: any } []\r\n } else {\r\n break\r\n }\r\n }\r\n }\r\n if (cdJoin === join) {\r\n conditions.splice(index + 1, 0, {\r\n key: nanoid()\r\n })\r\n } else {\r\n const temp = cloneDeep(conditions[index])\r\n conditions[index] = {\r\n join,\r\n conditions: [\r\n temp,\r\n {\r\n key: nanoid()\r\n }\r\n ]\r\n }\r\n }\r\n }\r\n })\r\n\r\n const onUploadChange = (imgSrc: string) => {\r\n attribute.value.icon = imgSrc\r\n // if (!unref(attribute).iconAlign) {\r\n // attribute.value.iconAlign = 'left'\r\n // }\r\n }\r\n\r\n const imgBaseUrl = computed(() => (window.config as any).imgBaseUrl)\r\n\r\n const iconOptions = ref([\r\n { label: '向下箭头', value: '/static/img/indicator-icon/arrow-down.svg' },\r\n { label: '向上箭头', value: '/static/img/indicator-icon/arrow-up.svg' }])\r\n\r\n expose({\r\n showModal\r\n })\r\n\r\n return {\r\n params,\r\n visible,\r\n conditionList,\r\n attribute,\r\n handleOk,\r\n addCondition,\r\n onUploadChange,\r\n imgBaseUrl,\r\n iconOptions\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.config-wrap {\r\n display: flex;\r\n align-items: center;\r\n .wrap-item {\r\n .title {\r\n height: 32px;\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 10px;\r\n }\r\n .border {\r\n width: 100%;\r\n height: 400px;\r\n border: 1px solid #e8e8e8;\r\n overflow: auto;\r\n .row {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 15px;\r\n }\r\n }\r\n &.left {\r\n width: calc(60% - 20px);\r\n margin-right: 20px;\r\n }\r\n &.right {\r\n width: 40%;\r\n .border {\r\n padding: 10px;\r\n }\r\n }\r\n }\r\n\r\n .add-and-condition {\r\n margin-left: 15px;\r\n margin-right: 15px;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <a-modal width=\"60%\" v-model:visible=\"visible\" :title=\"`条件列表`\" :destroyOnClose=\"true\" :maskClosable=\"false\"\r\n :bodyStyle=\"{\r\n height: '500px',\r\n overflow: 'auto'\r\n }\" @ok=\"close\">\r\n\r\n <a-button @click=\"addRule\">新增条件</a-button>\r\n <a-table class=\"column-table\" size=\"small\" :columns=\"configColumns\" :data-source=\"rules\" :scroll=\"{ x: '100%', y: 400 }\"\r\n :pagination=\"false\" bordered>\r\n <template #bodyCell=\"{ column, record, index }\">\r\n <template v-if=\"column.dataIndex === 'name'\">\r\n <a-input size=\"small\" v-model:value=\"record.name\"></a-input>\r\n </template>\r\n <template v-if=\"column.dataIndex === 'operation'\">\r\n <a-button size=\"small\" @click=\"openRuleModal(record, index)\">编辑</a-button>\r\n <a-button size=\"small\" @click=\"deleteRule(index)\" style=\"margin-left: 6px\">删除</a-button>\r\n </template>\r\n </template>\r\n </a-table>\r\n </a-modal>\r\n <condition-wrap\r\n ref=\"conditionsRef\"\r\n :data=\"currentData\"\r\n :index=\"currentIndex\"\r\n @save=\"closeRuleModal\"\r\n />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, unref } from 'vue'\r\nimport ConditionWrap from '../components/ConditionWrap.vue'\r\nimport {\r\n Button as AButton,\r\n Modal as AModal,\r\n Table as ATable,\r\n Input as AInput\r\n} from 'ant-design-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\ninterface TRule {\r\n conditionCode: string,\r\n name: string,\r\n condition: any[],\r\n attribute: any\r\n}\r\ntype TRuleArr = TRule[]\r\nexport default defineComponent({\r\n components: {\r\n AModal,\r\n AButton,\r\n ATable,\r\n ConditionWrap,\r\n AInput\r\n },\r\n setup (props, { expose, emit }) {\r\n console.log(props)\r\n const visible = ref(false)\r\n const conditionsRef = ref()\r\n const currentData = ref()\r\n const currentIndex = ref(0)\r\n const configColumns: any = [\r\n {\r\n title: '条件标题',\r\n dataIndex: 'name',\r\n align: 'center',\r\n ellipsis: true,\r\n width: 100\r\n },\r\n {\r\n title: '条件内容',\r\n dataIndex: 'conditionCode',\r\n align: 'center',\r\n ellipsis: true,\r\n width: 250\r\n },\r\n {\r\n title: '条件设置',\r\n dataIndex: 'operation',\r\n ellipsis: true,\r\n width: 160\r\n }\r\n ]\r\n const rules = ref<TRuleArr>([])\r\n const curTableCompColumn = ref<any>()\r\n // 把条件配置转成表达式\r\n const handleConditions = (conditions: any, join: any = '') => {\r\n let result = ''\r\n conditions.forEach((condition, index) => {\r\n const { value, rule } = condition\r\n if (condition.conditions) {\r\n result += `(${handleConditions(condition.conditions, condition.join)})`\r\n } else if (value && rule) {\r\n result += `value ${rule} '${value}'`\r\n }\r\n result += `${index === conditions.length - 1 ? '' : join ? ' ' + join + ' ' : ''}`\r\n })\r\n return result\r\n }\r\n // 打开弹窗初始化\r\n const open = (tableCompColumn: any) => {\r\n rules.value = []\r\n curTableCompColumn.value = tableCompColumn\r\n const { rules: oldRules, conditionCode, conditions, attribute } = tableCompColumn\r\n if (oldRules) {\r\n rules.value = cloneDeep(oldRules)\r\n } else {\r\n if (conditionCode) {\r\n const newRules = { conditionCode, conditions, attribute, name: '新条件' } as any\r\n rules.value.push(cloneDeep(newRules))\r\n delete tableCompColumn.conditionCode\r\n delete tableCompColumn.conditions\r\n delete tableCompColumn.attribute\r\n }\r\n }\r\n visible.value = true\r\n }\r\n // 关闭弹窗提交\r\n const close = () => {\r\n visible.value = false\r\n for (const rule of rules.value) {\r\n if (rule.conditionCode === '') return '不能条件为空!'\r\n }\r\n emit('confirm', unref(rules))\r\n }\r\n // 新建规则\r\n const addRule = () => {\r\n rules.value.push({\r\n conditionCode: '',\r\n name: '新条件',\r\n condition: [],\r\n attribute: {}\r\n })\r\n }\r\n // 关闭编辑规则弹窗\r\n const closeRuleModal = (data: any) => {\r\n data.conditionCode = handleConditions(data.conditions)\r\n Object.assign(rules.value[currentIndex.value], data)\r\n }\r\n // 打开编辑规则弹窗\r\n const openRuleModal = (record: any, index: number) => {\r\n unref(conditionsRef).showModal()\r\n currentData.value = cloneDeep(record)\r\n currentIndex.value = index\r\n }\r\n const deleteRule = (index: number) => { rules.value.splice(index, 1) }\r\n expose({\r\n open\r\n })\r\n\r\n return {\r\n visible,\r\n currentData,\r\n currentIndex,\r\n configColumns,\r\n conditionsRef,\r\n rules,\r\n open,\r\n close,\r\n addRule,\r\n openRuleModal,\r\n closeRuleModal,\r\n deleteRule\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\"></style>\r\n","<template>\r\n <a-modal width=\"60%\" v-model:visible=\"visible\" :title=\"`条件列表`\" :destroyOnClose=\"true\" :maskClosable=\"false\"\r\n :bodyStyle=\"{\r\n height: '500px',\r\n overflow: 'auto'\r\n }\" @ok=\"close\">\r\n\r\n <a-button @click=\"addRule\">新增条件</a-button>\r\n <a-table class=\"column-table\" size=\"small\" :columns=\"configColumns\" :data-source=\"rules\" :scroll=\"{ x: '100%', y: 400 }\"\r\n :pagination=\"false\" bordered>\r\n <template #bodyCell=\"{ column, record, index }\">\r\n <template v-if=\"column.dataIndex === 'name'\">\r\n <a-input size=\"small\" v-model:value=\"record.name\"></a-input>\r\n </template>\r\n <template v-if=\"column.dataIndex === 'operation'\">\r\n <a-button size=\"small\" @click=\"openRuleModal(record, index)\">编辑</a-button>\r\n <a-button size=\"small\" @click=\"deleteRule(index)\" style=\"margin-left: 6px\">删除</a-button>\r\n </template>\r\n </template>\r\n </a-table>\r\n </a-modal>\r\n <condition-wrap\r\n ref=\"conditionsRef\"\r\n :data=\"currentData\"\r\n :index=\"currentIndex\"\r\n @save=\"closeRuleModal\"\r\n />\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, unref } from 'vue'\r\nimport ConditionWrap from '../components/ConditionWrap.vue'\r\nimport {\r\n Button as AButton,\r\n Modal as AModal,\r\n Table as ATable,\r\n Input as AInput\r\n} from 'ant-design-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\ninterface TRule {\r\n conditionCode: string,\r\n name: string,\r\n condition: any[],\r\n attribute: any\r\n}\r\ntype TRuleArr = TRule[]\r\nexport default defineComponent({\r\n components: {\r\n AModal,\r\n AButton,\r\n ATable,\r\n ConditionWrap,\r\n AInput\r\n },\r\n setup (props, { expose, emit }) {\r\n console.log(props)\r\n const visible = ref(false)\r\n const conditionsRef = ref()\r\n const currentData = ref()\r\n const currentIndex = ref(0)\r\n const configColumns: any = [\r\n {\r\n title: '条件标题',\r\n dataIndex: 'name',\r\n align: 'center',\r\n ellipsis: true,\r\n width: 100\r\n },\r\n {\r\n title: '条件内容',\r\n dataIndex: 'conditionCode',\r\n align: 'center',\r\n ellipsis: true,\r\n width: 250\r\n },\r\n {\r\n title: '条件设置',\r\n dataIndex: 'operation',\r\n ellipsis: true,\r\n width: 160\r\n }\r\n ]\r\n const rules = ref<TRuleArr>([])\r\n const curTableCompColumn = ref<any>()\r\n // 把条件配置转成表达式\r\n const handleConditions = (conditions: any, join: any = '') => {\r\n let result = ''\r\n conditions.forEach((condition, index) => {\r\n const { value, rule } = condition\r\n if (condition.conditions) {\r\n result += `(${handleConditions(condition.conditions, condition.join)})`\r\n } else if (value && rule) {\r\n result += `value ${rule} '${value}'`\r\n }\r\n result += `${index === conditions.length - 1 ? '' : join ? ' ' + join + ' ' : ''}`\r\n })\r\n return result\r\n }\r\n // 打开弹窗初始化\r\n const open = (tableCompColumn: any) => {\r\n rules.value = []\r\n curTableCompColumn.value = tableCompColumn\r\n const { rules: oldRules, conditionCode, conditions, attribute } = tableCompColumn\r\n if (oldRules) {\r\n rules.value = cloneDeep(oldRules)\r\n } else {\r\n if (conditionCode) {\r\n const newRules = { conditionCode, conditions, attribute, name: '新条件' } as any\r\n rules.value.push(cloneDeep(newRules))\r\n delete tableCompColumn.conditionCode\r\n delete tableCompColumn.conditions\r\n delete tableCompColumn.attribute\r\n }\r\n }\r\n visible.value = true\r\n }\r\n // 关闭弹窗提交\r\n const close = () => {\r\n visible.value = false\r\n for (const rule of rules.value) {\r\n if (rule.conditionCode === '') return '不能条件为空!'\r\n }\r\n emit('confirm', unref(rules))\r\n }\r\n // 新建规则\r\n const addRule = () => {\r\n rules.value.push({\r\n conditionCode: '',\r\n name: '新条件',\r\n condition: [],\r\n attribute: {}\r\n })\r\n }\r\n // 关闭编辑规则弹窗\r\n const closeRuleModal = (data: any) => {\r\n data.conditionCode = handleConditions(data.conditions)\r\n Object.assign(rules.value[currentIndex.value], data)\r\n }\r\n // 打开编辑规则弹窗\r\n const openRuleModal = (record: any, index: number) => {\r\n unref(conditionsRef).showModal()\r\n currentData.value = cloneDeep(record)\r\n currentIndex.value = index\r\n }\r\n const deleteRule = (index: number) => { rules.value.splice(index, 1) }\r\n expose({\r\n open\r\n })\r\n\r\n return {\r\n visible,\r\n currentData,\r\n currentIndex,\r\n configColumns,\r\n conditionsRef,\r\n rules,\r\n open,\r\n close,\r\n addRule,\r\n openRuleModal,\r\n closeRuleModal,\r\n deleteRule\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\"></style>\r\n","<template>\r\n <div class=\"table-column-config\">\r\n <a-table\r\n class=\"column-table\"\r\n :columns=\"configColumns\"\r\n :data-source=\"configData\"\r\n :scroll=\"{ x: '100%', y: 400 }\"\r\n :pagination=\"false\"\r\n bordered\r\n >\r\n <template #bodyCell=\"{ column, text, record, index }\">\r\n <template v-if=\"column.dataIndex === 'style'\">\r\n <a-checkbox\r\n @change=\"changeRenderBool(record, $event)\"\r\n :checked=\"record.style\"\r\n ></a-checkbox>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'width'\">\r\n <a-input v-model:value.trim=\"record.width\" />\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'renderText'\">\r\n <template v-if=\"!record.style\">\r\n {{ text }}\r\n </template>\r\n <a-input\r\n v-else\r\n v-model:value=\"record.renderText\"\r\n :readOnly=\"true\"\r\n @click=\"renderSave(record, 'renderText', '列自定义函数')\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'headerTemplate'\">\r\n <template v-if=\"!record.style\">\r\n {{ text }}\r\n </template>\r\n <a-input\r\n v-else\r\n v-model:value=\"record.headerTemplate\"\r\n :readOnly=\"true\"\r\n @click=\"renderSave(record, 'headerTemplate', '列表头自定义函数')\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'headerAlign'\">\r\n <a-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n v-model:value=\"record.headerAlign\"\r\n >\r\n <a-select-option value=\"left\">左对齐</a-select-option>\r\n <a-select-option value=\"center\">居中</a-select-option>\r\n <a-select-option value=\"right\">右对齐</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'align'\">\r\n <a-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n v-model:value=\"record.align\"\r\n >\r\n <a-select-option value=\"left\">左对齐</a-select-option>\r\n <a-select-option value=\"center\">居中</a-select-option>\r\n <a-select-option value=\"right\">右对齐</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'fixed'\">\r\n <a-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n v-model:value=\"record.fixed\"\r\n >\r\n <a-select-option value=\"\">不固定</a-select-option>\r\n <a-select-option value=\"left\">靠左</a-select-option>\r\n <a-select-option value=\"right\">靠右</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'dataFormat'\">\r\n <a-select\r\n v-model:value=\"record.dataFormat\"\r\n style=\"width: 100%\"\r\n mode=\"multiple\"\r\n allowClear\r\n :maxTagCount=\"1\"\r\n >\r\n <a-select-option value=\"#,000\">千分位</a-select-option>\r\n <a-select-option value=\"#.00\">保留小数</a-select-option>\r\n <a-select-option value=\"#\">保留有效位</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'retentiondigit'\">\r\n <a-input-number\r\n v-if=\"record.dataFormat && record.dataFormat.includes('#.00')\"\r\n v-model:value=\"record.retentiondigit\"\r\n :min=\"0\"\r\n :max=\"10\"\r\n ></a-input-number>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'calculateShow'\">\r\n <a-checkbox v-model:checked=\"record.calculateShow.sum\">合计</a-checkbox>\r\n <a-checkbox v-model:checked=\"record.calculateShow.avg\">平均</a-checkbox>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'conditions'\">\r\n <code-outlined class=\"icon\" @click.stop=\"openConditions(index)\"/>\r\n </template>\r\n </template>\r\n </a-table>\r\n <a-modal\r\n :title=\"editorTitle\"\r\n v-model:visible=\"editorVisible\"\r\n destroy-on-close\r\n width=\"700px\"\r\n :bodyStyle=\"{\r\n height: '500px',\r\n overflow: 'auto'\r\n }\"\r\n centered\r\n :zIndex=\"1020\"\r\n okText=\"保存\"\r\n cancelText=\"取消\"\r\n @ok=\"handleOk\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"javascript\"\r\n :options=\"{\r\n fontSize: 16,\r\n lineHeight: 18\r\n }\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-modal>\r\n <conditions-table\r\n @confirm=\"confirmConditions\"\r\n ref=\"conditionsTableRef\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n defineComponent,\r\n ref,\r\n inject,\r\n watch,\r\n onMounted,\r\n unref,\r\n computed\r\n} from 'vue'\r\nimport {\r\n Table as ATable,\r\n Modal as AModal,\r\n Checkbox as ACheckbox,\r\n Input as AInput,\r\n InputNumber as AInputNumber,\r\n Select as ASelect,\r\n SelectOption as ASelectOption\r\n} from 'ant-design-vue'\r\nimport { SELECTED_COMPONENT, GRAPHIC_CONFIG } from '@/utils/constant'\r\nimport { CodeOutlined } from '@ant-design/icons-vue'\r\nimport 'ant-design-vue/es/table/style'\r\nimport Editor from '@/indicator/editor'\r\nimport ConditionsTable from './components/ConditionsTable.vue'\r\n\r\nconst configColumns: any = [\r\n {\r\n title: '列名',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '参数',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '列自定义',\r\n dataIndex: 'style',\r\n align: 'center',\r\n ellipsis: true,\r\n width: 100\r\n },\r\n {\r\n title: '列宽度(px/%)',\r\n dataIndex: 'width',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '列自定义函数',\r\n dataIndex: 'renderText',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '列表头自定义函数',\r\n dataIndex: 'headerTemplate',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '数据格式化',\r\n dataIndex: 'dataFormat',\r\n ellipsis: true,\r\n width: 225\r\n },\r\n {\r\n title: '保留小数位数',\r\n dataIndex: 'retentiondigit',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '表头/表尾列对齐方式',\r\n dataIndex: 'headerAlign',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '内容列对齐方式',\r\n dataIndex: 'align',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '固定当前列',\r\n dataIndex: 'fixed',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '计算行',\r\n dataIndex: 'calculateShow',\r\n ellipsis: true,\r\n width: 180\r\n },\r\n {\r\n title: '条件设置',\r\n dataIndex: 'conditions',\r\n ellipsis: true,\r\n width: 120\r\n }\r\n]\r\n\r\nexport default defineComponent({\r\n name: 'TableColumnConfig',\r\n components: {\r\n ATable,\r\n AModal,\r\n ACheckbox,\r\n AInput,\r\n AInputNumber,\r\n ASelect,\r\n ASelectOption,\r\n Editor,\r\n CodeOutlined,\r\n ConditionsTable\r\n },\r\n setup () {\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n\r\n const isGroupTable = computed(\r\n () => !!unref(selectedComponent)?.isGroupTable\r\n )\r\n const tableColumns = computed(() => {\r\n return unref(selectedComponent)?.tableColumns || []\r\n })\r\n const configData = ref([])\r\n let saveObj = null\r\n let saveKey = ''\r\n const optionCode = ref<string>('')\r\n const editorTitle = ref<String>('')\r\n const editorVisible = ref<any>(false)\r\n watch(\r\n graphicConfig,\r\n () => {\r\n handleTableData()\r\n },\r\n {\r\n deep: true,\r\n flush: 'post'\r\n }\r\n )\r\n const handleTableData = () => {\r\n let columns = []\r\n configData.value = []\r\n if (!isGroupTable.value) {\r\n const queryColumnList = unref(graphicConfig)?.queryColumnList || []\r\n const indicators = unref(graphicConfig)?.indicators || []\r\n columns = [...queryColumnList, ...indicators]\r\n } else {\r\n const rowHeaderList = unref(graphicConfig)?.rowHeaderList || []\r\n const indicators = unref(graphicConfig)?.indicators || []\r\n columns = [...rowHeaderList, ...indicators]\r\n }\r\n console.log('columns', columns, tableColumns)\r\n columns.forEach((column) => {\r\n let tableColumn = unref(tableColumns)?.find((item: any) => item.label === column.label)\r\n if (!tableColumn) {\r\n tableColumn = {\r\n label: column.label,\r\n prop: column.label,\r\n style: false,\r\n width: '',\r\n renderText: '',\r\n headerTemplate: '',\r\n headerAlign: 'left',\r\n align: 'left',\r\n fixed: '',\r\n dataFormat: [],\r\n retentiondigit: null,\r\n calculateShow: { // 表格计算显示哪些行\r\n sum: false, // 求和\r\n avg: false // 求平均\r\n },\r\n conditions: [], // 条件配置\r\n attribute: {} // 条件属性\r\n }\r\n }\r\n if (!tableColumn.calculateShow) {\r\n tableColumn.calculateShow = {\r\n sum: false,\r\n avg: false\r\n }\r\n }\r\n configData.value.push(tableColumn)\r\n })\r\n selectedComponent.value.tableColumns = configData.value\r\n }\r\n onMounted(() => {\r\n handleTableData()\r\n })\r\n // 是否开启列自定义函数\r\n const changeRenderBool = (row, e) => {\r\n row.style = e.target.checked\r\n if (row.style) {\r\n if (row.renderBool === undefined) {\r\n row.renderBool = false\r\n }\r\n } else {\r\n delete row.renderBool\r\n }\r\n }\r\n const renderSave = (obj: any, key: string, title: string) => {\r\n if (obj && key) {\r\n saveObj = obj\r\n saveKey = key\r\n optionCode.value = obj[key] || ''\r\n editorVisible.value = true\r\n editorTitle.value = title\r\n }\r\n }\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 handleOk = () => {\r\n if (saveObj && saveKey) {\r\n saveObj[saveKey] = optionCode.value\r\n }\r\n optionCode.value = ''\r\n editorVisible.value = false\r\n }\r\n // 条件属性设置弹窗\r\n const currentData = ref()\r\n const currentIndex = ref(0)\r\n const conditionsTableRef = ref()\r\n const openConditions = (index: number) => {\r\n currentIndex.value = index\r\n currentData.value = configData.value[index]\r\n unref(conditionsTableRef).open(configData.value[index])\r\n }\r\n const confirmConditions = (rules: any) => {\r\n currentData.value.rules = rules\r\n }\r\n return {\r\n configColumns,\r\n configData,\r\n editorTitle,\r\n editorVisible,\r\n optionCode,\r\n handleOk,\r\n renderSave,\r\n onEditorChange,\r\n changeRenderBool,\r\n openConditions,\r\n confirmConditions,\r\n conditionsTableRef\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.table-column-config {\r\n // max-width: 1100px;\r\n width: 100%;\r\n .column-table {\r\n width: 100%;\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","<template>\r\n <div class=\"table-column-config\">\r\n <a-table\r\n class=\"column-table\"\r\n :columns=\"configColumns\"\r\n :data-source=\"configData\"\r\n :scroll=\"{ x: '100%', y: 400 }\"\r\n :pagination=\"false\"\r\n bordered\r\n >\r\n <template #bodyCell=\"{ column, text, record, index }\">\r\n <template v-if=\"column.dataIndex === 'style'\">\r\n <a-checkbox\r\n @change=\"changeRenderBool(record, $event)\"\r\n :checked=\"record.style\"\r\n ></a-checkbox>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'width'\">\r\n <a-input v-model:value.trim=\"record.width\" />\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'renderText'\">\r\n <template v-if=\"!record.style\">\r\n {{ text }}\r\n </template>\r\n <a-input\r\n v-else\r\n v-model:value=\"record.renderText\"\r\n :readOnly=\"true\"\r\n @click=\"renderSave(record, 'renderText', '列自定义函数')\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'headerTemplate'\">\r\n <template v-if=\"!record.style\">\r\n {{ text }}\r\n </template>\r\n <a-input\r\n v-else\r\n v-model:value=\"record.headerTemplate\"\r\n :readOnly=\"true\"\r\n @click=\"renderSave(record, 'headerTemplate', '列表头自定义函数')\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'headerAlign'\">\r\n <a-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n v-model:value=\"record.headerAlign\"\r\n >\r\n <a-select-option value=\"left\">左对齐</a-select-option>\r\n <a-select-option value=\"center\">居中</a-select-option>\r\n <a-select-option value=\"right\">右对齐</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'align'\">\r\n <a-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n v-model:value=\"record.align\"\r\n >\r\n <a-select-option value=\"left\">左对齐</a-select-option>\r\n <a-select-option value=\"center\">居中</a-select-option>\r\n <a-select-option value=\"right\">右对齐</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'fixed'\">\r\n <a-select\r\n style=\"width: 100%\"\r\n size=\"small\"\r\n v-model:value=\"record.fixed\"\r\n >\r\n <a-select-option value=\"\">不固定</a-select-option>\r\n <a-select-option value=\"left\">靠左</a-select-option>\r\n <a-select-option value=\"right\">靠右</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'dataFormat'\">\r\n <a-select\r\n v-model:value=\"record.dataFormat\"\r\n style=\"width: 100%\"\r\n mode=\"multiple\"\r\n allowClear\r\n :maxTagCount=\"1\"\r\n >\r\n <a-select-option value=\"#,000\">千分位</a-select-option>\r\n <a-select-option value=\"#.00\">保留小数</a-select-option>\r\n <a-select-option value=\"#\">保留有效位</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'retentiondigit'\">\r\n <a-input-number\r\n v-if=\"record.dataFormat && record.dataFormat.includes('#.00')\"\r\n v-model:value=\"record.retentiondigit\"\r\n :min=\"0\"\r\n :max=\"10\"\r\n ></a-input-number>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'calculateShow'\">\r\n <a-checkbox v-model:checked=\"record.calculateShow.sum\">合计</a-checkbox>\r\n <a-checkbox v-model:checked=\"record.calculateShow.avg\">平均</a-checkbox>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'conditions'\">\r\n <code-outlined class=\"icon\" @click.stop=\"openConditions(index)\"/>\r\n </template>\r\n </template>\r\n </a-table>\r\n <a-modal\r\n :title=\"editorTitle\"\r\n v-model:visible=\"editorVisible\"\r\n destroy-on-close\r\n width=\"700px\"\r\n :bodyStyle=\"{\r\n height: '500px',\r\n overflow: 'auto'\r\n }\"\r\n centered\r\n :zIndex=\"1020\"\r\n okText=\"保存\"\r\n cancelText=\"取消\"\r\n @ok=\"handleOk\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"javascript\"\r\n :options=\"{\r\n fontSize: 16,\r\n lineHeight: 18\r\n }\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-modal>\r\n <conditions-table\r\n @confirm=\"confirmConditions\"\r\n ref=\"conditionsTableRef\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n defineComponent,\r\n ref,\r\n inject,\r\n watch,\r\n onMounted,\r\n unref,\r\n computed\r\n} from 'vue'\r\nimport {\r\n Table as ATable,\r\n Modal as AModal,\r\n Checkbox as ACheckbox,\r\n Input as AInput,\r\n InputNumber as AInputNumber,\r\n Select as ASelect,\r\n SelectOption as ASelectOption\r\n} from 'ant-design-vue'\r\nimport { SELECTED_COMPONENT, GRAPHIC_CONFIG } from '@/utils/constant'\r\nimport { CodeOutlined } from '@ant-design/icons-vue'\r\nimport 'ant-design-vue/es/table/style'\r\nimport Editor from '@/indicator/editor'\r\nimport ConditionsTable from './components/ConditionsTable.vue'\r\n\r\nconst configColumns: any = [\r\n {\r\n title: '列名',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '参数',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '列自定义',\r\n dataIndex: 'style',\r\n align: 'center',\r\n ellipsis: true,\r\n width: 100\r\n },\r\n {\r\n title: '列宽度(px/%)',\r\n dataIndex: 'width',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '列自定义函数',\r\n dataIndex: 'renderText',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '列表头自定义函数',\r\n dataIndex: 'headerTemplate',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '数据格式化',\r\n dataIndex: 'dataFormat',\r\n ellipsis: true,\r\n width: 225\r\n },\r\n {\r\n title: '保留小数位数',\r\n dataIndex: 'retentiondigit',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '表头/表尾列对齐方式',\r\n dataIndex: 'headerAlign',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '内容列对齐方式',\r\n dataIndex: 'align',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '固定当前列',\r\n dataIndex: 'fixed',\r\n ellipsis: true,\r\n width: 170\r\n },\r\n {\r\n title: '计算行',\r\n dataIndex: 'calculateShow',\r\n ellipsis: true,\r\n width: 180\r\n },\r\n {\r\n title: '条件设置',\r\n dataIndex: 'conditions',\r\n ellipsis: true,\r\n width: 120\r\n }\r\n]\r\n\r\nexport default defineComponent({\r\n name: 'TableColumnConfig',\r\n components: {\r\n ATable,\r\n AModal,\r\n ACheckbox,\r\n AInput,\r\n AInputNumber,\r\n ASelect,\r\n ASelectOption,\r\n Editor,\r\n CodeOutlined,\r\n ConditionsTable\r\n },\r\n setup () {\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n\r\n const isGroupTable = computed(\r\n () => !!unref(selectedComponent)?.isGroupTable\r\n )\r\n const tableColumns = computed(() => {\r\n return unref(selectedComponent)?.tableColumns || []\r\n })\r\n const configData = ref([])\r\n let saveObj = null\r\n let saveKey = ''\r\n const optionCode = ref<string>('')\r\n const editorTitle = ref<String>('')\r\n const editorVisible = ref<any>(false)\r\n watch(\r\n graphicConfig,\r\n () => {\r\n handleTableData()\r\n },\r\n {\r\n deep: true,\r\n flush: 'post'\r\n }\r\n )\r\n const handleTableData = () => {\r\n let columns = []\r\n configData.value = []\r\n if (!isGroupTable.value) {\r\n const queryColumnList = unref(graphicConfig)?.queryColumnList || []\r\n const indicators = unref(graphicConfig)?.indicators || []\r\n columns = [...queryColumnList, ...indicators]\r\n } else {\r\n const rowHeaderList = unref(graphicConfig)?.rowHeaderList || []\r\n const indicators = unref(graphicConfig)?.indicators || []\r\n columns = [...rowHeaderList, ...indicators]\r\n }\r\n console.log('columns', columns, tableColumns)\r\n columns.forEach((column) => {\r\n let tableColumn = unref(tableColumns)?.find((item: any) => item.label === column.label)\r\n if (!tableColumn) {\r\n tableColumn = {\r\n label: column.label,\r\n prop: column.label,\r\n style: false,\r\n width: '',\r\n renderText: '',\r\n headerTemplate: '',\r\n headerAlign: 'left',\r\n align: 'left',\r\n fixed: '',\r\n dataFormat: [],\r\n retentiondigit: null,\r\n calculateShow: { // 表格计算显示哪些行\r\n sum: false, // 求和\r\n avg: false // 求平均\r\n },\r\n conditions: [], // 条件配置\r\n attribute: {} // 条件属性\r\n }\r\n }\r\n if (!tableColumn.calculateShow) {\r\n tableColumn.calculateShow = {\r\n sum: false,\r\n avg: false\r\n }\r\n }\r\n configData.value.push(tableColumn)\r\n })\r\n selectedComponent.value.tableColumns = configData.value\r\n }\r\n onMounted(() => {\r\n handleTableData()\r\n })\r\n // 是否开启列自定义函数\r\n const changeRenderBool = (row, e) => {\r\n row.style = e.target.checked\r\n if (row.style) {\r\n if (row.renderBool === undefined) {\r\n row.renderBool = false\r\n }\r\n } else {\r\n delete row.renderBool\r\n }\r\n }\r\n const renderSave = (obj: any, key: string, title: string) => {\r\n if (obj && key) {\r\n saveObj = obj\r\n saveKey = key\r\n optionCode.value = obj[key] || ''\r\n editorVisible.value = true\r\n editorTitle.value = title\r\n }\r\n }\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 handleOk = () => {\r\n if (saveObj && saveKey) {\r\n saveObj[saveKey] = optionCode.value\r\n }\r\n optionCode.value = ''\r\n editorVisible.value = false\r\n }\r\n // 条件属性设置弹窗\r\n const currentData = ref()\r\n const currentIndex = ref(0)\r\n const conditionsTableRef = ref()\r\n const openConditions = (index: number) => {\r\n currentIndex.value = index\r\n currentData.value = configData.value[index]\r\n unref(conditionsTableRef).open(configData.value[index])\r\n }\r\n const confirmConditions = (rules: any) => {\r\n currentData.value.rules = rules\r\n }\r\n return {\r\n configColumns,\r\n configData,\r\n editorTitle,\r\n editorVisible,\r\n optionCode,\r\n handleOk,\r\n renderSave,\r\n onEditorChange,\r\n changeRenderBool,\r\n openConditions,\r\n confirmConditions,\r\n conditionsTableRef\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.table-column-config {\r\n // max-width: 1100px;\r\n width: 100%;\r\n .column-table {\r\n width: 100%;\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","<template>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <a-collapse-panel key=\"cardFormat\" header=\"数据格式化\">\r\n <a-table\r\n class=\"column-table\"\r\n :columns=\"configColumns\"\r\n :data-source=\"graphicConfig.indicators || []\"\r\n :scroll=\"{ x: '100%', y: 400 }\"\r\n :pagination=\"false\"\r\n bordered\r\n >\r\n <template #bodyCell=\"{ column, record }\">\r\n <template v-if=\"column.dataIndex === 'dataFormat' && columnsConfigMap[record.label]\">\r\n <a-select\r\n v-model:value=\"columnsConfigMap[record.label].dataFormat\"\r\n style=\"width: 100%\"\r\n mode=\"multiple\"\r\n allowClear\r\n :maxTagCount=\"1\"\r\n >\r\n <a-select-option value=\"#,000\">千分位</a-select-option>\r\n <a-select-option value=\"#.00\">保留小数</a-select-option>\r\n <a-select-option value=\"#\">保留有效位</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'retentiondigit' && columnsConfigMap[record.label]\">\r\n <a-input-number\r\n v-if=\"\r\n columnsConfigMap[record.label].dataFormat && columnsConfigMap[record.label].dataFormat.includes('#.00')\r\n \"\r\n v-model:value=\"columnsConfigMap[record.label].retentiondigit\"\r\n :min=\"0\"\r\n :max=\"10\"\r\n ></a-input-number>\r\n </template>\r\n </template>\r\n </a-table>\r\n </a-collapse-panel>\r\n </a-collapse>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, inject, watch, onMounted, unref, computed, ref } from 'vue'\r\nimport {\r\n Table as ATable,\r\n InputNumber as AInputNumber,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel\r\n} from 'ant-design-vue'\r\nimport { SELECTED_COMPONENT, GRAPHIC_CONFIG } from '@/utils/constant'\r\nimport 'ant-design-vue/es/table/style'\r\nconst configColumns: any = [\r\n {\r\n title: '列名',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '参数',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '数据格式化',\r\n dataIndex: 'dataFormat',\r\n ellipsis: true,\r\n width: 225\r\n },\r\n {\r\n title: '保留小数位数',\r\n dataIndex: 'retentiondigit',\r\n ellipsis: true,\r\n width: 135\r\n }\r\n]\r\n\r\nexport default defineComponent({\r\n name: 'TableColumnConfig',\r\n components: {\r\n ATable,\r\n AInputNumber,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel\r\n },\r\n setup () {\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const activePanel = ref<string[]>(['cardFormat'])\r\n\r\n const handleTableData = () => {\r\n const indicators = unref(graphicConfig)?.indicators || []\r\n const columnsConfigMap = selectedComponent.value.columnsConfigMap || {}\r\n const defaultConfig = { dataFormat: [], retentiondigit: '' }\r\n const newColumnsConfig = indicators.reduce(\r\n (a: any, b: any) => ({ ...a, [b.label]: { ...defaultConfig, ...(columnsConfigMap[b.label] || {}) } }),\r\n {}\r\n )\r\n selectedComponent.value.columnsConfigMap = newColumnsConfig\r\n }\r\n watch(\r\n graphicConfig,\r\n () => {\r\n handleTableData()\r\n },\r\n {\r\n deep: true,\r\n flush: 'post'\r\n }\r\n )\r\n onMounted(() => {\r\n handleTableData()\r\n })\r\n const columnsConfigMap = computed(() => selectedComponent.value.columnsConfigMap || {})\r\n return {\r\n selectedComponent,\r\n configColumns,\r\n graphicConfig,\r\n columnsConfigMap,\r\n activePanel\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.table-column-config {\r\n // max-width: 1100px;\r\n width: 100%;\r\n .column-table {\r\n width: 100%;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <a-collapse-panel key=\"cardFormat\" header=\"数据格式化\">\r\n <a-table\r\n class=\"column-table\"\r\n :columns=\"configColumns\"\r\n :data-source=\"graphicConfig.indicators || []\"\r\n :scroll=\"{ x: '100%', y: 400 }\"\r\n :pagination=\"false\"\r\n bordered\r\n >\r\n <template #bodyCell=\"{ column, record }\">\r\n <template v-if=\"column.dataIndex === 'dataFormat' && columnsConfigMap[record.label]\">\r\n <a-select\r\n v-model:value=\"columnsConfigMap[record.label].dataFormat\"\r\n style=\"width: 100%\"\r\n mode=\"multiple\"\r\n allowClear\r\n :maxTagCount=\"1\"\r\n >\r\n <a-select-option value=\"#,000\">千分位</a-select-option>\r\n <a-select-option value=\"#.00\">保留小数</a-select-option>\r\n <a-select-option value=\"#\">保留有效位</a-select-option>\r\n </a-select>\r\n </template>\r\n <template v-else-if=\"column.dataIndex === 'retentiondigit' && columnsConfigMap[record.label]\">\r\n <a-input-number\r\n v-if=\"\r\n columnsConfigMap[record.label].dataFormat && columnsConfigMap[record.label].dataFormat.includes('#.00')\r\n \"\r\n v-model:value=\"columnsConfigMap[record.label].retentiondigit\"\r\n :min=\"0\"\r\n :max=\"10\"\r\n ></a-input-number>\r\n </template>\r\n </template>\r\n </a-table>\r\n </a-collapse-panel>\r\n </a-collapse>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, inject, watch, onMounted, unref, computed, ref } from 'vue'\r\nimport {\r\n Table as ATable,\r\n InputNumber as AInputNumber,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel\r\n} from 'ant-design-vue'\r\nimport { SELECTED_COMPONENT, GRAPHIC_CONFIG } from '@/utils/constant'\r\nimport 'ant-design-vue/es/table/style'\r\nconst configColumns: any = [\r\n {\r\n title: '列名',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '参数',\r\n dataIndex: 'label',\r\n fixed: 'left',\r\n ellipsis: true,\r\n width: 135\r\n },\r\n {\r\n title: '数据格式化',\r\n dataIndex: 'dataFormat',\r\n ellipsis: true,\r\n width: 225\r\n },\r\n {\r\n title: '保留小数位数',\r\n dataIndex: 'retentiondigit',\r\n ellipsis: true,\r\n width: 135\r\n }\r\n]\r\n\r\nexport default defineComponent({\r\n name: 'TableColumnConfig',\r\n components: {\r\n ATable,\r\n AInputNumber,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel\r\n },\r\n setup () {\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const activePanel = ref<string[]>(['cardFormat'])\r\n\r\n const handleTableData = () => {\r\n const indicators = unref(graphicConfig)?.indicators || []\r\n const columnsConfigMap = selectedComponent.value.columnsConfigMap || {}\r\n const defaultConfig = { dataFormat: [], retentiondigit: '' }\r\n const newColumnsConfig = indicators.reduce(\r\n (a: any, b: any) => ({ ...a, [b.label]: { ...defaultConfig, ...(columnsConfigMap[b.label] || {}) } }),\r\n {}\r\n )\r\n selectedComponent.value.columnsConfigMap = newColumnsConfig\r\n }\r\n watch(\r\n graphicConfig,\r\n () => {\r\n handleTableData()\r\n },\r\n {\r\n deep: true,\r\n flush: 'post'\r\n }\r\n )\r\n onMounted(() => {\r\n handleTableData()\r\n })\r\n const columnsConfigMap = computed(() => selectedComponent.value.columnsConfigMap || {})\r\n return {\r\n selectedComponent,\r\n configColumns,\r\n graphicConfig,\r\n columnsConfigMap,\r\n activePanel\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.table-column-config {\r\n // max-width: 1100px;\r\n width: 100%;\r\n .column-table {\r\n width: 100%;\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"style-group\">\r\n <template v-if=\"componentType !== 'table' && componentType !== 'card'\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select v-model:value=\"type\" style=\"width: 100%\" @change=\"handleChangeType\">\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 v-for=\"detailPropsGroup in detailPropsGroups\" :key=\"detailPropsGroup.title\">\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=\"onSwitchChange($event, detailPropsGroup.enablePropsName)\"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"typeof detailPropsGroup.enableProps === 'boolean' ? !detailPropsGroup.enableProps : false\"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel key=\"custom-option\" header=\"自定义option配置\" v-if=\"isShowOptionEditor\">\r\n <editor class=\"option-editor\" language=\"typescript\" :valueData=\"optionCode\" @change=\"onEditorChange\" />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </template>\r\n <template v-if=\"componentType === 'table'\">\r\n <a-collapse v-model:activeKey=\"tablePanel\">\r\n <template v-for=\"detailPropsGroup in detailPropsGroups\" :key=\"detailPropsGroup.title\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title && detailPropsGroup.onlyType?.includes(componentType)\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <props-to-form\r\n :componentType=\"componentType\"\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"typeof detailPropsGroup.enableProps === 'boolean' ? !detailPropsGroup.enableProps : false\"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n <a-collapse-panel key=\"tableColumn\" header=\"表格列配置\">\r\n <table-column-config />\r\n </a-collapse-panel>\r\n <a-collapse-panel key=\"headerCellStyleMethod\" header=\"表头单元格样式\">\r\n <editor\r\n class=\"option-editor\"\r\n language=\"javascript\"\r\n :options=\"{\r\n fontSize: 16,\r\n lineHeight: 18\r\n }\"\r\n :valueData=\"tableOptions.headerCellStyleMethod\"\r\n @change=\"tableEditorChange($event, 'headerCellStyleMethod')\"\r\n />\r\n </a-collapse-panel>\r\n <a-collapse-panel key=\"rowStyleMethod\" header=\"行样式\">\r\n <editor\r\n class=\"option-editor\"\r\n language=\"javascript\"\r\n :options=\"{\r\n fontSize: 16,\r\n lineHeight: 18\r\n }\"\r\n :valueData=\"tableOptions.rowStyleMethod\"\r\n @change=\"tableEditorChange($event, 'rowStyleMethod')\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </template>\r\n <template v-if=\"componentType === 'card'\">\r\n <indicator-container></indicator-container>\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 { DetailPropsGroups, DetailPropsGroup, PropsGroup, propsGroups } 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 TableColumnConfig from './table-column-config'\r\nimport IndicatorContainer from './indicator-container'\r\nimport Editor from '@/indicator/editor'\r\nimport {\r\n CHARTS_OPTIONS,\r\n TABLE_OPTIONS,\r\n UPDATE_CHARTS_OPTIONS,\r\n UPDATE_TABLE_OPTIONS,\r\n SELECTED_COMPONENT,\r\n REFRESH_DATA\r\n} from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\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 isGroupTable: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n components: {\r\n PropsToForm,\r\n TableColumnConfig,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch,\r\n IndicatorContainer\r\n },\r\n setup (compProps) {\r\n const activePanel = ref<string[]>([])\r\n const tablePanel = ref<string[]>(['表格'])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const tableOptions = inject(TABLE_OPTIONS) as any\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const updateTableOptions = inject(UPDATE_TABLE_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n unref(selectedComponent).type = unref(type)\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const groupTableProps = ['showTotalBool', 'totalName', 'expandAll']\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } = propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n if (groupTableProps.includes(prop)) {\r\n if (compProps.isGroupTable) {\r\n pickProps.push(prop)\r\n }\r\n } else {\r\n pickProps.push(prop)\r\n }\r\n }\r\n })\r\n let filterEnableProps, filterProps\r\n if (compProps.componentType === 'table' && onlyType?.includes(compProps.componentType)) {\r\n filterEnableProps =\r\n typeof enableProps === 'string' && tableOptions.value\r\n ? (tableOptions.value[enableProps] as boolean)\r\n : undefined\r\n filterProps = pick(unref(tableOptions), pickProps)\r\n } else {\r\n filterEnableProps =\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined\r\n filterProps = pick(unref(chartsOptions), pickProps)\r\n }\r\n return {\r\n title,\r\n enableProps: filterEnableProps,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: filterProps\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (detailPropsGroup: DetailPropsGroup, componentType: string) => {\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 = (checked: boolean | string | number, event: Event) => {\r\n event?.stopPropagation()\r\n return checked\r\n }\r\n const onSwitchChange = (value: any, 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(() => JSON.stringify(unref(chartsOptions), null, 2))\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 tableEditorChange = (code: string, key) => {\r\n try {\r\n updateTableOptions({\r\n [key]: code\r\n })\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() => ['customGraph'].includes(unref(chartsOptions)?.type))\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n tablePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n tableOptions,\r\n optionCode,\r\n onEditorChange,\r\n tableEditorChange,\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 padding-right: 5px;\r\n width: 100%;\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 :deep(.ant-collapse-content) {\r\n width: 100%;\r\n .ant-collapse-content-box {\r\n width: 100%;\r\n }\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' && componentType !== 'card'\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select v-model:value=\"type\" style=\"width: 100%\" @change=\"handleChangeType\">\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 v-for=\"detailPropsGroup in detailPropsGroups\" :key=\"detailPropsGroup.title\">\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=\"onSwitchChange($event, detailPropsGroup.enablePropsName)\"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"typeof detailPropsGroup.enableProps === 'boolean' ? !detailPropsGroup.enableProps : false\"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel key=\"custom-option\" header=\"自定义option配置\" v-if=\"isShowOptionEditor\">\r\n <editor class=\"option-editor\" language=\"typescript\" :valueData=\"optionCode\" @change=\"onEditorChange\" />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </template>\r\n <template v-if=\"componentType === 'table'\">\r\n <a-collapse v-model:activeKey=\"tablePanel\">\r\n <template v-for=\"detailPropsGroup in detailPropsGroups\" :key=\"detailPropsGroup.title\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title && detailPropsGroup.onlyType?.includes(componentType)\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <props-to-form\r\n :componentType=\"componentType\"\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"typeof detailPropsGroup.enableProps === 'boolean' ? !detailPropsGroup.enableProps : false\"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n <a-collapse-panel key=\"tableColumn\" header=\"表格列配置\">\r\n <table-column-config />\r\n </a-collapse-panel>\r\n <a-collapse-panel key=\"headerCellStyleMethod\" header=\"表头单元格样式\">\r\n <editor\r\n class=\"option-editor\"\r\n language=\"javascript\"\r\n :options=\"{\r\n fontSize: 16,\r\n lineHeight: 18\r\n }\"\r\n :valueData=\"tableOptions.headerCellStyleMethod\"\r\n @change=\"tableEditorChange($event, 'headerCellStyleMethod')\"\r\n />\r\n </a-collapse-panel>\r\n <a-collapse-panel key=\"rowStyleMethod\" header=\"行样式\">\r\n <editor\r\n class=\"option-editor\"\r\n language=\"javascript\"\r\n :options=\"{\r\n fontSize: 16,\r\n lineHeight: 18\r\n }\"\r\n :valueData=\"tableOptions.rowStyleMethod\"\r\n @change=\"tableEditorChange($event, 'rowStyleMethod')\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </template>\r\n <template v-if=\"componentType === 'card'\">\r\n <indicator-container></indicator-container>\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 { DetailPropsGroups, DetailPropsGroup, PropsGroup, propsGroups } 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 TableColumnConfig from './table-column-config'\r\nimport IndicatorContainer from './indicator-container'\r\nimport Editor from '@/indicator/editor'\r\nimport {\r\n CHARTS_OPTIONS,\r\n TABLE_OPTIONS,\r\n UPDATE_CHARTS_OPTIONS,\r\n UPDATE_TABLE_OPTIONS,\r\n SELECTED_COMPONENT,\r\n REFRESH_DATA\r\n} from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\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 isGroupTable: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n components: {\r\n PropsToForm,\r\n TableColumnConfig,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch,\r\n IndicatorContainer\r\n },\r\n setup (compProps) {\r\n const activePanel = ref<string[]>([])\r\n const tablePanel = ref<string[]>(['表格'])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const tableOptions = inject(TABLE_OPTIONS) as any\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const updateTableOptions = inject(UPDATE_TABLE_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const selectedComponent = inject(SELECTED_COMPONENT) as any\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n unref(selectedComponent).type = unref(type)\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const groupTableProps = ['showTotalBool', 'totalName', 'expandAll']\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } = propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n if (groupTableProps.includes(prop)) {\r\n if (compProps.isGroupTable) {\r\n pickProps.push(prop)\r\n }\r\n } else {\r\n pickProps.push(prop)\r\n }\r\n }\r\n })\r\n let filterEnableProps, filterProps\r\n if (compProps.componentType === 'table' && onlyType?.includes(compProps.componentType)) {\r\n filterEnableProps =\r\n typeof enableProps === 'string' && tableOptions.value\r\n ? (tableOptions.value[enableProps] as boolean)\r\n : undefined\r\n filterProps = pick(unref(tableOptions), pickProps)\r\n } else {\r\n filterEnableProps =\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined\r\n filterProps = pick(unref(chartsOptions), pickProps)\r\n }\r\n return {\r\n title,\r\n enableProps: filterEnableProps,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: filterProps\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (detailPropsGroup: DetailPropsGroup, componentType: string) => {\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 = (checked: boolean | string | number, event: Event) => {\r\n event?.stopPropagation()\r\n return checked\r\n }\r\n const onSwitchChange = (value: any, 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(() => JSON.stringify(unref(chartsOptions), null, 2))\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 tableEditorChange = (code: string, key) => {\r\n try {\r\n updateTableOptions({\r\n [key]: code\r\n })\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() => ['customGraph'].includes(unref(chartsOptions)?.type))\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n tablePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n tableOptions,\r\n optionCode,\r\n onEditorChange,\r\n tableEditorChange,\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 padding-right: 5px;\r\n width: 100%;\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 :deep(.ant-collapse-content) {\r\n width: 100%;\r\n .ant-collapse-content-box {\r\n width: 100%;\r\n }\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>\n <div class=\"control-card\">\n <!-- 绑定键值 -->\n <a-select\n class=\"field-name\"\n :value=\"control.conditionKey\"\n :options=\"conditionOptions\"\n :fieldNames=\"{ value: 'id' }\"\n allow-clear\n show-search\n @change=\"onConditionKeyChange\"\n :filter-option=\"filterOption\"\n />\n <!-- 过滤规则 -->\n <a-select\n class=\"field-name\"\n :value=\"control.rule\"\n :options=\"ruleOption\"\n style=\"max-width: 100px;\"\n @change=\"onRuleChange\"\n />\n <!-- 自定义值或者选择组件 -->\n <a-select\n class=\"field-name\"\n :value=\"control.dataType\"\n :options=\"dataTypeOption\"\n style=\"max-width: 100px;\"\n @change=\"onDataTypeChange\"\n />\n <!-- 填写自定义值 -->\n <template v-if=\"control.dataType === ''\">\n <a-input\n class=\"field-name\"\n :value=\"control.customValue\"\n style=\"max-width: 180px;\"\n @input=\"onCustomValueChange\"\n />\n </template>\n <!-- 组件别名 -->\n <template v-if=\"control.dataType === 'component'\">\n <a-select\n class=\"field-name\"\n :value=\"control.id\"\n :options=\"keyNameOptions\"\n :fieldNames=\"{\n label: 'keyName',\n value: 'id'\n }\"\n show-search\n :filter-option=\"idFilterOption\"\n style=\"max-width: 180px;\"\n @change=\"onIdChange\"\n @click=\"onIdFocus\"\n />\n </template>\n <!-- 选择数据字段 -->\n <template v-if=\"isShowModelProp\">\n <a-input\n class=\"field-name\"\n :value=\"control.modelKey\"\n @input=\"onModelPropChange\"\n :placeholder=\"control.id === 'PARENT' ? '请输入组件别名' : ''\"\n />\n </template>\n <!-- 组件属性 -->\n <template v-if=\"isShowProp\">\n <a-input\n v-if=\"control.id === 'PARENT'\"\n class=\"field-name\"\n :value=\"control.prop\"\n @input=\"onParentPropChange\"\n placeholder=\"请输入属性名\"\n />\n <a-select\n v-else\n class=\"field-name\"\n :value=\"control.prop\"\n :options=\"propOptions\"\n @change=\"onPropChange\"\n />\n </template>\n <!-- 日期格式化 -->\n <template v-if=\"isShowFormat\">\n <a-select\n class=\"field-name\"\n :value=\"control.format\"\n :options=\"formatOptions\"\n @change=\"onFormatChange\"\n />\n </template>\n <a-dropdown :trigger=\"['click']\">\n <menu-outlined class=\"more-icon\" />\n <template #overlay>\n <a-menu @click=\"clickConditionMenu\">\n <a-menu-item key=\"1\">添加且条件</a-menu-item>\n <a-menu-item key=\"2\">添加或条件</a-menu-item>\n </a-menu>\n </template>\n </a-dropdown>\n <close-outlined class=\"delete-icon\" @click=\"onDelete\"/>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, inject, PropType } from 'vue'\nimport { pick } from 'lodash-es'\nimport { getEventName, getConditions } from '@/utils/util'\nimport { hasOwn, lowerCaseIncludes } from '@ecan-bi/tools'\nimport { CloseOutlined, MenuOutlined } from '@ant-design/icons-vue'\nimport {\n RENDER_USED_COMPONENTS,\n SELECTED_COMPONENT,\n UPDATE_USED_COMPONENT,\n MAP_ATTRIBUTE_PROPS,\n GRAPHIC_CONFIG,\n IS_PIVOT_TABLE\n} from '@/utils/constant'\nimport {\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n Input as AInput, Select as ASelect\n} from 'ant-design-vue'\nexport default defineComponent({\n name: 'Card',\n components: {\n CloseOutlined,\n AInput,\n ASelect,\n MenuOutlined,\n ADropdown,\n AMenu,\n AMenuItem\n },\n props: {\n index: {\n type: Number,\n require: true\n },\n control: {\n type: Object,\n default: () => ({})\n },\n conditionOptions: {\n type: Array as PropType<any[]>,\n default: () => []\n },\n path: {\n type: String,\n default: ''\n }\n },\n emits: ['delete', 'update'],\n setup (props) {\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const updateUsedComponent = inject(UPDATE_USED_COMPONENT) as any\n const mapAttributeProps = inject(MAP_ATTRIBUTE_PROPS) as any\n const isPivotTable = inject(IS_PIVOT_TABLE) as any\n const { onUpdateControl, onDeleteControl, onAddMenuControl } = inject('CHANGE_CONTROL', {\n // eslint-disable-next-line no-void\n onUpdateControl: (_data: { [key:string]: any }) => void 0,\n // eslint-disable-next-line no-void\n onDeleteControl: (_data: { [key:string]: any }) => void 0,\n // eslint-disable-next-line no-void\n onAddMenuControl: (_path: string, _index: number, _join: '||' | '&&') => void 0\n })\n const usedComponentList = computed(() => {\n return unref(renderUsedComponents)?.filter((usedComponent) => {\n return usedComponent.keyName !== ''\n })\n })\n const keyNameOptions = computed(() => {\n const parentOption = []\n if (!unref(isPivotTable)) {\n parentOption.push({\n keyName: '父页面',\n id: 'PARENT'\n })\n }\n return [\n ...parentOption,\n ...unref(usedComponentList)\n ]\n })\n const propOptions = computed(() => {\n const options: { label:string, value: string } [] = []\n const component = unref(usedComponentList)?.find(usedComponent => usedComponent.id === props.control?.id)\n if (component) {\n const type = component.type\n const pickProps = pick(component, ['value', 'startTime', 'endTime'])\n if (!Object.keys(pickProps)?.length) {\n pickProps.value = ''\n }\n for (const prop in pickProps) {\n if (Object.prototype.hasOwnProperty.call(pickProps, prop)) {\n const mapAttributeProp = unref(mapAttributeProps)[prop]\n if (Array.isArray(mapAttributeProp)) {\n const propItem = mapAttributeProp.find(item => lowerCaseIncludes(type, item.onlyType))\n if (propItem) {\n options.push({\n label: propItem.label,\n value: prop\n })\n }\n } else {\n options.push({\n label: mapAttributeProp.label,\n value: prop\n })\n }\n }\n }\n }\n return options\n })\n const onDelete = () => {\n onDeleteControl({\n index: props.index,\n path: props.path\n })\n // 删除控件绑定后把相关的交互事件也删除\n deleteEvent(props.control.id)\n }\n\n const clickConditionMenu = ({ key }) => {\n onAddMenuControl(props.path, props.index, key === '2' ? '||' : '&&')\n }\n\n // 删除控件的交互事件\n function deleteEvent (id: string) {\n const component = unref(usedComponentList).find(item => item.id === id)\n if (component) {\n const { type, id, events = [] } = component\n const event = getEventName(type)\n const index = events.findIndex((item: any) =>\n item.on === event && item.target === unref(selectedComponent)?.id && item.emit === 'refreshData')\n if (index !== -1) {\n events.splice(index, 1)\n updateUsedComponent({\n id,\n events\n })\n }\n }\n }\n\n const onIdChange = (value: string) => {\n const control = { ...props.control }\n control.id = value\n control.customValue = ''\n if (value) {\n const component = unref(usedComponentList).find(item => item.id === value)\n if (component) {\n control.keyName = component.keyName\n // 选中控件后,设置所选控件的events\n setEvents(component, value)\n }\n }\n delete control.prop\n onUpdateControl({\n control,\n index: props.index,\n path: props.path\n })\n }\n\n const focusId = ref('')\n const onIdFocus = () => {\n focusId.value = props.control.id\n }\n\n const onPropChange = (value: string) => {\n onUpdateControl({\n control: {\n ...props.control,\n prop: value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onParentPropChange = (e: any) => {\n onUpdateControl({\n control: {\n ...props.control,\n prop: e.target.value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onRuleChange = (value: string) => {\n onUpdateControl({\n control: {\n ...props.control,\n rule: value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onDataTypeChange = (value: string) => {\n const control = { ...props.control }\n if (control.modelKey) {\n control.modelKey = ''\n }\n if (control.prop) {\n control.prop = ''\n }\n if (control.format) {\n control.format = ''\n }\n onUpdateControl({\n control: {\n ...control,\n dataType: value,\n customValue: '',\n id: '',\n keyName: ''\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onCustomValueChange = (e: any) => {\n onUpdateControl({\n control: {\n ...props.control,\n customValue: e.target.value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onModeChange = (value: string) => {\n const control = { ...props.control }\n if (value == null) {\n delete control.mode\n } else {\n control.mode = value\n }\n delete control.conditionLabel\n delete control.conditionName\n delete control.conditionKey\n delete control.conditionValueType\n onUpdateControl({\n control,\n index: props.index,\n path: props.path\n })\n }\n\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n\n function setEvents (component: any, value: string) {\n const { type, id, events = [] } = component\n const event = getEventName(type)\n // 如果切换了控件,把之前控件绑定的删除\n if (unref(focusId) && value !== unref(focusId)) {\n const controlList = getConditions(unref(graphicConfig)?.controlList || [])\n if (!controlList.find((v: any) => v.id === unref(focusId))) {\n deleteEvent(unref(focusId))\n }\n }\n if (!events.find((item: any) =>\n item.on === event && item.target === unref(selectedComponent)?.id && item.emit === 'refreshData')) {\n updateUsedComponent({\n id,\n events: [...events, {\n on: event,\n target: unref(selectedComponent)?.id,\n emit: 'refreshData'\n }].reverse()\n })\n }\n }\n\n const onConditionKeyChange = (value: string, option: { [key:string]:any }) => {\n if (value) {\n const { label, name, id, genericType, indexCode, typeGuid, indexCodeNum } = option || {}\n const controlParams: any = {\n ...props.control,\n conditionKey: id,\n conditionLabel: label,\n conditionName: name,\n conditionValueType: genericType,\n indexCode,\n typeGuid,\n indexCodeNum\n }\n if (!hasOwn(controlParams, 'rule')) {\n controlParams.rule = 'EQUAL'\n }\n if (!hasOwn(controlParams, 'dataType')) {\n controlParams.dataType = 'component'\n }\n onUpdateControl({\n control: controlParams,\n index: props.index,\n path: props.path\n })\n } else {\n const control = { ...props.control }\n delete control.conditionLabel\n delete control.conditionName\n delete control.conditionKey\n delete control.conditionValueType\n onUpdateControl({\n control,\n index: props.index,\n path: props.path\n })\n }\n }\n\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\n return option?.keyName?.toLowerCase().includes(inputValue?.toLowerCase())\n }\n\n const filterOption = (inputValue: string, option: { [key:string]:any }) => {\n return option?.label?.toLowerCase().includes(inputValue?.toLowerCase())\n }\n\n const ruleOption = computed(() => {\n const target = props.conditionOptions.find(v => v.id === props.control.conditionKey)\n let type = ''\n if (target) {\n type = target?.genericType || ''\n }\n if (type === 'TEXT' || type === '0') {\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: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' }\n ]\n } else if (type === 'NUMBER' || type === '1') {\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 ]\n } else if (type === 'DATE' || type === '2') {\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\n const dataTypeOption = [{\n label: '自定义值',\n value: ''\n }, {\n label: '组件值',\n value: 'component'\n }]\n\n const isShowModelProp = computed(() => {\n let result = false\n const { id = '', dataType = 'component' } = props.control\n if (id && dataType === 'component') {\n const target = unref(usedComponentList).find((v: any) => v.id === id)\n const modelPropKey = ['table', 'bar', 'combograph', 'line', 'pie', 'radar', 'scatter', 'list', 'circulate']\n if (lowerCaseIncludes(target?.type, modelPropKey)) {\n result = true\n }\n }\n if (id === 'PARENT') {\n // 组件名选择父页面后\n result = true\n }\n return result\n })\n\n const isShowProp = computed(() => {\n let result = false\n const { id = '', dataType = 'component' } = props.control\n if (id && dataType === 'component') {\n const target = unref(usedComponentList).find((v: any) => v.id === id)\n if (lowerCaseIncludes(target?.type || '', 'range')) {\n result = true\n }\n }\n if (id === 'PARENT') {\n // 组件名选择父页面后\n result = true\n }\n return result\n })\n\n const isShowFormat = computed(() => {\n let result = false\n const { id = '', dataType = 'component' } = props.control\n if (id && dataType === 'component') {\n const target = unref(usedComponentList).find((v: any) => v.id === id)\n // if (['ecanDatePicker', 'ecanRangePicker'].includes(target?.type)) {\n if (lowerCaseIncludes(target?.type || '', ['date', 'range'])) {\n result = true\n }\n }\n return result\n })\n\n const formatOptions = [\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\n const onFormatChange = (value: string) => {\n onUpdateControl({\n control: {\n ...props.control,\n format: value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onModelPropChange = (e: any) => {\n onUpdateControl({\n control: {\n ...props.control,\n modelKey: e.target.value\n },\n index: props.index,\n path: props.path\n })\n }\n\n return {\n propOptions,\n usedComponentList,\n onDelete,\n onIdChange,\n onIdFocus,\n onPropChange,\n onParentPropChange,\n onModeChange,\n onRuleChange,\n onDataTypeChange,\n onCustomValueChange,\n onConditionKeyChange,\n idFilterOption,\n filterOption,\n onFormatChange,\n onModelPropChange,\n clickConditionMenu,\n ruleOption,\n dataTypeOption,\n isShowProp,\n isShowFormat,\n isShowModelProp,\n formatOptions,\n keyNameOptions\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.control-card {\n width: 100%;\n padding: 10px;\n // margin-bottom: 10px;\n // border: 1px solid #ccc;\n // border-radius: 5px;\n display: flex;\n position: relative;\n .field-name {\n // max-width: 180px;\n margin-right: 20px;\n flex: 1;\n }\n}\n\n// .delete-icon {\n// position: absolute;\n// right: 8px;\n// top: 18px;\n// }\n.more-icon {\n margin-right: 10px;\n}\n</style>\n\n<style lang=\"less\">\n.control-card {\n .ant-form-item {\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n &:last-child {\n margin-bottom: 0;\n }\n }\n}\n</style>\n","<template>\n <div class=\"control-card\">\n <!-- 绑定键值 -->\n <a-select\n class=\"field-name\"\n :value=\"control.conditionKey\"\n :options=\"conditionOptions\"\n :fieldNames=\"{ value: 'id' }\"\n allow-clear\n show-search\n @change=\"onConditionKeyChange\"\n :filter-option=\"filterOption\"\n />\n <!-- 过滤规则 -->\n <a-select\n class=\"field-name\"\n :value=\"control.rule\"\n :options=\"ruleOption\"\n style=\"max-width: 100px;\"\n @change=\"onRuleChange\"\n />\n <!-- 自定义值或者选择组件 -->\n <a-select\n class=\"field-name\"\n :value=\"control.dataType\"\n :options=\"dataTypeOption\"\n style=\"max-width: 100px;\"\n @change=\"onDataTypeChange\"\n />\n <!-- 填写自定义值 -->\n <template v-if=\"control.dataType === ''\">\n <a-input\n class=\"field-name\"\n :value=\"control.customValue\"\n style=\"max-width: 180px;\"\n @input=\"onCustomValueChange\"\n />\n </template>\n <!-- 组件别名 -->\n <template v-if=\"control.dataType === 'component'\">\n <a-select\n class=\"field-name\"\n :value=\"control.id\"\n :options=\"keyNameOptions\"\n :fieldNames=\"{\n label: 'keyName',\n value: 'id'\n }\"\n show-search\n :filter-option=\"idFilterOption\"\n style=\"max-width: 180px;\"\n @change=\"onIdChange\"\n @click=\"onIdFocus\"\n />\n </template>\n <!-- 选择数据字段 -->\n <template v-if=\"isShowModelProp\">\n <a-input\n class=\"field-name\"\n :value=\"control.modelKey\"\n @input=\"onModelPropChange\"\n :placeholder=\"control.id === 'PARENT' ? '请输入组件别名' : ''\"\n />\n </template>\n <!-- 组件属性 -->\n <template v-if=\"isShowProp\">\n <a-input\n v-if=\"control.id === 'PARENT'\"\n class=\"field-name\"\n :value=\"control.prop\"\n @input=\"onParentPropChange\"\n placeholder=\"请输入属性名\"\n />\n <a-select\n v-else\n class=\"field-name\"\n :value=\"control.prop\"\n :options=\"propOptions\"\n @change=\"onPropChange\"\n />\n </template>\n <!-- 日期格式化 -->\n <template v-if=\"isShowFormat\">\n <a-select\n class=\"field-name\"\n :value=\"control.format\"\n :options=\"formatOptions\"\n @change=\"onFormatChange\"\n />\n </template>\n <a-dropdown :trigger=\"['click']\">\n <menu-outlined class=\"more-icon\" />\n <template #overlay>\n <a-menu @click=\"clickConditionMenu\">\n <a-menu-item key=\"1\">添加且条件</a-menu-item>\n <a-menu-item key=\"2\">添加或条件</a-menu-item>\n </a-menu>\n </template>\n </a-dropdown>\n <close-outlined class=\"delete-icon\" @click=\"onDelete\"/>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, inject, PropType } from 'vue'\nimport { pick } from 'lodash-es'\nimport { getEventName, getConditions } from '@/utils/util'\nimport { hasOwn, lowerCaseIncludes } from '@ecan-bi/tools'\nimport { CloseOutlined, MenuOutlined } from '@ant-design/icons-vue'\nimport {\n RENDER_USED_COMPONENTS,\n SELECTED_COMPONENT,\n UPDATE_USED_COMPONENT,\n MAP_ATTRIBUTE_PROPS,\n GRAPHIC_CONFIG,\n IS_PIVOT_TABLE\n} from '@/utils/constant'\nimport {\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n Input as AInput, Select as ASelect\n} from 'ant-design-vue'\nexport default defineComponent({\n name: 'Card',\n components: {\n CloseOutlined,\n AInput,\n ASelect,\n MenuOutlined,\n ADropdown,\n AMenu,\n AMenuItem\n },\n props: {\n index: {\n type: Number,\n require: true\n },\n control: {\n type: Object,\n default: () => ({})\n },\n conditionOptions: {\n type: Array as PropType<any[]>,\n default: () => []\n },\n path: {\n type: String,\n default: ''\n }\n },\n emits: ['delete', 'update'],\n setup (props) {\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const updateUsedComponent = inject(UPDATE_USED_COMPONENT) as any\n const mapAttributeProps = inject(MAP_ATTRIBUTE_PROPS) as any\n const isPivotTable = inject(IS_PIVOT_TABLE) as any\n const { onUpdateControl, onDeleteControl, onAddMenuControl } = inject('CHANGE_CONTROL', {\n // eslint-disable-next-line no-void\n onUpdateControl: (_data: { [key:string]: any }) => void 0,\n // eslint-disable-next-line no-void\n onDeleteControl: (_data: { [key:string]: any }) => void 0,\n // eslint-disable-next-line no-void\n onAddMenuControl: (_path: string, _index: number, _join: '||' | '&&') => void 0\n })\n const usedComponentList = computed(() => {\n return unref(renderUsedComponents)?.filter((usedComponent) => {\n return usedComponent.keyName !== ''\n })\n })\n const keyNameOptions = computed(() => {\n const parentOption = []\n if (!unref(isPivotTable)) {\n parentOption.push({\n keyName: '父页面',\n id: 'PARENT'\n })\n }\n return [\n ...parentOption,\n ...unref(usedComponentList)\n ]\n })\n const propOptions = computed(() => {\n const options: { label:string, value: string } [] = []\n const component = unref(usedComponentList)?.find(usedComponent => usedComponent.id === props.control?.id)\n if (component) {\n const type = component.type\n const pickProps = pick(component, ['value', 'startTime', 'endTime'])\n if (!Object.keys(pickProps)?.length) {\n pickProps.value = ''\n }\n for (const prop in pickProps) {\n if (Object.prototype.hasOwnProperty.call(pickProps, prop)) {\n const mapAttributeProp = unref(mapAttributeProps)[prop]\n if (Array.isArray(mapAttributeProp)) {\n const propItem = mapAttributeProp.find(item => lowerCaseIncludes(type, item.onlyType))\n if (propItem) {\n options.push({\n label: propItem.label,\n value: prop\n })\n }\n } else {\n options.push({\n label: mapAttributeProp.label,\n value: prop\n })\n }\n }\n }\n }\n return options\n })\n const onDelete = () => {\n onDeleteControl({\n index: props.index,\n path: props.path\n })\n // 删除控件绑定后把相关的交互事件也删除\n deleteEvent(props.control.id)\n }\n\n const clickConditionMenu = ({ key }) => {\n onAddMenuControl(props.path, props.index, key === '2' ? '||' : '&&')\n }\n\n // 删除控件的交互事件\n function deleteEvent (id: string) {\n const component = unref(usedComponentList).find(item => item.id === id)\n if (component) {\n const { type, id, events = [] } = component\n const event = getEventName(type)\n const index = events.findIndex((item: any) =>\n item.on === event && item.target === unref(selectedComponent)?.id && item.emit === 'refreshData')\n if (index !== -1) {\n events.splice(index, 1)\n updateUsedComponent({\n id,\n events\n })\n }\n }\n }\n\n const onIdChange = (value: string) => {\n const control = { ...props.control }\n control.id = value\n control.customValue = ''\n if (value) {\n const component = unref(usedComponentList).find(item => item.id === value)\n if (component) {\n control.keyName = component.keyName\n // 选中控件后,设置所选控件的events\n setEvents(component, value)\n }\n }\n delete control.prop\n onUpdateControl({\n control,\n index: props.index,\n path: props.path\n })\n }\n\n const focusId = ref('')\n const onIdFocus = () => {\n focusId.value = props.control.id\n }\n\n const onPropChange = (value: string) => {\n onUpdateControl({\n control: {\n ...props.control,\n prop: value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onParentPropChange = (e: any) => {\n onUpdateControl({\n control: {\n ...props.control,\n prop: e.target.value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onRuleChange = (value: string) => {\n onUpdateControl({\n control: {\n ...props.control,\n rule: value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onDataTypeChange = (value: string) => {\n const control = { ...props.control }\n if (control.modelKey) {\n control.modelKey = ''\n }\n if (control.prop) {\n control.prop = ''\n }\n if (control.format) {\n control.format = ''\n }\n onUpdateControl({\n control: {\n ...control,\n dataType: value,\n customValue: '',\n id: '',\n keyName: ''\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onCustomValueChange = (e: any) => {\n onUpdateControl({\n control: {\n ...props.control,\n customValue: e.target.value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onModeChange = (value: string) => {\n const control = { ...props.control }\n if (value == null) {\n delete control.mode\n } else {\n control.mode = value\n }\n delete control.conditionLabel\n delete control.conditionName\n delete control.conditionKey\n delete control.conditionValueType\n onUpdateControl({\n control,\n index: props.index,\n path: props.path\n })\n }\n\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n\n function setEvents (component: any, value: string) {\n const { type, id, events = [] } = component\n const event = getEventName(type)\n // 如果切换了控件,把之前控件绑定的删除\n if (unref(focusId) && value !== unref(focusId)) {\n const controlList = getConditions(unref(graphicConfig)?.controlList || [])\n if (!controlList.find((v: any) => v.id === unref(focusId))) {\n deleteEvent(unref(focusId))\n }\n }\n if (!events.find((item: any) =>\n item.on === event && item.target === unref(selectedComponent)?.id && item.emit === 'refreshData')) {\n updateUsedComponent({\n id,\n events: [...events, {\n on: event,\n target: unref(selectedComponent)?.id,\n emit: 'refreshData'\n }].reverse()\n })\n }\n }\n\n const onConditionKeyChange = (value: string, option: { [key:string]:any }) => {\n if (value) {\n const { label, name, id, genericType, indexCode, typeGuid, indexCodeNum } = option || {}\n const controlParams: any = {\n ...props.control,\n conditionKey: id,\n conditionLabel: label,\n conditionName: name,\n conditionValueType: genericType,\n indexCode,\n typeGuid,\n indexCodeNum\n }\n if (!hasOwn(controlParams, 'rule')) {\n controlParams.rule = 'EQUAL'\n }\n if (!hasOwn(controlParams, 'dataType')) {\n controlParams.dataType = 'component'\n }\n onUpdateControl({\n control: controlParams,\n index: props.index,\n path: props.path\n })\n } else {\n const control = { ...props.control }\n delete control.conditionLabel\n delete control.conditionName\n delete control.conditionKey\n delete control.conditionValueType\n onUpdateControl({\n control,\n index: props.index,\n path: props.path\n })\n }\n }\n\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\n return option?.keyName?.toLowerCase().includes(inputValue?.toLowerCase())\n }\n\n const filterOption = (inputValue: string, option: { [key:string]:any }) => {\n return option?.label?.toLowerCase().includes(inputValue?.toLowerCase())\n }\n\n const ruleOption = computed(() => {\n const target = props.conditionOptions.find(v => v.id === props.control.conditionKey)\n let type = ''\n if (target) {\n type = target?.genericType || ''\n }\n if (type === 'TEXT' || type === '0') {\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: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' }\n ]\n } else if (type === 'NUMBER' || type === '1') {\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 ]\n } else if (type === 'DATE' || type === '2') {\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\n const dataTypeOption = [{\n label: '自定义值',\n value: ''\n }, {\n label: '组件值',\n value: 'component'\n }]\n\n const isShowModelProp = computed(() => {\n let result = false\n const { id = '', dataType = 'component' } = props.control\n if (id && dataType === 'component') {\n const target = unref(usedComponentList).find((v: any) => v.id === id)\n const modelPropKey = ['table', 'bar', 'combograph', 'line', 'pie', 'radar', 'scatter', 'list', 'circulate']\n if (lowerCaseIncludes(target?.type, modelPropKey)) {\n result = true\n }\n }\n if (id === 'PARENT') {\n // 组件名选择父页面后\n result = true\n }\n return result\n })\n\n const isShowProp = computed(() => {\n let result = false\n const { id = '', dataType = 'component' } = props.control\n if (id && dataType === 'component') {\n const target = unref(usedComponentList).find((v: any) => v.id === id)\n if (lowerCaseIncludes(target?.type || '', 'range')) {\n result = true\n }\n }\n if (id === 'PARENT') {\n // 组件名选择父页面后\n result = true\n }\n return result\n })\n\n const isShowFormat = computed(() => {\n let result = false\n const { id = '', dataType = 'component' } = props.control\n if (id && dataType === 'component') {\n const target = unref(usedComponentList).find((v: any) => v.id === id)\n // if (['ecanDatePicker', 'ecanRangePicker'].includes(target?.type)) {\n if (lowerCaseIncludes(target?.type || '', ['date', 'range'])) {\n result = true\n }\n }\n return result\n })\n\n const formatOptions = [\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\n const onFormatChange = (value: string) => {\n onUpdateControl({\n control: {\n ...props.control,\n format: value\n },\n index: props.index,\n path: props.path\n })\n }\n\n const onModelPropChange = (e: any) => {\n onUpdateControl({\n control: {\n ...props.control,\n modelKey: e.target.value\n },\n index: props.index,\n path: props.path\n })\n }\n\n return {\n propOptions,\n usedComponentList,\n onDelete,\n onIdChange,\n onIdFocus,\n onPropChange,\n onParentPropChange,\n onModeChange,\n onRuleChange,\n onDataTypeChange,\n onCustomValueChange,\n onConditionKeyChange,\n idFilterOption,\n filterOption,\n onFormatChange,\n onModelPropChange,\n clickConditionMenu,\n ruleOption,\n dataTypeOption,\n isShowProp,\n isShowFormat,\n isShowModelProp,\n formatOptions,\n keyNameOptions\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.control-card {\n width: 100%;\n padding: 10px;\n // margin-bottom: 10px;\n // border: 1px solid #ccc;\n // border-radius: 5px;\n display: flex;\n position: relative;\n .field-name {\n // max-width: 180px;\n margin-right: 20px;\n flex: 1;\n }\n}\n\n// .delete-icon {\n// position: absolute;\n// right: 8px;\n// top: 18px;\n// }\n.more-icon {\n margin-right: 10px;\n}\n</style>\n\n<style lang=\"less\">\n.control-card {\n .ant-form-item {\n &:not(:last-child) {\n margin-bottom: 8px;\n }\n &:last-child {\n margin-bottom: 0;\n }\n }\n}\n</style>\n","<template>\r\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\r\n <template\r\n v-for=\"(item, index) in list\"\r\n :key=\"index\"\r\n >\r\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\r\n <div class=\"condition-container\">\r\n <template v-if=\"item.conditions.length > 1\">\r\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\r\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\r\n </template>\r\n <div class=\"conditions\">\r\n <template v-if=\"item.conditions.length > 0\">\r\n <control-list\r\n :level=\"level + 1\"\r\n :path=\"`${path ? path + '-' : ''}${index}`\"\r\n :list=\"item.conditions\"\r\n :conditionOptions=\"conditionOptions\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <control-card\r\n class=\"condition\"\r\n :key=\"item.keyValue || `${level}-${index}`\"\r\n :control=\"item\"\r\n :index=\"index\"\r\n :path=\"path || ''\"\r\n :conditionOptions=\"conditionOptions\"\r\n />\r\n </template>\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { PropType, defineComponent } from 'vue'\r\nimport ControlCard from './ControlCard.vue'\r\nexport default defineComponent({\r\n name: 'ControlList',\r\n props: {\r\n list: {\r\n type: Array as PropType<any[]>,\r\n default: () => ([])\r\n },\r\n level: {\r\n type: Number,\r\n default: 0\r\n },\r\n path: {\r\n type: String,\r\n default: ''\r\n },\r\n conditionOptions: {\r\n type: Array,\r\n default: () => []\r\n }\r\n },\r\n components: {\r\n ControlCard\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.condition-list {\r\n width: 100%;\r\n}\r\n.condition-text {\r\n min-width: 50px;\r\n max-width: 50px;\r\n border: 1px solid #e8e8e8;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.condition-container {\r\n display: flex;\r\n width: 100%;\r\n}\r\n\r\n.conditions {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n width: 100%;\r\n}\r\n\r\n.condition {\r\n padding: 8px;\r\n border: 1px solid #e8e8e8;\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\r\n <template\r\n v-for=\"(item, index) in list\"\r\n :key=\"index\"\r\n >\r\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\r\n <div class=\"condition-container\">\r\n <template v-if=\"item.conditions.length > 1\">\r\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\r\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\r\n </template>\r\n <div class=\"conditions\">\r\n <template v-if=\"item.conditions.length > 0\">\r\n <control-list\r\n :level=\"level + 1\"\r\n :path=\"`${path ? path + '-' : ''}${index}`\"\r\n :list=\"item.conditions\"\r\n :conditionOptions=\"conditionOptions\"\r\n />\r\n </template>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <control-card\r\n class=\"condition\"\r\n :key=\"item.keyValue || `${level}-${index}`\"\r\n :control=\"item\"\r\n :index=\"index\"\r\n :path=\"path || ''\"\r\n :conditionOptions=\"conditionOptions\"\r\n />\r\n </template>\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { PropType, defineComponent } from 'vue'\r\nimport ControlCard from './ControlCard.vue'\r\nexport default defineComponent({\r\n name: 'ControlList',\r\n props: {\r\n list: {\r\n type: Array as PropType<any[]>,\r\n default: () => ([])\r\n },\r\n level: {\r\n type: Number,\r\n default: 0\r\n },\r\n path: {\r\n type: String,\r\n default: ''\r\n },\r\n conditionOptions: {\r\n type: Array,\r\n default: () => []\r\n }\r\n },\r\n components: {\r\n ControlCard\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.condition-list {\r\n width: 100%;\r\n}\r\n.condition-text {\r\n min-width: 50px;\r\n max-width: 50px;\r\n border: 1px solid #e8e8e8;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.condition-container {\r\n display: flex;\r\n width: 100%;\r\n}\r\n\r\n.conditions {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n width: 100%;\r\n}\r\n\r\n.condition {\r\n padding: 8px;\r\n border: 1px solid #e8e8e8;\r\n width: 100%;\r\n display: flex;\r\n align-items: center;\r\n}\r\n</style>\r\n","<template>\n <div class=\"control-group\">\n <div class=\"control-group-header\">\n <template v-if=\"Array.isArray(controlList) && controlList.length > 0\">\n <a-button @click=\"onAddControl('&&')\">添加且条件</a-button>\n <a-button @click=\"onAddControl('||')\" style=\"margin-left: 15px;\">添加或条件</a-button>\n </template>\n <a-button v-else @click=\"onAddControl()\">添加条件</a-button>\n <a-popover\n v-model:visible=\"isVisible\"\n title=\"选择组件\"\n placement=\"bottomRight\"\n trigger=\"click\"\n >\n <template #content>\n <div class=\"sync-wrap\">\n <div class=\"title\">\n 将此全局过滤条件配置同步至选中组件的指标库配置中。若被选中组件已有全局过滤条件将会被覆盖!\n </div>\n <div class=\"selected-total\" v-if=\"indicatorComponents.length\">\n {{ selectedIds.length }} / {{ indicatorComponents.length }} 项\n </div>\n <div class=\"operate-container\">\n <a-select\n style=\"width: 75%;\"\n v-model:value=\"selectedIds\"\n show-search\n mode=\"multiple\"\n placeholder=\"请选择\"\n :filter-option=\"filterOption\"\n :options=\"indicatorComponents\"\n />\n <a-button\n style=\"margin-left: 10px;\"\n type=\"primary\"\n :disabled=\"!selectedIds?.length\"\n @click=\"handleConfirmSync\"\n >\n 确定\n </a-button>\n </div>\n </div>\n </template>\n <a-button\n type=\"primary\"\n ghost\n style=\"float: right;\"\n v-if=\"Array.isArray(controlList) && controlList.length > 0\"\n >\n 应用到其他组件\n </a-button>\n </a-popover>\n </div>\n <div class=\"control-group-content\">\n <!-- <control-card\n v-for=\"(control, index) in controlList\"\n :key=\"index\"\n :index=\"index\"\n :control=\"control\"\n @delete=\"onDeleteControl\"\n @update=\"onUpdateControl\"\n /> -->\n <control-list\n class=\"condition-list\"\n :list=\"controlList\"\n :level=\"0\"\n :conditionOptions=\"conditionOptions\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, inject, provide, watch } from 'vue'\nimport { Button as AButton, Select as ASelect, Popover as APopover, message } from 'ant-design-vue'\nimport ControlList from './ControlList.vue'\nimport { getSqlConditions } from '@/utils/util'\nimport { hasOwn } from '@ecan-bi/tools'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, RENDER_USED_COMPONENTS, UPDATE_COMPONENTS_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport { nanoid } from 'nanoid'\nexport default defineComponent({\n name: 'ControlGroup',\n props: {\n conditionOptions: {\n type: Array,\n default: () => []\n }\n },\n components: {\n ControlList,\n AButton,\n ASelect,\n APopover\n },\n setup () {\n const isVisible = ref(false)\n const selectedIds = ref([])\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const updateComponentsConfig = inject(UPDATE_COMPONENTS_CONFIG) as any\n // 组件中 controlList 转为 List<SqlCondition>\n const controlList = computed(() => {\n const list = unref(graphicConfig)?.controlList || []\n for (const item of list) {\n if (item.conditionKey) {\n if (!hasOwn(item, 'rule')) {\n if (item.prop === 'startTime') {\n item.rule = 'GREATER_EQUAL'\n } else if (item.prop === 'endTime') {\n item.rule = 'LESS_EQUAL'\n } else {\n item.rule = 'EQUAL'\n }\n }\n if (!hasOwn(item, 'dataType')) {\n item.dataType = 'component'\n }\n }\n }\n if (list?.length > 1 && !list[0]?.join) {\n return [{\n join: '&&',\n conditions: list\n }]\n }\n return list\n })\n // 绑定id\n const bindComponentId = ref(null)\n const updateConfig = (config: { [key:string]: any }) => {\n const result = {\n ...unref(graphicConfig),\n ...config,\n sqlConditions: getSqlConditions({\n ...unref(graphicConfig),\n ...config\n }, unref(renderUsedComponents))\n }\n updateGraphicConfig(result)\n }\n const onAddControl = (join?: '||' | '&&') => {\n const list = unref(controlList)?.slice()\n if (list == null || list?.length === 0) {\n updateConfig({\n controlList: [{\n keyValue: nanoid()\n }]\n })\n } else if (list[0] != null) {\n if (list[0].conditions == null || list[0].join !== join) {\n updateConfig({\n controlList: [{\n join,\n conditions: [\n list[0],\n {\n keyValue: nanoid()\n }\n ]\n }]\n })\n } else if (list[0].conditions.length > 1 && list[0].join === join) {\n list[0].conditions.push({\n keyValue: nanoid()\n })\n updateConfig({\n controlList: list\n })\n }\n }\n }\n const onDeleteControl = (data: { [key:string]: any }) => {\n const { index, path } = data\n let sourceList = cloneDeep(unref(controlList)?.slice())\n let conditions = sourceList\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.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 if (pathArr.length > 0) {\n const lastIndex = pathArr.length - 1\n const lastPath = pathArr[lastIndex]\n const wrapperPath = pathArr.slice(0, lastIndex)\n let wrapperConditions = sourceList\n let wrapperJoin = ''\n for (const j of wrapperPath) {\n if (wrapperConditions[j]) {\n wrapperJoin = wrapperConditions[j]?.join\n wrapperConditions = wrapperConditions[j]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperJoin === conditions[0].join) {\n if (Array.isArray(conditions[0].conditions)) {\n const temp = cloneDeep(conditions[0].conditions)\n wrapperConditions.splice(+lastPath, 1)\n wrapperConditions.splice(+lastPath, 0, ...temp)\n }\n } else {\n wrapperConditions[lastPath] = conditions[0]\n }\n }\n } else if (conditions.length === 0) {\n sourceList = []\n }\n }\n updateConfig({\n controlList: sourceList\n })\n }\n }\n const onUpdateControl = (data: { [key:string]: any }) => {\n const { control, index, path } = data\n const sourceList = cloneDeep(unref(controlList)?.slice())\n let conditions = sourceList\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = control\n }\n updateConfig({\n controlList: sourceList\n })\n }\n\n const onAddMenuControl = (path: string, index: number, join: '||' | '&&') => {\n const sourceList = cloneDeep(unref(controlList)?.slice())\n let conditions = sourceList\n let cdJoin = ''\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n cdJoin = conditions[i]?.join\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (cdJoin === join) {\n conditions.splice(index + 1, 0, {\n keyValue: nanoid()\n })\n } else {\n const temp = cloneDeep(conditions[index])\n conditions[index] = {\n join,\n conditions: [\n temp,\n {\n keyValue: nanoid()\n }\n ]\n }\n }\n updateConfig({\n controlList: sourceList\n })\n }\n }\n const filterOption = (inputValue: string, option: { [key:string]:any }) => {\n return option?.label?.toLowerCase().includes(inputValue?.toLowerCase())\n }\n const indicatorComponents = computed(() => {\n return unref(renderUsedComponents)\n .filter((v: any) => v.dataType === 'indicator' && v.graphicConfig.source === 'INDICATOR_LIB')\n .map((v: any) => ({\n label: v.keyName,\n value: v.id\n }))\n })\n const handleConfirmSync = () => {\n try {\n if (unref(selectedIds)?.length) {\n updateComponentsConfig(unref(selectedIds), unref(controlList))\n message.success('应用成功')\n }\n isVisible.value = false\n } catch (error) {\n console.error(error)\n }\n }\n watch(isVisible, (val) => {\n if (!val) {\n selectedIds.value = []\n }\n })\n provide('CHANGE_CONTROL', {\n onDeleteControl,\n onUpdateControl,\n onAddMenuControl\n })\n return {\n isVisible,\n selectedIds,\n controlList,\n bindComponentId,\n indicatorComponents,\n onAddControl,\n filterOption,\n handleConfirmSync\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.control-group-header {\n margin: 20px 0;\n}\n.control-group-content {\n display: flex;\n flex-wrap: wrap;\n}\n.sync-wrap {\n width: 350px;\n max-height: 50vh;\n overflow: auto;\n .title {\n font-size: 12px;\n color: #616161;\n margin-bottom: 10px;\n }\n .selected-total {\n font-size: 12px;\n color: #616161;\n margin-bottom: 5px;\n }\n .operate-container {\n display: flex;\n align-items: center;\n }\n}\n</style>\n","<template>\n <div class=\"control-group\">\n <div class=\"control-group-header\">\n <template v-if=\"Array.isArray(controlList) && controlList.length > 0\">\n <a-button @click=\"onAddControl('&&')\">添加且条件</a-button>\n <a-button @click=\"onAddControl('||')\" style=\"margin-left: 15px;\">添加或条件</a-button>\n </template>\n <a-button v-else @click=\"onAddControl()\">添加条件</a-button>\n <a-popover\n v-model:visible=\"isVisible\"\n title=\"选择组件\"\n placement=\"bottomRight\"\n trigger=\"click\"\n >\n <template #content>\n <div class=\"sync-wrap\">\n <div class=\"title\">\n 将此全局过滤条件配置同步至选中组件的指标库配置中。若被选中组件已有全局过滤条件将会被覆盖!\n </div>\n <div class=\"selected-total\" v-if=\"indicatorComponents.length\">\n {{ selectedIds.length }} / {{ indicatorComponents.length }} 项\n </div>\n <div class=\"operate-container\">\n <a-select\n style=\"width: 75%;\"\n v-model:value=\"selectedIds\"\n show-search\n mode=\"multiple\"\n placeholder=\"请选择\"\n :filter-option=\"filterOption\"\n :options=\"indicatorComponents\"\n />\n <a-button\n style=\"margin-left: 10px;\"\n type=\"primary\"\n :disabled=\"!selectedIds?.length\"\n @click=\"handleConfirmSync\"\n >\n 确定\n </a-button>\n </div>\n </div>\n </template>\n <a-button\n type=\"primary\"\n ghost\n style=\"float: right;\"\n v-if=\"Array.isArray(controlList) && controlList.length > 0\"\n >\n 应用到其他组件\n </a-button>\n </a-popover>\n </div>\n <div class=\"control-group-content\">\n <!-- <control-card\n v-for=\"(control, index) in controlList\"\n :key=\"index\"\n :index=\"index\"\n :control=\"control\"\n @delete=\"onDeleteControl\"\n @update=\"onUpdateControl\"\n /> -->\n <control-list\n class=\"condition-list\"\n :list=\"controlList\"\n :level=\"0\"\n :conditionOptions=\"conditionOptions\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, inject, provide, watch } from 'vue'\nimport { Button as AButton, Select as ASelect, Popover as APopover, message } from 'ant-design-vue'\nimport ControlList from './ControlList.vue'\nimport { getSqlConditions } from '@/utils/util'\nimport { hasOwn } from '@ecan-bi/tools'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, RENDER_USED_COMPONENTS, UPDATE_COMPONENTS_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nimport { nanoid } from 'nanoid'\nexport default defineComponent({\n name: 'ControlGroup',\n props: {\n conditionOptions: {\n type: Array,\n default: () => []\n }\n },\n components: {\n ControlList,\n AButton,\n ASelect,\n APopover\n },\n setup () {\n const isVisible = ref(false)\n const selectedIds = ref([])\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const updateComponentsConfig = inject(UPDATE_COMPONENTS_CONFIG) as any\n // 组件中 controlList 转为 List<SqlCondition>\n const controlList = computed(() => {\n const list = unref(graphicConfig)?.controlList || []\n for (const item of list) {\n if (item.conditionKey) {\n if (!hasOwn(item, 'rule')) {\n if (item.prop === 'startTime') {\n item.rule = 'GREATER_EQUAL'\n } else if (item.prop === 'endTime') {\n item.rule = 'LESS_EQUAL'\n } else {\n item.rule = 'EQUAL'\n }\n }\n if (!hasOwn(item, 'dataType')) {\n item.dataType = 'component'\n }\n }\n }\n if (list?.length > 1 && !list[0]?.join) {\n return [{\n join: '&&',\n conditions: list\n }]\n }\n return list\n })\n // 绑定id\n const bindComponentId = ref(null)\n const updateConfig = (config: { [key:string]: any }) => {\n const result = {\n ...unref(graphicConfig),\n ...config,\n sqlConditions: getSqlConditions({\n ...unref(graphicConfig),\n ...config\n }, unref(renderUsedComponents))\n }\n updateGraphicConfig(result)\n }\n const onAddControl = (join?: '||' | '&&') => {\n const list = unref(controlList)?.slice()\n if (list == null || list?.length === 0) {\n updateConfig({\n controlList: [{\n keyValue: nanoid()\n }]\n })\n } else if (list[0] != null) {\n if (list[0].conditions == null || list[0].join !== join) {\n updateConfig({\n controlList: [{\n join,\n conditions: [\n list[0],\n {\n keyValue: nanoid()\n }\n ]\n }]\n })\n } else if (list[0].conditions.length > 1 && list[0].join === join) {\n list[0].conditions.push({\n keyValue: nanoid()\n })\n updateConfig({\n controlList: list\n })\n }\n }\n }\n const onDeleteControl = (data: { [key:string]: any }) => {\n const { index, path } = data\n let sourceList = cloneDeep(unref(controlList)?.slice())\n let conditions = sourceList\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.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 if (pathArr.length > 0) {\n const lastIndex = pathArr.length - 1\n const lastPath = pathArr[lastIndex]\n const wrapperPath = pathArr.slice(0, lastIndex)\n let wrapperConditions = sourceList\n let wrapperJoin = ''\n for (const j of wrapperPath) {\n if (wrapperConditions[j]) {\n wrapperJoin = wrapperConditions[j]?.join\n wrapperConditions = wrapperConditions[j]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperJoin === conditions[0].join) {\n if (Array.isArray(conditions[0].conditions)) {\n const temp = cloneDeep(conditions[0].conditions)\n wrapperConditions.splice(+lastPath, 1)\n wrapperConditions.splice(+lastPath, 0, ...temp)\n }\n } else {\n wrapperConditions[lastPath] = conditions[0]\n }\n }\n } else if (conditions.length === 0) {\n sourceList = []\n }\n }\n updateConfig({\n controlList: sourceList\n })\n }\n }\n const onUpdateControl = (data: { [key:string]: any }) => {\n const { control, index, path } = data\n const sourceList = cloneDeep(unref(controlList)?.slice())\n let conditions = sourceList\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = control\n }\n updateConfig({\n controlList: sourceList\n })\n }\n\n const onAddMenuControl = (path: string, index: number, join: '||' | '&&') => {\n const sourceList = cloneDeep(unref(controlList)?.slice())\n let conditions = sourceList\n let cdJoin = ''\n const pathArr = path.split('-')\n if (pathArr?.length) {\n for (const i of pathArr) {\n if (conditions[i]) {\n cdJoin = conditions[i]?.join\n conditions = conditions[i]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (cdJoin === join) {\n conditions.splice(index + 1, 0, {\n keyValue: nanoid()\n })\n } else {\n const temp = cloneDeep(conditions[index])\n conditions[index] = {\n join,\n conditions: [\n temp,\n {\n keyValue: nanoid()\n }\n ]\n }\n }\n updateConfig({\n controlList: sourceList\n })\n }\n }\n const filterOption = (inputValue: string, option: { [key:string]:any }) => {\n return option?.label?.toLowerCase().includes(inputValue?.toLowerCase())\n }\n const indicatorComponents = computed(() => {\n return unref(renderUsedComponents)\n .filter((v: any) => v.dataType === 'indicator' && v.graphicConfig.source === 'INDICATOR_LIB')\n .map((v: any) => ({\n label: v.keyName,\n value: v.id\n }))\n })\n const handleConfirmSync = () => {\n try {\n if (unref(selectedIds)?.length) {\n updateComponentsConfig(unref(selectedIds), unref(controlList))\n message.success('应用成功')\n }\n isVisible.value = false\n } catch (error) {\n console.error(error)\n }\n }\n watch(isVisible, (val) => {\n if (!val) {\n selectedIds.value = []\n }\n })\n provide('CHANGE_CONTROL', {\n onDeleteControl,\n onUpdateControl,\n onAddMenuControl\n })\n return {\n isVisible,\n selectedIds,\n controlList,\n bindComponentId,\n indicatorComponents,\n onAddControl,\n filterOption,\n handleConfirmSync\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.control-group-header {\n margin: 20px 0;\n}\n.control-group-content {\n display: flex;\n flex-wrap: wrap;\n}\n.sync-wrap {\n width: 350px;\n max-height: 50vh;\n overflow: auto;\n .title {\n font-size: 12px;\n color: #616161;\n margin-bottom: 10px;\n }\n .selected-total {\n font-size: 12px;\n color: #616161;\n margin-bottom: 5px;\n }\n .operate-container {\n display: flex;\n align-items: center;\n }\n}\n</style>\n","<template>\r\n <div class=\"variable-item\">\r\n <!-- 所属指标 -->\r\n <template v-if=\"variableData.randomKey\">\r\n <div class=\"var-indicator\" :title=\"label\">\r\n {{ label }}\r\n </div>\r\n </template>\r\n <!-- 变量名 -->\r\n <a-input\r\n class=\"field-name\"\r\n v-model:value=\"variableData.variableName\"\r\n placeholder=\"请输入变量名\"\r\n :disabled=\"!!variableData.randomKey\"\r\n />\r\n <!-- 变量类型 -->\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.variableType\"\r\n :options=\"typeOption\"\r\n :disabled=\"variableData.disabled\"\r\n style=\"max-width: 120px;\"\r\n placeholder=\"请选择变量类型\"\r\n @change=\"onChangeVariableType\"\r\n />\r\n <!-- 自定义值或者选择组件 -->\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.dataType\"\r\n :options=\"dataTypeOption\"\r\n style=\"max-width: 120px;\"\r\n @change=\"onChangeDataType\"\r\n />\r\n <!-- 变量值 -->\r\n <template v-if=\"variableData.dataType === 'component'\">\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.id\"\r\n :options=\"usedComponentList\"\r\n :fieldNames=\"{\r\n label: 'keyName',\r\n value: 'id'\r\n }\"\r\n show-search\r\n :filter-option=\"idFilterOption\"\r\n style=\"max-width: 180px;\"\r\n placeholder=\"请选择组件\"\r\n @change=\"onChangeComponent\"\r\n />\r\n </template>\r\n <template v-else>\r\n <a-input\r\n class=\"field-name\"\r\n style=\"max-width: 180px;\"\r\n v-model:value=\"variableData.variableValue\"\r\n placeholder=\"请输入变量值\"\r\n />\r\n </template>\r\n <!-- 日期范围的取值类型:间隔值、开始时间、结束时间 -->\r\n <template v-if=\"isDateRangeComponent\">\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.dateTypeValue\"\r\n :options=\"rangeTypeOptions\"\r\n placeholder=\"请选择取值类型\"\r\n />\r\n </template>\r\n <!-- 值格式,YYYY-MM-DD等 -->\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.format\"\r\n :options=\"formatOptions\"\r\n placeholder=\"请选择值格式\"\r\n />\r\n <!-- 日期加减 -->\r\n <template v-if=\"isShowDateOperate\">\r\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\r\n <template #content>\r\n <div class=\"popover-content-wrap\">\r\n <a-tabs :defaultActiveKey=\"variableData.activeOperateKey\" @change=\"changeTab\">\r\n <a-tab-pane tab=\"日期偏移\" :key=\"1\">\r\n <a-input-number\r\n class=\"field-name\"\r\n min=\"0\"\r\n v-model:value=\"variableData.operateValue\"\r\n style=\"max-width: 180px;flex: auto;\"\r\n >\r\n <template #addonBefore>\r\n <a-select v-model:value=\"variableData.operateType\" style=\"width: 60px\">\r\n <a-select-option value=\"add\">加</a-select-option>\r\n <a-select-option value=\"minus\">减</a-select-option>\r\n </a-select>\r\n </template>\r\n <template #addonAfter>\r\n <a-select v-model:value=\"variableData.operateMode\" style=\"width: 60px\">\r\n <a-select-option value=\"year\">年</a-select-option>\r\n <a-select-option value=\"month\">月</a-select-option>\r\n <a-select-option value=\"week\">周</a-select-option>\r\n <a-select-option value=\"day\">日</a-select-option>\r\n <a-select-option value=\"hour\">时</a-select-option>\r\n <a-select-option value=\"minute\">分</a-select-option>\r\n </a-select>\r\n </template>\r\n </a-input-number>\r\n </a-tab-pane>\r\n <!-- 自定义 -->\r\n <a-tab-pane tab=\"自定义\" :key=\"2\" v-if=\"isDateRangeComponent\">\r\n <div style=\"display: flex;\">\r\n <a-select\r\n v-model:value=\"variableData.operateValue\"\r\n allowClear\r\n style=\"width: 120px;margin-right: 10px;\"\r\n >\r\n <a-select-option value=\"rangeValue\">范围差值</a-select-option>\r\n </a-select>\r\n <a-select v-model:value=\"variableData.operateMode\" style=\"margin-right: 10px;\">\r\n <a-select-option value=\"year\">年</a-select-option>\r\n <a-select-option value=\"month\">月</a-select-option>\r\n <a-select-option value=\"week\">周</a-select-option>\r\n <a-select-option value=\"day\">日</a-select-option>\r\n <a-select-option value=\"hour\">时</a-select-option>\r\n <a-select-option value=\"minute\">分</a-select-option>\r\n </a-select>\r\n <a-select v-model:value=\"variableData.operateType\">\r\n <a-select-option value=\"minus\">前</a-select-option>\r\n <a-select-option value=\"add\">后</a-select-option>\r\n </a-select>\r\n </div>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </template>\r\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\r\n <appstore-add-outlined />\r\n </div>\r\n </a-popover>\r\n </template>\r\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" v-if=\"!variableData.randomKey\"/>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, inject, unref, ref, watch } from 'vue'\r\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\r\nimport { RENDER_USED_COMPONENTS } from '@/utils/constant'\r\nimport { CloseOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport {\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Input as AInput,\r\n Popover as APopover,\r\n Tabs as ATabs,\r\n TabPane as ATabPane,\r\n InputNumber as AInputNumber\r\n} from 'ant-design-vue'\r\nimport 'ant-design-vue/es/popover/style'\r\nexport default defineComponent({\r\n name: 'VariableCard',\r\n props: {\r\n item: {\r\n type: Object,\r\n default: () => ({})\r\n },\r\n index: {\r\n type: Number,\r\n require: true\r\n },\r\n label: String\r\n },\r\n components: {\r\n CloseOutlined,\r\n AppstoreAddOutlined,\r\n ASelect,\r\n ASelectOption,\r\n AInput,\r\n APopover,\r\n ATabs,\r\n ATabPane,\r\n AInputNumber\r\n },\r\n setup (props, { emit }) {\r\n const popoverVisible = ref(false)\r\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\r\n const usedComponentList = computed(() => {\r\n return unref(renderUsedComponents)?.filter((usedComponent) => {\r\n return usedComponent.keyName !== ''\r\n })\r\n })\r\n const typeOption = [{\r\n label: 'TEXT',\r\n value: 'TEXT'\r\n }, {\r\n label: 'NUMBER',\r\n value: 'NUMBER'\r\n }, {\r\n label: 'DATE',\r\n value: 'DATE'\r\n }]\r\n\r\n const dataTypeOption = [{\r\n label: '自定义值',\r\n value: ''\r\n }, {\r\n label: '组件值',\r\n value: 'component'\r\n }]\r\n\r\n const rangeTypeOptions = [{\r\n label: '间隔值',\r\n value: 'rangeValue'\r\n }, {\r\n label: '开始时间',\r\n value: 'startTime'\r\n }, {\r\n label: '结束时间',\r\n value: 'endTime'\r\n }]\r\n\r\n const variableData = ref(cloneDeep(props.item))\r\n\r\n watch(variableData, (data: { [key: string]: any }) => {\r\n emit('update', {\r\n ...data,\r\n label: props.label\r\n }, props.index)\r\n }, {\r\n deep: true\r\n })\r\n\r\n const curComponent = computed(() => {\r\n let result = null\r\n if (unref(variableData)?.dataType === 'component') {\r\n const target = unref(usedComponentList).find(v => v.id === unref(variableData)?.id)\r\n if (target) {\r\n result = target\r\n }\r\n }\r\n return result\r\n })\r\n const isShowFormat = computed(() => {\r\n let result = false\r\n // if (unref(curComponent)) {\r\n // result = lowerCaseIncludes(unref(curComponent).type, ['range', 'date'])\r\n // }\r\n if (unref(variableData)?.variableType === 'DATE') {\r\n result = true\r\n }\r\n return result\r\n })\r\n const isDateRangeComponent = computed(() => {\r\n let result = false\r\n if (unref(curComponent)) {\r\n result = lowerCaseIncludes(unref(curComponent).type, 'range')\r\n }\r\n return result\r\n })\r\n\r\n const isShowDateOperate = computed(() => {\r\n let result = false\r\n if (unref(curComponent)) {\r\n if (lowerCaseIncludes(unref(curComponent).type, 'range')) {\r\n if (['startTime', 'endTime'].includes(unref(variableData).dateTypeValue)) {\r\n result = true\r\n }\r\n } else if (lowerCaseIncludes(unref(curComponent).type, 'date')) {\r\n result = true\r\n }\r\n }\r\n return result\r\n })\r\n\r\n const onChangeComponent = (value: string, option: { [key:string]:any }) => {\r\n if (value) {\r\n unref(variableData).keyName = option.keyName\r\n }\r\n }\r\n\r\n const onDelete = () => {\r\n emit('delete', props.index)\r\n }\r\n\r\n const formatOptions = computed(() => {\r\n if (unref(isShowFormat)) {\r\n return [\r\n { label: '年', value: 'YYYY' },\r\n { label: '年月', value: 'YYYY-MM' },\r\n { label: '年月日', value: 'YYYY-MM-DD' },\r\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\r\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\r\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\r\n ]\r\n } else {\r\n return []\r\n }\r\n })\r\n\r\n const onChangeDataType = () => {\r\n unref(variableData).id = null\r\n unref(variableData).keyName = ''\r\n // unref(variableData).format = null\r\n unref(variableData).dateTypeValue = null\r\n unref(variableData).variableValue = ''\r\n }\r\n\r\n const onChangeVariableType = () => {\r\n unref(variableData).format = null\r\n }\r\n\r\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\r\n return option?.keyName?.toLowerCase().includes(inputValue?.toLowerCase())\r\n }\r\n\r\n watch(isShowDateOperate, (val: boolean) => {\r\n if (val) {\r\n if (!unref(variableData).operateType) {\r\n unref(variableData).operateType = 'add'\r\n }\r\n if (!unref(variableData).operateMode) {\r\n unref(variableData).operateMode = 'year'\r\n }\r\n if (!unref(variableData).operateValue) {\r\n unref(variableData).operateValue = 0\r\n }\r\n if (!unref(variableData).activeOperateKey) {\r\n unref(variableData).activeOperateKey = 1\r\n }\r\n }\r\n }, {\r\n immediate: true\r\n })\r\n\r\n const changeTab = (activeKey: number) => {\r\n unref(variableData).activeOperateKey = activeKey\r\n if (activeKey === 1) {\r\n unref(variableData).operateValue = 0\r\n } else if (activeKey === 2) {\r\n unref(variableData).operateValue = 'rangeValue'\r\n }\r\n }\r\n\r\n return {\r\n variableData,\r\n typeOption,\r\n dataTypeOption,\r\n usedComponentList,\r\n formatOptions,\r\n rangeTypeOptions,\r\n isShowFormat,\r\n isDateRangeComponent,\r\n isShowDateOperate,\r\n popoverVisible,\r\n idFilterOption,\r\n onChangeComponent,\r\n onDelete,\r\n onChangeDataType,\r\n onChangeVariableType,\r\n changeTab\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.variable-item {\r\n width: 100%;\r\n padding: 10px;\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n border: 1px solid #e8e8e8;\r\n .field-name {\r\n margin-right: 20px;\r\n flex: 1;\r\n }\r\n\r\n .var-indicator {\r\n width: 120px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n cursor: pointer;\r\n margin-right: 10px;\r\n text-align: center;\r\n }\r\n .calendar-wrap {\r\n width: 25px;\r\n border: 1px solid #d9d9d9;\r\n border-radius: 50%;\r\n height: 25px;\r\n text-align: center;\r\n cursor: pointer;\r\n margin-right: 15px;\r\n &:hover {\r\n border-color: rgb(24, 144, 255);\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"variable-item\">\r\n <!-- 所属指标 -->\r\n <template v-if=\"variableData.randomKey\">\r\n <div class=\"var-indicator\" :title=\"label\">\r\n {{ label }}\r\n </div>\r\n </template>\r\n <!-- 变量名 -->\r\n <a-input\r\n class=\"field-name\"\r\n v-model:value=\"variableData.variableName\"\r\n placeholder=\"请输入变量名\"\r\n :disabled=\"!!variableData.randomKey\"\r\n />\r\n <!-- 变量类型 -->\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.variableType\"\r\n :options=\"typeOption\"\r\n :disabled=\"variableData.disabled\"\r\n style=\"max-width: 120px;\"\r\n placeholder=\"请选择变量类型\"\r\n @change=\"onChangeVariableType\"\r\n />\r\n <!-- 自定义值或者选择组件 -->\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.dataType\"\r\n :options=\"dataTypeOption\"\r\n style=\"max-width: 120px;\"\r\n @change=\"onChangeDataType\"\r\n />\r\n <!-- 变量值 -->\r\n <template v-if=\"variableData.dataType === 'component'\">\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.id\"\r\n :options=\"usedComponentList\"\r\n :fieldNames=\"{\r\n label: 'keyName',\r\n value: 'id'\r\n }\"\r\n show-search\r\n :filter-option=\"idFilterOption\"\r\n style=\"max-width: 180px;\"\r\n placeholder=\"请选择组件\"\r\n @change=\"onChangeComponent\"\r\n />\r\n </template>\r\n <template v-else>\r\n <a-input\r\n class=\"field-name\"\r\n style=\"max-width: 180px;\"\r\n v-model:value=\"variableData.variableValue\"\r\n placeholder=\"请输入变量值\"\r\n />\r\n </template>\r\n <!-- 日期范围的取值类型:间隔值、开始时间、结束时间 -->\r\n <template v-if=\"isDateRangeComponent\">\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.dateTypeValue\"\r\n :options=\"rangeTypeOptions\"\r\n placeholder=\"请选择取值类型\"\r\n />\r\n </template>\r\n <!-- 值格式,YYYY-MM-DD等 -->\r\n <a-select\r\n class=\"field-name\"\r\n v-model:value=\"variableData.format\"\r\n :options=\"formatOptions\"\r\n placeholder=\"请选择值格式\"\r\n />\r\n <!-- 日期加减 -->\r\n <template v-if=\"isShowDateOperate\">\r\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\r\n <template #content>\r\n <div class=\"popover-content-wrap\">\r\n <a-tabs :defaultActiveKey=\"variableData.activeOperateKey\" @change=\"changeTab\">\r\n <a-tab-pane tab=\"日期偏移\" :key=\"1\">\r\n <a-input-number\r\n class=\"field-name\"\r\n min=\"0\"\r\n v-model:value=\"variableData.operateValue\"\r\n style=\"max-width: 180px;flex: auto;\"\r\n >\r\n <template #addonBefore>\r\n <a-select v-model:value=\"variableData.operateType\" style=\"width: 60px\">\r\n <a-select-option value=\"add\">加</a-select-option>\r\n <a-select-option value=\"minus\">减</a-select-option>\r\n </a-select>\r\n </template>\r\n <template #addonAfter>\r\n <a-select v-model:value=\"variableData.operateMode\" style=\"width: 60px\">\r\n <a-select-option value=\"year\">年</a-select-option>\r\n <a-select-option value=\"month\">月</a-select-option>\r\n <a-select-option value=\"week\">周</a-select-option>\r\n <a-select-option value=\"day\">日</a-select-option>\r\n <a-select-option value=\"hour\">时</a-select-option>\r\n <a-select-option value=\"minute\">分</a-select-option>\r\n </a-select>\r\n </template>\r\n </a-input-number>\r\n </a-tab-pane>\r\n <!-- 自定义 -->\r\n <a-tab-pane tab=\"自定义\" :key=\"2\" v-if=\"isDateRangeComponent\">\r\n <div style=\"display: flex;\">\r\n <a-select\r\n v-model:value=\"variableData.operateValue\"\r\n allowClear\r\n style=\"width: 120px;margin-right: 10px;\"\r\n >\r\n <a-select-option value=\"rangeValue\">范围差值</a-select-option>\r\n </a-select>\r\n <a-select v-model:value=\"variableData.operateMode\" style=\"margin-right: 10px;\">\r\n <a-select-option value=\"year\">年</a-select-option>\r\n <a-select-option value=\"month\">月</a-select-option>\r\n <a-select-option value=\"week\">周</a-select-option>\r\n <a-select-option value=\"day\">日</a-select-option>\r\n <a-select-option value=\"hour\">时</a-select-option>\r\n <a-select-option value=\"minute\">分</a-select-option>\r\n </a-select>\r\n <a-select v-model:value=\"variableData.operateType\">\r\n <a-select-option value=\"minus\">前</a-select-option>\r\n <a-select-option value=\"add\">后</a-select-option>\r\n </a-select>\r\n </div>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </template>\r\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\r\n <appstore-add-outlined />\r\n </div>\r\n </a-popover>\r\n </template>\r\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" v-if=\"!variableData.randomKey\"/>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, inject, unref, ref, watch } from 'vue'\r\nimport { lowerCaseIncludes } from '@ecan-bi/tools'\r\nimport { RENDER_USED_COMPONENTS } from '@/utils/constant'\r\nimport { CloseOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\r\nimport { cloneDeep } from 'lodash-es'\r\nimport {\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Input as AInput,\r\n Popover as APopover,\r\n Tabs as ATabs,\r\n TabPane as ATabPane,\r\n InputNumber as AInputNumber\r\n} from 'ant-design-vue'\r\nimport 'ant-design-vue/es/popover/style'\r\nexport default defineComponent({\r\n name: 'VariableCard',\r\n props: {\r\n item: {\r\n type: Object,\r\n default: () => ({})\r\n },\r\n index: {\r\n type: Number,\r\n require: true\r\n },\r\n label: String\r\n },\r\n components: {\r\n CloseOutlined,\r\n AppstoreAddOutlined,\r\n ASelect,\r\n ASelectOption,\r\n AInput,\r\n APopover,\r\n ATabs,\r\n ATabPane,\r\n AInputNumber\r\n },\r\n setup (props, { emit }) {\r\n const popoverVisible = ref(false)\r\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\r\n const usedComponentList = computed(() => {\r\n return unref(renderUsedComponents)?.filter((usedComponent) => {\r\n return usedComponent.keyName !== ''\r\n })\r\n })\r\n const typeOption = [{\r\n label: 'TEXT',\r\n value: 'TEXT'\r\n }, {\r\n label: 'NUMBER',\r\n value: 'NUMBER'\r\n }, {\r\n label: 'DATE',\r\n value: 'DATE'\r\n }]\r\n\r\n const dataTypeOption = [{\r\n label: '自定义值',\r\n value: ''\r\n }, {\r\n label: '组件值',\r\n value: 'component'\r\n }]\r\n\r\n const rangeTypeOptions = [{\r\n label: '间隔值',\r\n value: 'rangeValue'\r\n }, {\r\n label: '开始时间',\r\n value: 'startTime'\r\n }, {\r\n label: '结束时间',\r\n value: 'endTime'\r\n }]\r\n\r\n const variableData = ref(cloneDeep(props.item))\r\n\r\n watch(variableData, (data: { [key: string]: any }) => {\r\n emit('update', {\r\n ...data,\r\n label: props.label\r\n }, props.index)\r\n }, {\r\n deep: true\r\n })\r\n\r\n const curComponent = computed(() => {\r\n let result = null\r\n if (unref(variableData)?.dataType === 'component') {\r\n const target = unref(usedComponentList).find(v => v.id === unref(variableData)?.id)\r\n if (target) {\r\n result = target\r\n }\r\n }\r\n return result\r\n })\r\n const isShowFormat = computed(() => {\r\n let result = false\r\n // if (unref(curComponent)) {\r\n // result = lowerCaseIncludes(unref(curComponent).type, ['range', 'date'])\r\n // }\r\n if (unref(variableData)?.variableType === 'DATE') {\r\n result = true\r\n }\r\n return result\r\n })\r\n const isDateRangeComponent = computed(() => {\r\n let result = false\r\n if (unref(curComponent)) {\r\n result = lowerCaseIncludes(unref(curComponent).type, 'range')\r\n }\r\n return result\r\n })\r\n\r\n const isShowDateOperate = computed(() => {\r\n let result = false\r\n if (unref(curComponent)) {\r\n if (lowerCaseIncludes(unref(curComponent).type, 'range')) {\r\n if (['startTime', 'endTime'].includes(unref(variableData).dateTypeValue)) {\r\n result = true\r\n }\r\n } else if (lowerCaseIncludes(unref(curComponent).type, 'date')) {\r\n result = true\r\n }\r\n }\r\n return result\r\n })\r\n\r\n const onChangeComponent = (value: string, option: { [key:string]:any }) => {\r\n if (value) {\r\n unref(variableData).keyName = option.keyName\r\n }\r\n }\r\n\r\n const onDelete = () => {\r\n emit('delete', props.index)\r\n }\r\n\r\n const formatOptions = computed(() => {\r\n if (unref(isShowFormat)) {\r\n return [\r\n { label: '年', value: 'YYYY' },\r\n { label: '年月', value: 'YYYY-MM' },\r\n { label: '年月日', value: 'YYYY-MM-DD' },\r\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\r\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\r\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\r\n ]\r\n } else {\r\n return []\r\n }\r\n })\r\n\r\n const onChangeDataType = () => {\r\n unref(variableData).id = null\r\n unref(variableData).keyName = ''\r\n // unref(variableData).format = null\r\n unref(variableData).dateTypeValue = null\r\n unref(variableData).variableValue = ''\r\n }\r\n\r\n const onChangeVariableType = () => {\r\n unref(variableData).format = null\r\n }\r\n\r\n const idFilterOption = (inputValue: string, option: { [key:string]:any }) => {\r\n return option?.keyName?.toLowerCase().includes(inputValue?.toLowerCase())\r\n }\r\n\r\n watch(isShowDateOperate, (val: boolean) => {\r\n if (val) {\r\n if (!unref(variableData).operateType) {\r\n unref(variableData).operateType = 'add'\r\n }\r\n if (!unref(variableData).operateMode) {\r\n unref(variableData).operateMode = 'year'\r\n }\r\n if (!unref(variableData).operateValue) {\r\n unref(variableData).operateValue = 0\r\n }\r\n if (!unref(variableData).activeOperateKey) {\r\n unref(variableData).activeOperateKey = 1\r\n }\r\n }\r\n }, {\r\n immediate: true\r\n })\r\n\r\n const changeTab = (activeKey: number) => {\r\n unref(variableData).activeOperateKey = activeKey\r\n if (activeKey === 1) {\r\n unref(variableData).operateValue = 0\r\n } else if (activeKey === 2) {\r\n unref(variableData).operateValue = 'rangeValue'\r\n }\r\n }\r\n\r\n return {\r\n variableData,\r\n typeOption,\r\n dataTypeOption,\r\n usedComponentList,\r\n formatOptions,\r\n rangeTypeOptions,\r\n isShowFormat,\r\n isDateRangeComponent,\r\n isShowDateOperate,\r\n popoverVisible,\r\n idFilterOption,\r\n onChangeComponent,\r\n onDelete,\r\n onChangeDataType,\r\n onChangeVariableType,\r\n changeTab\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.variable-item {\r\n width: 100%;\r\n padding: 10px;\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n border: 1px solid #e8e8e8;\r\n .field-name {\r\n margin-right: 20px;\r\n flex: 1;\r\n }\r\n\r\n .var-indicator {\r\n width: 120px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n cursor: pointer;\r\n margin-right: 10px;\r\n text-align: center;\r\n }\r\n .calendar-wrap {\r\n width: 25px;\r\n border: 1px solid #d9d9d9;\r\n border-radius: 50%;\r\n height: 25px;\r\n text-align: center;\r\n cursor: pointer;\r\n margin-right: 15px;\r\n &:hover {\r\n border-color: rgb(24, 144, 255);\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"variable-group\">\r\n <div class=\"variable-group-header\">\r\n <a-button @click=\"onAddVariable\">添加变量</a-button>\r\n </div>\r\n </div>\r\n <div class=\"variable-group-content\">\r\n <template v-for=\"(item, index) in variableList\" :key=\"item.keyValue\">\r\n <variable-item\r\n :item=\"item\"\r\n :index=\"index\"\r\n :label=\"item.label\"\r\n @update=\"onUpdateItem\"\r\n @delete=\"onDeleteItem\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { computed, defineComponent, inject, unref } from 'vue'\r\nimport VariableItem from './VariableItem.vue'\r\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, RENDER_USED_COMPONENTS } from '@/utils/constant'\r\nimport { handleVariableList } from '@/utils/util'\r\nimport { nanoid } from 'nanoid'\r\nimport { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'VariableGroup',\r\n components: {\r\n VariableItem\r\n },\r\n setup () {\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\r\n const variableList = computed(() => {\r\n const list = unref(graphicConfig)?.variableList || []\r\n return list\r\n })\r\n\r\n const updateConfig = (list: { [key:string]: any }[]) => {\r\n updateGraphicConfig({\r\n ...unref(graphicConfig),\r\n variableConditions: handleVariableList(list, renderUsedComponents),\r\n variableList: list\r\n })\r\n }\r\n\r\n const onAddVariable = () => {\r\n const list = cloneDeep(unref(variableList))\r\n list.push({\r\n keyValue: nanoid(),\r\n variableType: 'TEXT',\r\n dataType: '',\r\n id: null,\r\n dateTypeValue: null,\r\n format: null,\r\n operateType: 'add',\r\n operateMode: 'year',\r\n operateValue: 0,\r\n activeOperateKey: 1\r\n })\r\n updateConfig(list)\r\n }\r\n\r\n const onUpdateItem = (data: { [key: string]: any }, index: number) => {\r\n if (index >= 0) {\r\n const list = cloneDeep(unref(variableList))\r\n list[index] = data\r\n updateConfig(list)\r\n }\r\n }\r\n\r\n const onDeleteItem = (index: number) => {\r\n if (index >= 0) {\r\n const list = cloneDeep(unref(variableList))\r\n list.splice(index, 1)\r\n updateConfig(list)\r\n }\r\n }\r\n\r\n return {\r\n variableList,\r\n onAddVariable,\r\n onUpdateItem,\r\n onDeleteItem\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.variable-group-header {\r\n margin: 20px 0;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"variable-group\">\r\n <div class=\"variable-group-header\">\r\n <a-button @click=\"onAddVariable\">添加变量</a-button>\r\n </div>\r\n </div>\r\n <div class=\"variable-group-content\">\r\n <template v-for=\"(item, index) in variableList\" :key=\"item.keyValue\">\r\n <variable-item\r\n :item=\"item\"\r\n :index=\"index\"\r\n :label=\"item.label\"\r\n @update=\"onUpdateItem\"\r\n @delete=\"onDeleteItem\"\r\n />\r\n </template>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { computed, defineComponent, inject, unref } from 'vue'\r\nimport VariableItem from './VariableItem.vue'\r\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, RENDER_USED_COMPONENTS } from '@/utils/constant'\r\nimport { handleVariableList } from '@/utils/util'\r\nimport { nanoid } from 'nanoid'\r\nimport { cloneDeep } from 'lodash-es'\r\nexport default defineComponent({\r\n name: 'VariableGroup',\r\n components: {\r\n VariableItem\r\n },\r\n setup () {\r\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\r\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\r\n const renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\r\n const variableList = computed(() => {\r\n const list = unref(graphicConfig)?.variableList || []\r\n return list\r\n })\r\n\r\n const updateConfig = (list: { [key:string]: any }[]) => {\r\n updateGraphicConfig({\r\n ...unref(graphicConfig),\r\n variableConditions: handleVariableList(list, renderUsedComponents),\r\n variableList: list\r\n })\r\n }\r\n\r\n const onAddVariable = () => {\r\n const list = cloneDeep(unref(variableList))\r\n list.push({\r\n keyValue: nanoid(),\r\n variableType: 'TEXT',\r\n dataType: '',\r\n id: null,\r\n dateTypeValue: null,\r\n format: null,\r\n operateType: 'add',\r\n operateMode: 'year',\r\n operateValue: 0,\r\n activeOperateKey: 1\r\n })\r\n updateConfig(list)\r\n }\r\n\r\n const onUpdateItem = (data: { [key: string]: any }, index: number) => {\r\n if (index >= 0) {\r\n const list = cloneDeep(unref(variableList))\r\n list[index] = data\r\n updateConfig(list)\r\n }\r\n }\r\n\r\n const onDeleteItem = (index: number) => {\r\n if (index >= 0) {\r\n const list = cloneDeep(unref(variableList))\r\n list.splice(index, 1)\r\n updateConfig(list)\r\n }\r\n }\r\n\r\n return {\r\n variableList,\r\n onAddVariable,\r\n onUpdateItem,\r\n onDeleteItem\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.variable-group-header {\r\n margin: 20px 0;\r\n}\r\n</style>\r\n","import { lowerCaseIncludes, hasOwn } from '@ecan-bi/tools'\r\nimport {\r\n INDICATOR_URL\r\n} from '@/utils/constant'\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, typeGuid } = 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 typeGuid\r\n }\r\n }\r\n\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, isGroupTable } = 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 sqlConditions = [],\r\n rowHeaderList = []\r\n } = graphicConfig || {}\r\n // 图类型,1=表 2=图\r\n if (layer == null) {\r\n if (lowerCaseIncludes(type, ['table', 'card'])) {\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, typeGuid } = 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 typeGuid,\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, typeGuid } = 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 typeGuid\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // 行表头\r\n const rowHeaders = []\r\n if (Array.isArray(rowHeaderList) && rowHeaderList.length > 0) {\r\n const len = rowHeaderList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = rowHeaderList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions, typeGuid } = item\r\n rowHeaders.push({\r\n typeGuid,\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 }\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\r\n if (isGroupTable || type === 'card') {\r\n // 分组表和指标卡片\r\n chartType = 'grouptable'\r\n if (indicatorList.length === 0 || rowHeaders.length === 0) {\r\n return\r\n }\r\n // queryColumns 表格配置为空返回\r\n } else 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(`${INDICATOR_URL}/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 rowHeaders,\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","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrapRef\">\r\n <a-spin :spinning=\"loading\" wrapperClassName=\"chart-spin\" tip=\"数据加载中...\">\r\n <div style=\"width: 100%; height: 100%\" ref=\"echartRef\"></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 { defineComponent, onMounted, onBeforeUnmount, computed, ref, inject, unref, watch } from 'vue'\r\nimport { Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport * as generalTools from '@ecan-bi/tools'\r\nimport { CHARTS_OPTIONS, GRAPHIC_CONFIG, ZOOM_FONT_SIZE, REQUEST, INDICATOR_TOKEN } 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 interface KeyTypeDataFieldNames {\r\n name: string\r\n types: {\r\n label: string\r\n value: string\r\n } []\r\n }\r\n\r\n interface ValueTypeDataFieldNames {\r\n name: string\r\n value: string\r\n type: string\r\n }\r\n\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 return generalTools.transformProps(chartsOptionsValue, unref(chartData), fontSize.value)\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 = generalTools.useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (data: any = [], dataFieldNames?: ValueTypeDataFieldNames) => {\r\n chartData.value = generalTools.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, true)\r\n } else {\r\n myChart.value.setOption(chartOption.value, true)\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 :spinning=\"loading\" wrapperClassName=\"chart-spin\" tip=\"数据加载中...\">\r\n <div style=\"width: 100%; height: 100%\" ref=\"echartRef\"></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 { defineComponent, onMounted, onBeforeUnmount, computed, ref, inject, unref, watch } from 'vue'\r\nimport { Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport * as generalTools from '@ecan-bi/tools'\r\nimport { CHARTS_OPTIONS, GRAPHIC_CONFIG, ZOOM_FONT_SIZE, REQUEST, INDICATOR_TOKEN } 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 interface KeyTypeDataFieldNames {\r\n name: string\r\n types: {\r\n label: string\r\n value: string\r\n } []\r\n }\r\n\r\n interface ValueTypeDataFieldNames {\r\n name: string\r\n value: string\r\n type: string\r\n }\r\n\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 return generalTools.transformProps(chartsOptionsValue, unref(chartData), fontSize.value)\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 = generalTools.useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (data: any = [], dataFieldNames?: ValueTypeDataFieldNames) => {\r\n chartData.value = generalTools.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, true)\r\n } else {\r\n myChart.value.setOption(chartOption.value, true)\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 <a-table\r\n style=\"width: 100%;\"\r\n :scroll=\"{ y: 280 }\"\r\n :columns=\"tableColumns\"\r\n :data-source=\"tableData\"\r\n size=\"small\"\r\n :pagination=\"pagination\"\r\n >\r\n <template #bodyCell=\"{ column, record }\">\r\n <template v-if=\"column.retentiondigit !== undefined\">\r\n <span>{{ handleFormat(record, column)}}</span>\r\n </template>\r\n </template>\r\n </a-table>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, watch, unref } from 'vue'\r\nimport { Table as ATable } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { handleFormat } from '@/utils/util'\r\n\r\nimport 'ant-design-vue/es/table/style'\r\nimport { REQUEST, INDICATOR_TOKEN, SELECTED_COMPONENT } from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'TableGraph',\r\n components: { ATable },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n type: {\r\n type: String\r\n },\r\n pagination: {\r\n type: Object,\r\n default: () => ({})\r\n }\r\n },\r\n setup (props) {\r\n const selectedComponent = inject(SELECTED_COMPONENT) as {\r\n [key: string]: any\r\n }\r\n const tableData = ref<any[]>([])\r\n const tableColumns = ref<any[]>([])\r\n const request = inject(REQUEST)\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: props.graphicConfig,\r\n type: props.type,\r\n request,\r\n indicatorToken\r\n })\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n const columnsConfigMap = unref(selectedComponent).columnsConfigMap\r\n tableColumns.value = columns.map((i) => ({ title: i, dataIndex: i, label: i, ...columnsConfigMap[i] }))\r\n tableData.value = rows\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n watch(\r\n [() => props.graphicConfig, () => unref(selectedComponent).columnsConfigMap],\r\n () => {\r\n handleIndicatorData()\r\n },\r\n { deep: true, immediate: true }\r\n )\r\n return {\r\n tableData,\r\n tableColumns,\r\n handleFormat,\r\n columnsConfigMap: unref(selectedComponent).columnsConfigMap\r\n }\r\n }\r\n})\r\n</script>\r\n","<template>\r\n <a-table\r\n style=\"width: 100%;\"\r\n :scroll=\"{ y: 280 }\"\r\n :columns=\"tableColumns\"\r\n :data-source=\"tableData\"\r\n size=\"small\"\r\n :pagination=\"pagination\"\r\n >\r\n <template #bodyCell=\"{ column, record }\">\r\n <template v-if=\"column.retentiondigit !== undefined\">\r\n <span>{{ handleFormat(record, column)}}</span>\r\n </template>\r\n </template>\r\n </a-table>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport { defineComponent, ref, inject, watch, unref } from 'vue'\r\nimport { Table as ATable } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { handleFormat } from '@/utils/util'\r\n\r\nimport 'ant-design-vue/es/table/style'\r\nimport { REQUEST, INDICATOR_TOKEN, SELECTED_COMPONENT } from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'TableGraph',\r\n components: { ATable },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n type: {\r\n type: String\r\n },\r\n pagination: {\r\n type: Object,\r\n default: () => ({})\r\n }\r\n },\r\n setup (props) {\r\n const selectedComponent = inject(SELECTED_COMPONENT) as {\r\n [key: string]: any\r\n }\r\n const tableData = ref<any[]>([])\r\n const tableColumns = ref<any[]>([])\r\n const request = inject(REQUEST)\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: props.graphicConfig,\r\n type: props.type,\r\n request,\r\n indicatorToken\r\n })\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n const columnsConfigMap = unref(selectedComponent).columnsConfigMap\r\n tableColumns.value = columns.map((i) => ({ title: i, dataIndex: i, label: i, ...columnsConfigMap[i] }))\r\n tableData.value = rows\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n watch(\r\n [() => props.graphicConfig, () => unref(selectedComponent).columnsConfigMap],\r\n () => {\r\n handleIndicatorData()\r\n },\r\n { deep: true, immediate: true }\r\n )\r\n return {\r\n tableData,\r\n tableColumns,\r\n handleFormat,\r\n columnsConfigMap: unref(selectedComponent).columnsConfigMap\r\n }\r\n }\r\n})\r\n</script>\r\n","<template>\n <div class=\"data-config\" :class=\"isPivotTable ? 'pivot-table-wrap' : ''\">\n <a-tabs v-model:activeKey=\"activeKey\" @change=\"onChange\">\n <a-tab-pane key=\"1\" tab=\"数据配置\" ref=\"dataConfigPaneRef\">\n <template v-if=\"isPivotTable && isIframeMode\">\n <div class=\"ecan-pivot-table\" ref=\"pivotTableWrapRef\">\n <pivot-table\n ref=\"componentRef\"\n v-bind=\"tableProps\"\n />\n </div>\n </template>\n <template v-else>\n <data-group ref=\"dataGroupRef\" v-if=\"!isPivotTable\" />\n <component\n v-if=\"!isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n @tableChange=\"onPivotTableChange\"\n />\n </template>\n </a-tab-pane>\n <a-tab-pane v-if=\"isShowStyleConfig\" key=\"2\" tab=\"样式配置\" force-render>\n <style-group :componentType=\"type\" :isGroupTable=\"isGroupTable\"></style-group>\n </a-tab-pane>\n <a-tab-pane v-if=\"(!isIframeMode || isPivotTable) && renderUsedComponents\" key=\"3\" tab=\"全局过滤\" force-render>\n <control-group ref=\"controlGroup\" :conditionOptions=\"conditionOptions\" />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"!isIframeMode\"\n key=\"4\"\n tab=\"全局变量\"\n force-render\n >\n <variable-group />\n </a-tab-pane>\n <template #rightExtra>\n <a-button @click=\"refreshAction\">\n <template #icon>\n <reload-outlined />\n </template>\n 刷新\n </a-button>\n </template>\n </a-tabs>\n <template v-if=\"isShowStyleConfig && !isPivotTable\">\n <div\n v-if=\"type === 'table' && activeKey === '1'\"\n id=\"table-wrap\"\n class=\"chart-component\"\n ref=\"tableWrapRef\"\n style=\"width: 100%; height: 290px\"\n ></div>\n <table-graph v-show=\"activeKey === '1'\" class=\"chart-component\" v-else-if=\"type === 'card'\" v-bind=\"component\"></table-graph>\n <chart-graph\n v-else\n v-show=\"activeKey === '1'\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, unref, inject, watch, provide, onMounted } from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane, Button as AButton } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ControlGroup from './control-group'\nimport VariableGroup from './variable-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport TableGraph from '@/indicator/table-graph/TableGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport { ReloadOutlined } from '@ant-design/icons-vue'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA,\n RENDER_USED_COMPONENTS,\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n PAGE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n IS_PIVOT_TABLE,\n IS_IFRAME_MODE\n} from '@/utils/constant'\nimport { handleVariableList } from '@/utils/util'\nimport { hasOwn, lowerCaseIncludes } from '@ecan-bi/tools'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane,\n ControlGroup,\n VariableGroup,\n AButton,\n ReloadOutlined,\n TableGraph\n },\n setup (_props, { expose }) {\n const dataConfigPaneRef = ref()\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const pivotTableWrapRef = 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 renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const pageConfig = inject(PAGE_CONFIG) as any\n const isPivotTable = inject(IS_PIVOT_TABLE) as any\n const isIframeMode = inject(IS_IFRAME_MODE) as any\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar', 'circulate']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n modifyWhite(cloneComponent)\n const pickComponent = pick(\n cloneComponent,\n without(Object.keys(cloneComponent), 'position', 'top', 'left', 'width', 'height')\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.componentList = renderUsedComponents\n // 后台开启预览模式\n config.preview = true\n // 页面配置\n config.pageConfig = pageConfig\n\n if (lowerCaseIncludes(cloneComponent.type, 'pivottable')) {\n if (unref(dataConfigPaneRef)) {\n pickComponent.height = unref(dataConfigPaneRef).$el.clientHeight - 20 + 'px'\n pickComponent.width = unref(dataConfigPaneRef).$el.clientWidth + 'px'\n }\n pickComponent.fullMode = true\n config.preview = false\n delete config.pageMode\n }\n\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false,\n // 保存原有的left和top\n sourceLeft: cloneComponent.left,\n sourceTop: cloneComponent.top\n }\n })\n\n const tableProps = computed(() => {\n const { token, context } = unref(selectedComponent)\n const width = (unref(pivotTableWrapRef)?.clientWidth || 0) + 'px'\n const height = (unref(pivotTableWrapRef)?.clientHeight || 0) + 'px'\n return {\n id: unref(selectedComponent).componentId,\n name: unref(selectedComponent).name,\n keyName: unref(selectedComponent).keyName,\n type: 'pivotTable',\n width,\n height,\n graphicConfig: unref(selectedComponent).graphicConfig,\n dimensionList: unref(selectedComponent).dimensionList || [],\n fullMode: true,\n globalModel: new Map(),\n indicatorUrl: '/api',\n indicatorToken: token,\n context\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 const isGroupTable = computed(() => !!unref(component)?.isGroupTable)\n\n const onChange = (val: string) => {\n const bool = val === '1'\n if (bool && type.value === 'table') {\n refreshData()\n }\n if ((window as any).changeShowTable) {\n (window as any).changeShowTable(bool)\n }\n if (val === '3') {\n // 获取指标中的其他数据\n getOtherData()\n }\n }\n\n const conditionOptions = ref<any>([])\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 function getOtherData () {\n const { leftAxisList = [], rightAxisList = [], queryColumnList = [], indicators = [], dataSourceId = '' } = unref(graphicConfig)\n const otherList = [...leftAxisList, ...rightAxisList, ...queryColumnList, ...indicators]\n const idMap: any = {}\n for (const item of otherList) {\n const { id = '', indexCode = '' } = item\n if (id && !hasOwn(item, 'calcType') && !idMap[id]) {\n idMap[id] = indexCode\n }\n }\n if (Object.keys(idMap)?.length) {\n const promistList = []\n for (const id in idMap) {\n promistList.push(\n new Promise((resolve, reject) => {\n request\n .post(\n `${INDICATOR_URL}/diagram/hrpIndexWithComplex`,\n {\n pageId: PAGE_ID,\n indexGuid: id,\n indexCode: idMap[id],\n dataSourceId\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n .then((res: any) => {\n const { success, data = [] } = res.data\n if (success && data?.dataViewColumns?.length) {\n resolve(data.dataViewColumns)\n } else {\n reject(data)\n }\n })\n .catch((e) => {\n reject(e)\n })\n })\n )\n }\n Promise.all(promistList).then((res) => {\n if (res?.length) {\n // 取交集\n const resultList = res.reduce((a: any, b: any) =>\n a.filter((c: any) => b.find((v: any) => v.typeGuid === c.typeGuid))\n )\n setConditionOptions(resultList.filter((v: any) => v.typeGuid))\n }\n })\n } else {\n setConditionOptions([])\n }\n }\n\n function setConditionOptions (intersection: any) {\n const {\n classificationList = [],\n seriesList = [],\n leftAxisList = [],\n rightAxisList = [],\n indicators = [],\n rowHeaderList = [],\n queryColumnList = []\n } = unref(graphicConfig)\n const otherOptions = cloneDeep([\n ...classificationList,\n ...seriesList,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators,\n ...rowHeaderList,\n ...queryColumnList\n ])\n if (otherOptions?.length) {\n for (const item of otherOptions) {\n item.id = item.name\n }\n }\n\n const options = [\n {\n label: '日期(内置)', // 设值对应 conditionLabel\n name: '日期(内置)', // 设值对应 conditionName\n id: 'the_date', // 设值对应 conditionKey (conditionValue 在关联控件中取)\n genericType: 'DATE', // 设值对应 conditionValueType\n typeGuid: 'the_date',\n indexCode: null\n },\n {\n label: '单位编号(内置)',\n name: '单位编号(内置)',\n id: 'hbdwbh',\n genericType: 'TEXT',\n typeGuid: 'hbdwbh',\n indexCode: null\n },\n {\n label: '单位名称(内置)',\n name: '单位名称(内置)',\n id: 'hbdwbh_name',\n genericType: 'TEXT',\n typeGuid: 'hbdwbh_name',\n indexCode: null\n },\n {\n label: '年(内置)',\n name: '年(内置)',\n id: 'the_year',\n genericType: 'TEXT',\n typeGuid: 'the_year',\n indexCode: null\n },\n {\n label: '月(内置)',\n name: '月(内置)',\n id: 'the_month',\n genericType: 'TEXT',\n typeGuid: 'the_month',\n indexCode: null\n },\n {\n label: '日(内置)',\n name: '日(内置)',\n id: 'the_day',\n genericType: 'TEXT',\n typeGuid: 'the_day',\n indexCode: null\n },\n ...intersection.map((v: any) => {\n return {\n ...v,\n id: v.name,\n label: v.title || v.label\n }\n }),\n ...otherOptions\n ]\n\n // 下拉框组件增加“上级编码”用于级联操作\n if (unref(selectedComponent)?.type === 'ecanSelect') {\n const { selectFieldOptions = [] } = unref(graphicConfig)\n options.unshift({\n label: '上级编码',\n name: '上级编码',\n id: 'parentCode',\n genericType: 'TEXT'\n })\n if (selectFieldOptions?.length) {\n for (const item of selectFieldOptions) {\n options.unshift({\n label: item.label,\n name: item.value,\n id: item.value,\n genericType: 'TEXT'\n })\n }\n }\n }\n\n // 去重\n const optionsMap = new Map()\n const optionsLen = options.length\n for (let i = 0; i < optionsLen; i++) {\n const option = options[i]\n const { id } = option || {}\n optionsMap.set(id, option)\n }\n const optionsMapArr = [...optionsMap]\n conditionOptions.value = optionsMapArr.map(([_id, option]) => option)\n }\n\n const refreshData = () => {\n let refreshData: any\n if (isShowStyleConfig && type.value === 'table') {\n refreshData = (window as any).updateConfig\n } else {\n refreshData = unref(componentRef)?.refreshData\n }\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const refreshAction = () => {\n // 刷新全局变量的最新配置\n updateGraphicConfig({\n variableConditions: handleVariableList(unref(graphicConfig)?.variableList || [], renderUsedComponents)\n })\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\n onMounted(() => {\n if (isPivotTable.value) {\n refreshData()\n }\n })\n\n const getSaveData = () => unref(componentRef).getSaveData()\n\n // 透视表操作变化\n const onPivotTableChange = ({ type, data }) => {\n if (type === '10') {\n const { dimensions, indicators } = cloneDeep(data)\n const dimensionList = []\n if (dimensions) {\n for (const item of dimensions) {\n if (item.showTitle) {\n item.label = item.showTitle\n }\n dimensionList.push({\n key: item.name,\n label: item.showTitle,\n width: null,\n position: item.positionType || 'rows'\n })\n }\n for (const item of indicators) {\n if (item.showTitle) {\n item.label = item.showTitle\n }\n }\n }\n updateGraphicConfig({\n dimensionList,\n queryColumnList: dimensions,\n indicators: indicators\n })\n component.value.dimensionList = dimensionList\n }\n }\n\n expose({\n getSaveData\n })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n pivotTableWrapRef,\n type,\n isGroupTable,\n isPivotTable,\n isIframeMode,\n component,\n fullWidth,\n renderUsedComponents,\n conditionOptions,\n tableProps,\n dataConfigPaneRef,\n refreshData,\n refreshAction,\n onChange,\n onPivotTableChange\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 display: flex;\n flex-flow: column;\n\n :deep(.ant-tabs) {\n // height: calc(100% - 310px);\n flex: 1;\n\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 &.pivot-table-wrap {\n :deep(.ant-tabs) {\n .ant-tabs-content-holder {\n overflow: hidden;\n .ant-tabs-content {\n height: 100%;\n }\n }\n }\n }\n\n .ecan-pivot-table {\n width: 100%;\n height: 100%;\n position: relative;\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\" :class=\"isPivotTable ? 'pivot-table-wrap' : ''\">\n <a-tabs v-model:activeKey=\"activeKey\" @change=\"onChange\">\n <a-tab-pane key=\"1\" tab=\"数据配置\" ref=\"dataConfigPaneRef\">\n <template v-if=\"isPivotTable && isIframeMode\">\n <div class=\"ecan-pivot-table\" ref=\"pivotTableWrapRef\">\n <pivot-table\n ref=\"componentRef\"\n v-bind=\"tableProps\"\n />\n </div>\n </template>\n <template v-else>\n <data-group ref=\"dataGroupRef\" v-if=\"!isPivotTable\" />\n <component\n v-if=\"!isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n @tableChange=\"onPivotTableChange\"\n />\n </template>\n </a-tab-pane>\n <a-tab-pane v-if=\"isShowStyleConfig\" key=\"2\" tab=\"样式配置\" force-render>\n <style-group :componentType=\"type\" :isGroupTable=\"isGroupTable\"></style-group>\n </a-tab-pane>\n <a-tab-pane v-if=\"(!isIframeMode || isPivotTable) && renderUsedComponents\" key=\"3\" tab=\"全局过滤\" force-render>\n <control-group ref=\"controlGroup\" :conditionOptions=\"conditionOptions\" />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"!isIframeMode\"\n key=\"4\"\n tab=\"全局变量\"\n force-render\n >\n <variable-group />\n </a-tab-pane>\n <template #rightExtra>\n <a-button @click=\"refreshAction\">\n <template #icon>\n <reload-outlined />\n </template>\n 刷新\n </a-button>\n </template>\n </a-tabs>\n <template v-if=\"isShowStyleConfig && !isPivotTable\">\n <div\n v-if=\"type === 'table' && activeKey === '1'\"\n id=\"table-wrap\"\n class=\"chart-component\"\n ref=\"tableWrapRef\"\n style=\"width: 100%; height: 290px\"\n ></div>\n <table-graph v-show=\"activeKey === '1'\" class=\"chart-component\" v-else-if=\"type === 'card'\" v-bind=\"component\"></table-graph>\n <chart-graph\n v-else\n v-show=\"activeKey === '1'\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, unref, inject, watch, provide, onMounted } from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane, Button as AButton } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ControlGroup from './control-group'\nimport VariableGroup from './variable-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport TableGraph from '@/indicator/table-graph/TableGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport { ReloadOutlined } from '@ant-design/icons-vue'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA,\n RENDER_USED_COMPONENTS,\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n PAGE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n IS_PIVOT_TABLE,\n IS_IFRAME_MODE\n} from '@/utils/constant'\nimport { handleVariableList } from '@/utils/util'\nimport { hasOwn, lowerCaseIncludes } from '@ecan-bi/tools'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane,\n ControlGroup,\n VariableGroup,\n AButton,\n ReloadOutlined,\n TableGraph\n },\n setup (_props, { expose }) {\n const dataConfigPaneRef = ref()\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const pivotTableWrapRef = 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 renderUsedComponents = inject(RENDER_USED_COMPONENTS) as any\n const pageConfig = inject(PAGE_CONFIG) as any\n const isPivotTable = inject(IS_PIVOT_TABLE) as any\n const isIframeMode = inject(IS_IFRAME_MODE) as any\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar', 'circulate']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n modifyWhite(cloneComponent)\n const pickComponent = pick(\n cloneComponent,\n without(Object.keys(cloneComponent), 'position', 'top', 'left', 'width', 'height')\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.componentList = renderUsedComponents\n // 后台开启预览模式\n config.preview = true\n // 页面配置\n config.pageConfig = pageConfig\n\n if (lowerCaseIncludes(cloneComponent.type, 'pivottable')) {\n if (unref(dataConfigPaneRef)) {\n pickComponent.height = unref(dataConfigPaneRef).$el.clientHeight - 20 + 'px'\n pickComponent.width = unref(dataConfigPaneRef).$el.clientWidth + 'px'\n }\n pickComponent.fullMode = true\n config.preview = false\n delete config.pageMode\n }\n\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false,\n // 保存原有的left和top\n sourceLeft: cloneComponent.left,\n sourceTop: cloneComponent.top\n }\n })\n\n const tableProps = computed(() => {\n const { token, context } = unref(selectedComponent)\n const width = (unref(pivotTableWrapRef)?.clientWidth || 0) + 'px'\n const height = (unref(pivotTableWrapRef)?.clientHeight || 0) + 'px'\n return {\n id: unref(selectedComponent).componentId,\n name: unref(selectedComponent).name,\n keyName: unref(selectedComponent).keyName,\n type: 'pivotTable',\n width,\n height,\n graphicConfig: unref(selectedComponent).graphicConfig,\n dimensionList: unref(selectedComponent).dimensionList || [],\n fullMode: true,\n globalModel: new Map(),\n indicatorUrl: '/api',\n indicatorToken: token,\n context\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 const isGroupTable = computed(() => !!unref(component)?.isGroupTable)\n\n const onChange = (val: string) => {\n const bool = val === '1'\n if (bool && type.value === 'table') {\n refreshData()\n }\n if ((window as any).changeShowTable) {\n (window as any).changeShowTable(bool)\n }\n if (val === '3') {\n // 获取指标中的其他数据\n getOtherData()\n }\n }\n\n const conditionOptions = ref<any>([])\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 function getOtherData () {\n const { leftAxisList = [], rightAxisList = [], queryColumnList = [], indicators = [], dataSourceId = '' } = unref(graphicConfig)\n const otherList = [...leftAxisList, ...rightAxisList, ...queryColumnList, ...indicators]\n const idMap: any = {}\n for (const item of otherList) {\n const { id = '', indexCode = '' } = item\n if (id && !hasOwn(item, 'calcType') && !idMap[id]) {\n idMap[id] = indexCode\n }\n }\n if (Object.keys(idMap)?.length) {\n const promistList = []\n for (const id in idMap) {\n promistList.push(\n new Promise((resolve, reject) => {\n request\n .post(\n `${INDICATOR_URL}/diagram/hrpIndexWithComplex`,\n {\n pageId: PAGE_ID,\n indexGuid: id,\n indexCode: idMap[id],\n dataSourceId\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n .then((res: any) => {\n const { success, data = [] } = res.data\n if (success && data?.dataViewColumns?.length) {\n resolve(data.dataViewColumns)\n } else {\n reject(data)\n }\n })\n .catch((e) => {\n reject(e)\n })\n })\n )\n }\n Promise.all(promistList).then((res) => {\n if (res?.length) {\n // 取交集\n const resultList = res.reduce((a: any, b: any) =>\n a.filter((c: any) => b.find((v: any) => v.typeGuid === c.typeGuid))\n )\n setConditionOptions(resultList.filter((v: any) => v.typeGuid))\n }\n })\n } else {\n setConditionOptions([])\n }\n }\n\n function setConditionOptions (intersection: any) {\n const {\n classificationList = [],\n seriesList = [],\n leftAxisList = [],\n rightAxisList = [],\n indicators = [],\n rowHeaderList = [],\n queryColumnList = []\n } = unref(graphicConfig)\n const otherOptions = cloneDeep([\n ...classificationList,\n ...seriesList,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators,\n ...rowHeaderList,\n ...queryColumnList\n ])\n if (otherOptions?.length) {\n for (const item of otherOptions) {\n item.id = item.name\n }\n }\n\n const options = [\n {\n label: '日期(内置)', // 设值对应 conditionLabel\n name: '日期(内置)', // 设值对应 conditionName\n id: 'the_date', // 设值对应 conditionKey (conditionValue 在关联控件中取)\n genericType: 'DATE', // 设值对应 conditionValueType\n typeGuid: 'the_date',\n indexCode: null\n },\n {\n label: '单位编号(内置)',\n name: '单位编号(内置)',\n id: 'hbdwbh',\n genericType: 'TEXT',\n typeGuid: 'hbdwbh',\n indexCode: null\n },\n {\n label: '单位名称(内置)',\n name: '单位名称(内置)',\n id: 'hbdwbh_name',\n genericType: 'TEXT',\n typeGuid: 'hbdwbh_name',\n indexCode: null\n },\n {\n label: '年(内置)',\n name: '年(内置)',\n id: 'the_year',\n genericType: 'TEXT',\n typeGuid: 'the_year',\n indexCode: null\n },\n {\n label: '月(内置)',\n name: '月(内置)',\n id: 'the_month',\n genericType: 'TEXT',\n typeGuid: 'the_month',\n indexCode: null\n },\n {\n label: '日(内置)',\n name: '日(内置)',\n id: 'the_day',\n genericType: 'TEXT',\n typeGuid: 'the_day',\n indexCode: null\n },\n ...intersection.map((v: any) => {\n return {\n ...v,\n id: v.name,\n label: v.title || v.label\n }\n }),\n ...otherOptions\n ]\n\n // 下拉框组件增加“上级编码”用于级联操作\n if (unref(selectedComponent)?.type === 'ecanSelect') {\n const { selectFieldOptions = [] } = unref(graphicConfig)\n options.unshift({\n label: '上级编码',\n name: '上级编码',\n id: 'parentCode',\n genericType: 'TEXT'\n })\n if (selectFieldOptions?.length) {\n for (const item of selectFieldOptions) {\n options.unshift({\n label: item.label,\n name: item.value,\n id: item.value,\n genericType: 'TEXT'\n })\n }\n }\n }\n\n // 去重\n const optionsMap = new Map()\n const optionsLen = options.length\n for (let i = 0; i < optionsLen; i++) {\n const option = options[i]\n const { id } = option || {}\n optionsMap.set(id, option)\n }\n const optionsMapArr = [...optionsMap]\n conditionOptions.value = optionsMapArr.map(([_id, option]) => option)\n }\n\n const refreshData = () => {\n let refreshData: any\n if (isShowStyleConfig && type.value === 'table') {\n refreshData = (window as any).updateConfig\n } else {\n refreshData = unref(componentRef)?.refreshData\n }\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const refreshAction = () => {\n // 刷新全局变量的最新配置\n updateGraphicConfig({\n variableConditions: handleVariableList(unref(graphicConfig)?.variableList || [], renderUsedComponents)\n })\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\n onMounted(() => {\n if (isPivotTable.value) {\n refreshData()\n }\n })\n\n const getSaveData = () => unref(componentRef).getSaveData()\n\n // 透视表操作变化\n const onPivotTableChange = ({ type, data }) => {\n if (type === '10') {\n const { dimensions, indicators } = cloneDeep(data)\n const dimensionList = []\n if (dimensions) {\n for (const item of dimensions) {\n if (item.showTitle) {\n item.label = item.showTitle\n }\n dimensionList.push({\n key: item.name,\n label: item.showTitle,\n width: null,\n position: item.positionType || 'rows'\n })\n }\n for (const item of indicators) {\n if (item.showTitle) {\n item.label = item.showTitle\n }\n }\n }\n updateGraphicConfig({\n dimensionList,\n queryColumnList: dimensions,\n indicators: indicators\n })\n component.value.dimensionList = dimensionList\n }\n }\n\n expose({\n getSaveData\n })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n pivotTableWrapRef,\n type,\n isGroupTable,\n isPivotTable,\n isIframeMode,\n component,\n fullWidth,\n renderUsedComponents,\n conditionOptions,\n tableProps,\n dataConfigPaneRef,\n refreshData,\n refreshAction,\n onChange,\n onPivotTableChange\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 display: flex;\n flex-flow: column;\n\n :deep(.ant-tabs) {\n // height: calc(100% - 310px);\n flex: 1;\n\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 &.pivot-table-wrap {\n :deep(.ant-tabs) {\n .ant-tabs-content-holder {\n overflow: hidden;\n .ant-tabs-content {\n height: 100%;\n }\n }\n }\n }\n\n .ecan-pivot-table {\n width: 100%;\n height: 100%;\n position: relative;\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\" v-if=\"!isPivotTable\">\n <data-list />\n </div>\n <div class=\"config-modal-right\" :class=\"isPivotTable ? 'full' : ''\">\n <data-config ref=\"dataConfigRef\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide, nextTick, PropType } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n TABLE_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n UPDATE_TABLE_OPTIONS,\n SELECTED_COMPONENT,\n REQUEST,\n RENDER_USED_COMPONENTS,\n UPDATE_USED_COMPONENT,\n UPDATE_COMPONENTS_CONFIG,\n MAP_ATTRIBUTE_PROPS,\n PAGE_CONFIG,\n IS_PIVOT_TABLE,\n IS_IFRAME_MODE\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport tableProps from './data-config/style-config-group/table-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 renderUsedComponentList: {\n // 当前画布上渲染的组件\n type: Array as PropType<any[]>,\n default: () => []\n },\n mapAttributeProps: {\n type: Object,\n default: () => ({\n startTime: {\n label: '开始时间值',\n component: 'time-pick'\n },\n endTime: {\n label: '结束时间值',\n component: 'time-pick'\n }\n })\n },\n pageConfig: {\n type: Object,\n default: () => {}\n },\n isIframeMode: {\n type: Boolean,\n default: false\n }\n },\n setup (props, { expose, emit }) {\n const dataConfigRef = ref()\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 usedComponentList = computed(() => props.renderUsedComponentList)\n const tableColumns = computed(\n () => unref(component)?.tableColumns || []\n )\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n const isPivotTable = computed(() => unref(component)?.type?.includes('PivotTable'))\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 let tableOptions = unref(component).tableOptions\n ? cloneDeep(unref(component).tableOptions)\n : ref(cloneDeep(tableProps))\n tableOptions = ref(tableOptions)\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 updateTableOptions = (options: { [key: string]: any }) => {\n tableOptions.value = {\n ...unref(tableOptions),\n ...unref(options)\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 || propsMap.line)\n }\n nextTick(() => {\n isUpdate.value = false\n })\n }\n const getIndicatorData = () => {\n return {\n graphicConfig: unref(graphicConfig),\n chartsOptions: unref(chartsOptions),\n tableOptions: unref(tableOptions),\n tableColumns: unref(tableColumns),\n columnsConfigMap: unref(component).columnsConfigMap\n }\n }\n const getPivotGraphicData = () => {\n const pivotTableData = unref(dataConfigRef).getSaveData()\n return {\n ...pivotTableData,\n graphicConfig: unref(graphicConfig)\n }\n }\n (window as any).getIndicatorData = getIndicatorData;\n (window as any).getPivotGraphicData = getPivotGraphicData\n if (props.request) {\n provide(REQUEST, props.request)\n }\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n\n const updateUsedComponent = (data: any) => {\n emit('updateUsedComponent', data)\n }\n const updateComponentsConfig = (ids: string[], controlList: any[]) => {\n emit('updateComponentsConfig', ids, { controlList })\n }\n provide(IS_PIVOT_TABLE, isPivotTable)\n provide(IS_IFRAME_MODE, props.isIframeMode)\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(TABLE_OPTIONS, tableOptions)\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 provide(UPDATE_TABLE_OPTIONS, updateTableOptions)\n provide(RENDER_USED_COMPONENTS, usedComponentList)\n provide(UPDATE_USED_COMPONENT, updateUsedComponent)\n provide(UPDATE_COMPONENTS_CONFIG, updateComponentsConfig)\n provide(MAP_ATTRIBUTE_PROPS, props.mapAttributeProps)\n provide(PAGE_CONFIG, props.pageConfig)\n expose({\n graphicConfig,\n chartsOptions,\n updateIndicatorData\n })\n return {\n isUpdate,\n isPivotTable,\n dataConfigRef\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 width: calc(100% - 310px);\n &.full {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"config-modal\" v-if=\"!isUpdate\">\n <div class=\"config-modal-left\" v-if=\"!isPivotTable\">\n <data-list />\n </div>\n <div class=\"config-modal-right\" :class=\"isPivotTable ? 'full' : ''\">\n <data-config ref=\"dataConfigRef\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide, nextTick, PropType } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n TABLE_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n UPDATE_TABLE_OPTIONS,\n SELECTED_COMPONENT,\n REQUEST,\n RENDER_USED_COMPONENTS,\n UPDATE_USED_COMPONENT,\n UPDATE_COMPONENTS_CONFIG,\n MAP_ATTRIBUTE_PROPS,\n PAGE_CONFIG,\n IS_PIVOT_TABLE,\n IS_IFRAME_MODE\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport tableProps from './data-config/style-config-group/table-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 renderUsedComponentList: {\n // 当前画布上渲染的组件\n type: Array as PropType<any[]>,\n default: () => []\n },\n mapAttributeProps: {\n type: Object,\n default: () => ({\n startTime: {\n label: '开始时间值',\n component: 'time-pick'\n },\n endTime: {\n label: '结束时间值',\n component: 'time-pick'\n }\n })\n },\n pageConfig: {\n type: Object,\n default: () => {}\n },\n isIframeMode: {\n type: Boolean,\n default: false\n }\n },\n setup (props, { expose, emit }) {\n const dataConfigRef = ref()\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 usedComponentList = computed(() => props.renderUsedComponentList)\n const tableColumns = computed(\n () => unref(component)?.tableColumns || []\n )\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n const isPivotTable = computed(() => unref(component)?.type?.includes('PivotTable'))\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 let tableOptions = unref(component).tableOptions\n ? cloneDeep(unref(component).tableOptions)\n : ref(cloneDeep(tableProps))\n tableOptions = ref(tableOptions)\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 updateTableOptions = (options: { [key: string]: any }) => {\n tableOptions.value = {\n ...unref(tableOptions),\n ...unref(options)\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 || propsMap.line)\n }\n nextTick(() => {\n isUpdate.value = false\n })\n }\n const getIndicatorData = () => {\n return {\n graphicConfig: unref(graphicConfig),\n chartsOptions: unref(chartsOptions),\n tableOptions: unref(tableOptions),\n tableColumns: unref(tableColumns),\n columnsConfigMap: unref(component).columnsConfigMap\n }\n }\n const getPivotGraphicData = () => {\n const pivotTableData = unref(dataConfigRef).getSaveData()\n return {\n ...pivotTableData,\n graphicConfig: unref(graphicConfig)\n }\n }\n (window as any).getIndicatorData = getIndicatorData;\n (window as any).getPivotGraphicData = getPivotGraphicData\n if (props.request) {\n provide(REQUEST, props.request)\n }\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n\n const updateUsedComponent = (data: any) => {\n emit('updateUsedComponent', data)\n }\n const updateComponentsConfig = (ids: string[], controlList: any[]) => {\n emit('updateComponentsConfig', ids, { controlList })\n }\n provide(IS_PIVOT_TABLE, isPivotTable)\n provide(IS_IFRAME_MODE, props.isIframeMode)\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(TABLE_OPTIONS, tableOptions)\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 provide(UPDATE_TABLE_OPTIONS, updateTableOptions)\n provide(RENDER_USED_COMPONENTS, usedComponentList)\n provide(UPDATE_USED_COMPONENT, updateUsedComponent)\n provide(UPDATE_COMPONENTS_CONFIG, updateComponentsConfig)\n provide(MAP_ATTRIBUTE_PROPS, props.mapAttributeProps)\n provide(PAGE_CONFIG, props.pageConfig)\n expose({\n graphicConfig,\n chartsOptions,\n updateIndicatorData\n })\n return {\n isUpdate,\n isPivotTable,\n dataConfigRef\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 width: calc(100% - 310px);\n &.full {\n width: 100%;\n }\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","comp","app","REQUEST","INDICATOR_URL","_a","INDICATOR_TOKEN","DATA_LIST","SELECTED_COMPONENT","GRAPHIC_CONFIG","UPDATE_GRAPHIC_CONFIG","SHOW_STYLE_CONFIG","REFRESH_DATA","CHARTS_OPTIONS","TABLE_OPTIONS","ZOOM_FONT_SIZE","UPDATE_CHARTS_OPTIONS","UPDATE_TABLE_OPTIONS","SOURCE_TYPE","CHANGE_CONDITION","DATA_VIEW_COLUMNS","RENDER_USED_COMPONENTS","UPDATE_USED_COMPONENT","UPDATE_COMPONENTS_CONFIG","MAP_ATTRIBUTE_PROPS","PAGE_CONFIG","IS_PIVOT_TABLE","IS_IFRAME_MODE","barProps","lineProps","pieProps","customGraphProps","comboGraphProps","propsMap","tableProps","_sfc_main$I","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","key","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","CodeOutlined","CodeOutlinedSvg","CodeOutlined$1","CopyOutlined","CopyOutlinedSvg","CopyOutlined$1","DeleteOutlined","DeleteOutlinedSvg","DeleteOutlined$1","DoubleRightOutlined","DoubleRightOutlinedSvg","DoubleRightOutlined$1","DownOutlined","DownOutlinedSvg","DownOutlined$1","InfoCircleOutlined","InfoCircleOutlinedSvg","InfoCircleOutlined$1","LoadingOutlined","LoadingOutlinedSvg","LoadingOutlined$1","MenuOutlined","MenuOutlinedSvg","MenuOutlined$1","MinusCircleOutlined","MinusCircleOutlinedSvg","MinusCircleOutlined$1","PlusCircleOutlined","PlusCircleOutlinedSvg","PlusCircleOutlined$1","PlusOutlined","PlusOutlinedSvg","PlusOutlined$1","QuestionCircleOutlined","QuestionCircleOutlinedSvg","QuestionCircleOutlined$1","ReloadOutlined","ReloadOutlinedSvg","ReloadOutlined$1","SettingOutlined","SettingOutlinedSvg","SettingOutlined$1","u","y","e","m","x","w","S","A","_","j","O","C","$","oe","L","T","N","k","D","M","E","I","V","F","z","R","P","U","Y","G","W","ne","H","Q","B","K","X","Z","ee","te","re","ie","ae","le","se","ce","ue","de","fe","pe","he","ye","me","be","ge","ve","xe","we","Ae","je","Oe","Ce","Le","Te","Ne","$e","ke","De","Me","Ee","Ie","Ve","Fe","Qe","Je","Xe","Ze","tt","nt","ot","lt","st","ct","ut","Ot","Et","It","Vt","Ft","zt","Rt","Ut","Pt","Gt","Yt","Wt","Ht","Bt","Kt","Zt","pn","hn","yn","mn","gn","Mn","En","In","Vn","Fn","zn","Rn","Un","Pn","getConditions","conditions","result","getSqlConditions","renderUsedComponents","controlList","cloneDeep","classificationList","rowHeaderList","dimensionList","seriesList","leftAxisList","rightAxisList","queryColumnList","indicators","handleControlList","sqlConditions","otherList","conditionList","ol","getComponent","params","cItem","control","keyName","prop","dateFormat","dataType","customValue","sqlCondition","getConditionItem","setFieldValue","handleVariableList","variableList","handleVarList","variableItem","conditionLabel","conditionKey","conditionValueType","rule","notGlobal","indexCode","indexCodeNum","typeGuid","alias","excludeAttr","attr","operateValue","operateMode","operateType","component","operate","type","useCurrentTime","customFormat","lowerCaseIncludes","dateValue","dayjs","mode","opType","opValue","interval","intervalUnit","startTime","endTime","propValue","knList","_time","step","getFormatStep","variables","getEventName","componentList","dateList","formatStep","handleFormat","retentiondigit","str","formatQfw","str1","str2","mapScope","scope","mapDataSetScope","getLoadType","getUseType","getSourceType","dataTo","_sfc_main$H","ATooltip","emit","expose","setItemDisabled","_value","sourceList","columnRef","pagination","isLoading","indexName","searchLoading","watch","removeScroll","scrollRequest","requestData","dataSourceId","total","onToggleGroup","children","dataSource","onToggleSource","loopRequest","handleSearch","name","onUnmounted","_hoisted_4","_hoisted_10","_hoisted_11","_normalizeClass","_Fragment","_renderList","_createBlock","_component_loading_outlined","_component_caret_down_outlined","_createCommentVNode","_hoisted_5","_component_ind_source_list","_hoisted_6","_component_a_tooltip","_hoisted_7","_hoisted_8","_hoisted_9","_component_caret_right_outlined","dataViewColumn","_hoisted_12","_hoisted_13","_sfc_main$G","IndSourceList","AInputSearch","APagination","selectedComponent","selectedConfig","dataSourceList","dataSourceLoading","indSourceRef","searchText","handleDataSourceList","onSearch","onChange","debounce","onPaginationChange","page","pageSize","dimensions","types","dataViewColumns","lostDim","provide","dataSetParams","_component_a_input_search","_component_a_pagination","_sfc_main$F","DataSourceList","DataViewList","_component_data_view_list","_component_data_source_list","focus$1","el","_sfc_main$E","AModal","AButton","ASelect","ASelectOption","customSortList","activeKey","combSortList","getSortOptions","handleCustomSortList","updateCustomSortList","label","isDataChange","visible","showModal","sort","hideModal","onCancel","customOrderColumns","columnName","option","_component_a_modal","_component_a_tabs","_component_a_tab_pane","_component_a_button","_component_a_select","_component_a_select_option","_component_delete_outlined","_sfc_main$D","focus","AInput","ACheckbox","ACollapse","ACollapsePanel","ATag","ACheckableTag","title","createGroupTitle","createValueTitle","customGroupList","customGroupTitleSet","customGroupTitleList","customGroupEditTitleList","length","selectCount","count","customGroup","onAddGroup","onAddValue","isAllow","group","onDeleteGroup","selectGroupIndex","onMoveInGroup","selectList","onEditTitle","onFinishEditTitle","onTitleChange","useOtherGroup","updateCustomGroup","customGroups","otherGroupName","groupInfoMap","onUseOtherGroup","allLabelSet","handleInitData","handleCustomGroupList","_resolveDirective","_component_a_input","_component_a_collapse","_component_a_collapse_panel","_withDirectives","_component_a_tag","_component_a_checkable_tag","nanoid","size","bytes","byte","module","this","quarterOfYear","_sfc_main$C","ADatePicker","ADropdown","AMenu","AMenuItem","ASubMenu","APopover","ATabs","ATabPane","ARadioGroup","ARadio","AInputNumber","renderComponents","isUseCurrentTime","currentTime","keyNameOptions","showTime","dateRadioStyle","formatList","customTabData","tabDateList","compareList","menuRule","dataTypeList","condition","_c","getDefaultFieldValue","_f","_g","_h","_j","_k","_l","_m","_o","fieldType","fieldValue","dataSetfieldOptions","popoverVisible","isDateType","fieldOptions","dims","updateCondition","deleteCondition","addCondition","_condition","_index","_path","_join","onDelete","onFieldChange","edvDataSetId","onChangeComponent","ruleOptions","dateBtnLabel","downIconStyle","style","valueOptions","handleValueOptions","onRuleChange","onDataTypeChange","fieldValues","onFieldValueSelectChange","values","handleMenuClick","keyPath","dateCalcTypes","calcWay","vals","tabItem","setTabItemData","fieldName","changeTabInitDate","changeRadioValue","beforeNum","afterNum","getDateValue","getFieldValue","tabIndex","blurCompare","flag","okDatePickConfig","okCustomConfig","radioValue","calcWays","filterOption","input","isShowCustomDataType","_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_checkbox","_component_a_radio_group","_component_a_radio","_component_a_input_number","_hoisted_14","_hoisted_15","_component_a_menu_item","_component_close_outlined","_sfc_main$B","Condition","_component_condition_list","_component_condition","_sfc_main$A","truncationList","_withScopeId","_pushScopeId","_popScopeId","_sfc_main$z","ConditionList","TruncationList","handleTitle","updateUsedComponent","addKeyValue","join","path","pathArr","lastIndex","lastPath","wrapperPath","wrapperConditions","wrapperJoin","temp","cdJoin","onUpdatetruncation","renderControlList","updateFilter","oldConditions","pendingDelete","pendingAdd","setEvent","deletes","adds","events","onOk","getHrpIndexWithComplex","indtData","indexGuid","_component_truncation_list","_sfc_main$y","showLabel","_sfc_main$x","usedComponentList","usedComponent","oldData","sortCpnts","idFilterOption","inputValue","_sfc_main$w","dimByCount","getParentKey","tree","parentKey","_sfc_main$v","ARow","ACol","ATextarea","ATree","ARadioButton","indexLibColumns","fieldList","field","varList","myValue","searchFuncValue","insertText","tmpStr","sel","startPos","endPos","cursorPos","calculMethods","selectedElem","inputVal","dataList","expandedKeys","autoExpandParent","funcDescsData","getFuncDescs","onExpand","keys","expanded","self","_hoisted_16","_component_a_row","_component_a_col","_component_a_radio_button","variabled","_component_a_textarea","_component_a_tree","leaf","describe","exp","_createSlots","_hoisted_18","_sfc_main$u","FormulaCalculation","AForm","AFormItem","builtInValueSourceList","allValueSourceList","labelCol","wrapperCol","formDefaultValue","defaultConfig","offsetConfig","formRef","formState","calcType","formula","builtInValueSource","builtInFormula","builtInCalcWay","saveIndicator","offset","validateLabel","_rule","formRules","onOK","onChangeBuiltInFormula","accessLogic","principle","comefrom","_component_a_form","_component_a_form_item","_component_formula_calculation","_component_question_circle_outlined","_sfc_main$t","CalculationModal","FilterModal","CustomGroupModal","CustomSortModal","ACard","AMenuDivider","ConfigName","SortByCpnt","DimByCount","indSortList","idxList","dimList","indexSetList","currentCardItem","compositeIndicator","isAllowAdd","dataSelectIndicators","handleListItemData","listData","reNameSame","varConfig","variates","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","oldLabel","aboutFormulaIds","aboutSourceIds","targetList","DEFAULT","sortList","codeDim","cloneDim","onSort","order","defaultCode","handleSortTitle","text","currentItem","currentIndex","customSortModalRef","customGroupModalRef","showCustomSortModal","handleCustomSortTitle","showCustomGroupModal","handleCustomGroupTitle","aggregateList","distinctList","onAggregateChange","onDistinctChange","onDateFormatChange","onIndSortChange","handleAggregateTitle","handleIndSortTitle","map","handleDistinctTitle","handleFilterTitle","filterModalRef","configNameRef","sortByCpntRef","dimByCountRef","showFilterModal","showConfigNameModal","showSortByCpntModal","showDimByCountModal","calculationModalRef","calculationModalMode","onShowCalculationModal","fieldData","getEdvFieldData","currentEdvId","columnList","getFieldData","formFields","dimensionType","dataViewMap","onVisibleChange","itemName","hasOwn","onClickSetting","copyDataViewName","isShowConfigName","isShowSortByCpnt","isIndexSet","isShowCalcBtn","_hoisted_17","_hoisted_19","_hoisted_20","_hoisted_22","_directive_focus","_component_a_card","_component_plus_outlined","_withModifiers","_component_a_menu_divider","aggregate","distinct","_component_copy_outlined","_hoisted_23","_component_setting_outlined","_component_custom_sort_modal","_component_custom_group_modal","_component_filter_modal","_component_config_name","_component_sort_by_cpnt","_component_dim_by_count","_component_calculation_modal","cardTypeMap","_sfc_main$s","DataConfigCard","allMap","selectedComponentType","isGroupTable","cardsMap","cards","handleGraphicConfigMap","graphicConfigMap","startStr","startIndex","componentMapKeys","componentMapKey","card","_component_data_config_card","_mergeProps","propsGroups","fontFamilyArr","fontFamilyOptions","font","fontFamily","mapAttributeProps","isKeyName","textShadow","width","updateMode","onlyType","suffix","disabled","height","backgroundImage","backgroundSize","backgroundColor","contextRequestUrl","theme","pageFontFamily","placeholder","imgUrl","show","linkUrl","linkMethod","linkPage","fontSize","variableFontSize","percentageSide","optionType","left","top","textAlign","verticalAlign","justifyContent","alignItems","tabFontWeight","isTransformNumber","headerFontWeight","fontWeight","fontStyle","centerLeft","centerTop","lineHeight","innerRadius","outerRadius","titleText","titleSubtext","tooltipTrigger","tooltipTextStyleColor","tooltipFormatter","legendTextStyleColor","legendTop","legendLeft","legendOrient","labelFormatter","labelColor","isUseLabelColors","labelFontSize","labelPosition","labelLineLength","labelLineLength2","symbolSize","symbolColor","symbolWidth","symbolHeight","smooth","lineStyleWidth","picker","xAxisSplitLineShow","xAxisSplitAreaShow","xAxisLineShow","isBoundaryGap","xAxisSplitLineInterval","xAxisSplitLineStyleColor","xAxisLabelColor","xAxisLineStyleColor","xAxisTickShow","yAxisTickShow","xAxisLabelFormatter","yAxisSplitLineShow","yAxisLeftSplitLineShow","yAxisRightSplitLineShow","yAxisSplitLineType","yAxisLeftSplitLineType","yAxisRightSplitLineType","xAxisSplitLineType","yAxisSplitAreaShow","yAxisLabelShow","yAxisLineAlwaysDisplay","yAxisSplitLineStyleColor","yAxisLabelColor","yAxisLineStyleColor","yAxisLabelFormatter","roseType","fullModal","seqIconConfig","layout","defaultValue","typeValue","bordered","allOverflow","hoverRow","hoverColor","boderList","columnDropEnable","showTotalBool","totalName","expandAll","isUseSeq","centered","columnsFixedNum","scrollX","variableColor","tabColor","activeTabColor","tabBackgroundImage","activeTabBackgroundImage","tabBarGutter","tabFontSize","simple","pageSizeShow","sliceCount","useRanking","headerBackgroundColor","cellBackgroundColor","borderColor","useBorderModify","useTitle","paginationPosition","paginationPageSize","destroyOnClose","yAxis","seriesTypes","useLabelIndex","limitStartTime","limitEndTime","strokeColor","trailColor","strokeType","strokeLinecap","strokeWidth","strokeTextWidth","geoBackgroundImage","geoItemStyleAreaColor","geoItemStyleBorderColor","geoEmphasisLabelColor","geoEmphasisItemStyleAreaColor","geoEmphasisItemStyleBorderColor","symbolImage","mapJson","barWidth","columnCount","itemHeight","itemColSpan","itemPadding","itemRowSpan","geoLabelColor","geoLabelFontSize","geoItemStyleShadowColor","geoItemStyleBorderWidth","geoItemStyleShadowBlur","geoItemStyleShadowOffsetX","geoItemStyleShadowOffsetY","geoZoom","geoRoam","geoCenter","geoBackgroundImageRepeat","titleColor","titleFontSize","headerFontSize","geoEmphasisDisabled","gridTop","gridBottom","gridLeft","gridRight","gridContainLabel","geoLabelShow","toolboxOrient","toolboxItemSize","toolboxItemGap","toolboxLeft","toolboxTop","toolboxDownloadUrl","toolboxInfoText","shape","danger","href","transParams","indexTip","borderWidth","borderRadius","isUseAction","actionColumnWidth","actionList","barBorderRadius","isUseHorizontalAxis","axisInverse","xAxisInverse","yAxisInverse","decimalFormat","variableDefaultValue","strokeTextShow","areaStyleOpacity","areaGradientShow","areaGradientColor","tabHorizontalPadding","xAxisLabelWidth","xAxisLabelOverflow","xAxisLabelRotate","yAxisLabelWidth","yAxisLabelOverflow","yAxisLabelRotate","isStack","effectVal","updateOptions","stackColumns","effect","hide","clickHighlight","labelShow","isReverse","link","linkType","maxTagCount","tabAlignItems","tabJustifyContent","tabFlexDirection","filterDropdownHeight","stripedShow","prefixValueKey","prefix","suffixValueKey","updateInterval","xAxisMinInterval","yAxisMinInterval","minAngle","autoSwitch","autoSwitchInterval","xAxisLabelInterval","isUseExport","autoClearSearchValue","toolboxLocation","toolboxDownloadShow","toolboxDataZoomShow","toolboxInfoShow","multiple","treeCheckable","selectFirstOption","gradientColor","gradientOffset","legendItemGap","legendItemWidth","legendItemHeight","showBarBackground","gradientColors","increaseColor","declineColor","legendType","minusSignShow","gradientAngle","stripedColor","axisNameColor","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","borderStyle","unitText","unitFontSize","unitFontWeight","unitColor","unitTop","unitLeft","legendFormatter","titleMode","legendFontSize","valueType","xAxisLabelFontSize","yAxisLabelFontSize","tooltipRequestData","tooltipBackgroundColor","seqWidth","isAllowClear","isSummaryFixed","labelWidth","labelOverflow","isPageBottom","optionFontSize","isShowTotal","graphicType","graphic","isAllowSpanYear","tabType","targetRule","targetValue","notExpectColor","buttonBackgroundColor","tabWidth","headerFontColor","cellFontColor","isTransparent","hideTableHeader","closeBtnColor","paginationColor","paginationBgColor","activePaginationColor","activePaginationBgColor","hoverBackgroundColor","tooltipPosition","tabTextAlign","seqName","seqIcon","isShowCloseBtn","markLineType","seqFontSize","isAutoScroll","scrollSpeed","isHoverStyle","isAnimation","animationSource","subTotalColumn","dynamics","subTotalName","isSortByFront","legendWidth","legendHeight","legendTextWidth","legendScroll","boxShadow","limitInterval","xAxisName","yAxisName","yAxisLeftName","yAxisRightName","seqIconWidth","seqIconHeight","seqIconOffsetX","seqIconOffsetY","seqIndexFormatter","unitInterval","keyFieldMap","itemWidth","startValue","endValue","colNum","digits","unitWidth","unitHeight","counterBackgroundImage","showEllipsis","exceedConfig","xAxisMaxValue","yAxisMaxValue","scrollDirection","hideTabs","jumpType","jumpTime","jumpPage","jumpLink","gridTopPx","gridBottomPx","gridLeftPx","gridRightPx","showAnimation","tooltip","showXAxisLineArrow","showYAxisLineArrow","xAxisLineInverse","yAxisLineInverse","xAxisMarkLineValue","yAxisMarkLineValue","axisMarkArea","_sfc_main$r","_sfc_main$q","getPrefixOrSuffixValue","prefixValue","suffixValue","_sfc_main","_sfc_main$o","ASwitch","_component_a_switch","bottom","right","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","state","attributes","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","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","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","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","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","J","Se","Pe","ze","_sfc_main$m","PickColors","colorValue","_component_pick_colors","_sfc_main$l","onColorsChange","_sfc_main$k","InputNumber","firstItem","_component_appstore_add_outlined","_resolveDynamicComponent","_component_minus_circle_outlined","_sfc_main$j","_sfc_main$i","ASlider","_component_a_slider","_sfc_main$h","Input","RadioGroup","Select","Switch","ColorPick","ColorGroupPick","FormGroup","Textarea","Slider","chartsOptions","updateChartsOptions","updateTableOptions","setFormProps","setOptions","mapAttributeProp","valueProp","changeValueEventName","updateValue","effectProps","getFunProps","formProps","attrs","reduce","excludeType","nProps","status","calcSingleItemRes","otherProps","$props","$setup","$data","$options","formProp","_sfc_main$g","workerId","JsonWorker","TsWorker","EditorWorker","dom","editor","themeMap","monacoEditor","code","_sfc_main$f","clickConditionMenu","_sfc_main$e","_sfc_main$d","getSameLevelList","handleOk","onUploadChange","imgSrc","imgBaseUrl","iconOptions","_sfc_main$c","ATable","ConditionWrap","conditionsRef","currentData","configColumns","rules","curTableCompColumn","handleConditions","open","tableCompColumn","oldRules","conditionCode","newRules","close","addRule","closeRuleModal","openRuleModal","record","deleteRule","_component_a_table","_component_condition_wrap","_sfc_main$b","Editor","ConditionsTable","tableColumns","configData","saveObj","saveKey","optionCode","editorTitle","editorVisible","handleTableData","tableColumn","changeRenderBool","renderSave","onEditorChange","conditionsTableRef","_component_code_outlined","_component_editor","_component_conditions_table","_sfc_main$a","activePanel","columnsConfigMap","newColumnsConfig","_sfc_main$9","PropsToForm","TableColumnConfig","IndicatorContainer","compProps","tablePanel","tableOptions","refreshData","handleChangeType","groupTableProps","detailPropsGroups","propsGroup","enableProps","pickProps","filterEnableProps","filterProps","pick","isRenderForm","detailPropsGroup","componentType","onSwitchClick","checked","onSwitchChange","ComponentString","updateComponentOptions","tableEditorChange","isShowOptionEditor","_component_props_to_form","_component_indicator_container","_sfc_main$8","isPivotTable","onUpdateControl","onDeleteControl","onAddMenuControl","_data","parentOption","propOptions","propItem","deleteEvent","onIdChange","setEvents","focusId","onIdFocus","onPropChange","onParentPropChange","onCustomValueChange","onModeChange","onConditionKeyChange","controlParams","ruleOption","dataTypeOption","isShowModelProp","modelPropKey","isShowProp","isShowFormat","_sfc_main$7","ControlCard","_component_control_card","_component_control_list","_sfc_main$6","ControlList","isVisible","selectedIds","updateComponentsConfig","bindComponentId","updateConfig","config","onAddControl","indicatorComponents","handleConfirmSync","error","_sfc_main$5","typeOption","rangeTypeOptions","variableData","curComponent","isDateRangeComponent","isShowDateOperate","formatOptions","onChangeDataType","onChangeVariableType","_sfc_main$4","VariableItem","_component_variable_item","useIndicatorData","handleQueryColumn","queryColumn","location","handleParams","isSameLevel","cs","handleIndicator","indicator","conditionData","plugin","layer","chartType","idxLibMode","preview","classification","series","rowHeaders","queryColumns","indicatorList","leftAxis","rightAxis","_sfc_main$3","chartGraphicOptions","chartGraphicConfig","observer","echartRef","chartWrapRef","myChart","loading","chartData","myOption","chartOption","chartsOptionsValue","generalTools.transformProps","handleIndicatorDataset","keyTypeDataFieldNames","useDataFieldNames","dataFieldNames","generalTools.useTransformChartDataByAttrKey","handleIndicatorPieDataset","generalTools.useTransformChartDataByAttrValue","handleIndicatorData","indicatorData","fieldNames","emptyOption","setChartOption","handleResize","evalCopy","echarts","onBeforeUnmount","_sfc_main$2","tableData","_sfc_main$1","DataGroup","StyleGroup","ChartGraph","ControlGroup","VariableGroup","TableGraph","_props","dataConfigPaneRef","componentRef","pivotTableWrapRef","isShowStyleConfig","pageConfig","isIframeMode","notGraphicList","cloneComponent","modifyWhite","pickComponent","without","token","fullWidth","bool","getOtherData","conditionOptions","idMap","promistList","reject","resultList","setConditionOptions","intersection","otherOptions","selectFieldOptions","optionsMap","optionsLen","optionsMapArr","_id","refreshAction","getSaveData","onPivotTableChange","_component_reload_outlined","_component_pivot_table","_component_data_group","_component_style_group","_component_control_group","_component_table_graph","_component_chart_graph","DataList","DataConfig","dataConfigRef","isUpdate","sourceType","isMerge","getDataList","updateIndicatorData","getIndicatorData","getPivotGraphicData","ids","_component_data_config","EcanIndicatorLibrary","IndicatorLibrary","EcanChartGraph","install","components"],"mappings":"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YACEkjB,OAAO;AAAA,YACPljB,OAAO;AAAA,WACR;AAAA,QAEL;AAAA,MACF,GACA;AAAA,QACEkjB,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNsqB,cAAc;AAAA,QACd16B,OAAO;AAAA,UACLxC,SAAS,CACP;AAAA,YACE0a,OAAO;AAAA,YACPljB,OAAO;AAAA,UACT,GACA;AAAA,YACEkjB,OAAO;AAAA,YACPljB,OAAO;AAAA,UACT,GACA;AAAA,YACEkjB,OAAO;AAAA,YACPljB,OAAO;AAAA,WACR;AAAA,QAEL;AAAA,MACF,GACA;AAAA,QACEkjB,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNsqB,cAAc;AAAA,MAChB,GACA;AAAA,QACExiB,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNpQ,OAAO;AAAA,UACLm1B,QAAQ;AAAA,UACRt8B,KAAK;AAAA,QACP;AAAA,MACF,GACA;AAAA,QACEqf,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNsqB,cAAc;AAAA,MAChB,GACA;AAAA,QACExiB,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNsqB,cAAc;AAAA,QACd16B,OAAO;AAAA,UACLxC,SAAS,CACP;AAAA,YACE0a,OAAO;AAAA,YACPljB,OAAO;AAAA,UACT,GACA;AAAA,YACEkjB,OAAO;AAAA,YACPljB,OAAO;AAAA,UACT,GACA;AAAA,YACEkjB,OAAO;AAAA,YACPljB,OAAO;AAAA,WACR;AAAA,QAEL;AAAA,MACF,GACA;AAAA,QACEkjB,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNsqB,cAAc;AAAA,MAChB,GACA;AAAA,QACExiB,OAAO;AAAA,QACPljB,OAAO;AAAA,QACPob,MAAM;AAAA,QACNsqB,cAAc;AAAA,QACd16B,OAAO;AAAA,UACLxC,SAAS,CACP;AAAA,YACE0a,OAAO;AAAA,YACPljB,OAAO;AAAA,UACT,GACA;AAAA,YACEkjB,OAA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","x_google_ignoreList":[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,44,45,46,47,48,49,50,51,52,53,54,55,56,57,70,71,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,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|