├── .eslintrc.cjs
├── .gitignore
├── .images
├── b1.png
├── b2.png
├── b3.png
├── b4.png
├── b5.png
├── b6.png
├── logo.png
├── p1.png
├── p2.png
├── p3.png
└── p4.png
├── .prettierrc.json
├── .vscode
└── extensions.json
├── FEATURE.md
├── LICENSE
├── README.en.md
├── README.md
├── build
└── build.js
├── env.d.ts
├── index.html
├── lib
├── index.umd.js
└── style.css
├── package-lock.json
├── package.json
├── preview.html
├── public
└── favicon.ico
├── src
├── App.vue
├── api
│ ├── api.ts
│ ├── fetch-api.ts
│ ├── file.ts
│ └── request.ts
├── assets
│ ├── color
│ │ ├── 冷色.png
│ │ ├── 商务.png
│ │ ├── 复古.png
│ │ ├── 怀旧.png
│ │ ├── 新特性.png
│ │ ├── 明亮.png
│ │ ├── 暖色.png
│ │ ├── 柔和.png
│ │ ├── 淡雅.png
│ │ ├── 清新.png
│ │ ├── 渐变.png
│ │ ├── 炫彩.png
│ │ ├── 科技.png
│ │ ├── 简洁.png
│ │ ├── 经典.png
│ │ ├── 自定义.png
│ │ ├── 艳丽.png
│ │ └── 雅致.png
│ ├── icon
│ │ ├── if.svg
│ │ └── start.svg
│ ├── images
│ │ ├── designer
│ │ │ └── layout-config
│ │ │ │ ├── 12-12.png
│ │ │ │ ├── 18-6.png
│ │ │ │ ├── 24.png
│ │ │ │ ├── 4-4-4-4-4-4.png
│ │ │ │ ├── 6-12-6.png
│ │ │ │ ├── 6-18.png
│ │ │ │ ├── 6-6-6-6.png
│ │ │ │ └── 8-8-8.png
│ │ ├── pic.png
│ │ └── placeholder.png
│ └── logo.png
├── components
│ ├── common-attribute-config
│ │ ├── color-config.vue
│ │ ├── column-config.vue
│ │ ├── divider-style.vue
│ │ ├── grid-offset-charts.vue
│ │ ├── icon-select.vue
│ │ ├── image-select.vue
│ │ ├── input-icon.vue
│ │ ├── label-display.vue
│ │ ├── radio-button.vue
│ │ ├── regression-charts.vue
│ │ ├── select-color-charts.vue
│ │ ├── switch-value-config.vue
│ │ ├── textarea-input.vue
│ │ ├── value-input.vue
│ │ ├── value-select.vue
│ │ ├── value-validate.vue
│ │ ├── xaxis-config.vue
│ │ └── yaxis-config.vue
│ ├── common-data-config
│ │ ├── cascade-option-config.vue
│ │ ├── chart-config.vue
│ │ ├── data-bind.vue
│ │ ├── map-config.vue
│ │ ├── multi-columns-config.vue
│ │ └── options-config.vue
│ ├── data-value-select
│ │ └── index.vue
│ ├── design-pc
│ │ ├── configs
│ │ │ ├── charts
│ │ │ │ ├── bar-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── custom-table
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ ├── colunm-select.vue
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── funnel-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── gantt-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── histogram-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── line-area-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── line-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── list
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── pie-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── pivot-table
│ │ │ │ │ ├── components
│ │ │ │ │ │ └── PivotTable.vue
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ ├── colunm-select.vue
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── progress
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── radar-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── ring-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── rose-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── scatter-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── table
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ ├── colunm-children-select.vue
│ │ │ │ │ │ ├── colunm-select.vue
│ │ │ │ │ │ ├── index.vue
│ │ │ │ │ │ ├── table-column-children-config-basic.vue
│ │ │ │ │ │ ├── table-column-children-config.vue
│ │ │ │ │ │ ├── table-column-config-basic.vue
│ │ │ │ │ │ ├── table-column-config-more.vue
│ │ │ │ │ │ ├── table-column-config.vue
│ │ │ │ │ │ ├── table-column-sub-children-config-basic.vue
│ │ │ │ │ │ ├── table-column-sub-children-config.vue
│ │ │ │ │ │ ├── table-operate-config-advanced.vue
│ │ │ │ │ │ ├── table-operate-config-basic.vue
│ │ │ │ │ │ └── table-operate-config.vue
│ │ │ │ │ ├── custom-cell
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── custom-columns
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── default-data.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ └── waterfall-chart
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ ├── index.ts
│ │ │ ├── inputs
│ │ │ │ ├── calendar
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── cascade
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── checkbox
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── date-picker
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── date-range
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── file-upload
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── file
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── image-upload
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── input
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── multi-input
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── radio
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── rich-text
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── select
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── slider
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── stepper
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── switch
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── table-select
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── time-picker
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ ├── tree-select
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ └── tree
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ ├── layouts
│ │ │ │ ├── layout
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ │ ├── grid-layout.vue
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ │ └── tabs
│ │ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── options-config.ts
│ │ │ │ │ └── template.vue
│ │ │ └── others
│ │ │ │ ├── button
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── collapse
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── data-model
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── divider
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── dropdown-menu
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── dynamic-tabs
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── extend-field
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── icon
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── iframe
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── image
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── page-header
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── qrcode
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── render
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── steps
│ │ │ │ ├── config-attribute
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── steps-config.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── sub-table
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ ├── colunm-select.vue
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── table-column-config-basic.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ ├── text
│ │ │ │ ├── config-attribute
│ │ │ │ │ └── index.vue
│ │ │ │ ├── config-data
│ │ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ │ │ └── workflow
│ │ │ │ ├── config-data
│ │ │ │ └── index.vue
│ │ │ │ ├── index.ts
│ │ │ │ ├── options-config.ts
│ │ │ │ └── template.vue
│ │ ├── dynamic-component.vue
│ │ └── index.vue
│ ├── param-value-select
│ │ └── index.vue
│ └── tools
│ │ ├── code-editor
│ │ └── index.vue
│ │ └── color-picker
│ │ └── index.vue
├── hooks
│ ├── design-component
│ │ └── use-index.ts
│ └── design-page-operate
│ │ ├── use-clear.ts
│ │ ├── use-delete.ts
│ │ ├── use-reload.ts
│ │ └── use-save.ts
├── index.ts
├── layouts
│ ├── designer-aside-left
│ │ ├── basic-component.vue
│ │ ├── index.vue
│ │ └── menu.vue
│ ├── designer-aside-right
│ │ ├── config-basics
│ │ │ ├── config-bg-style.vue
│ │ │ ├── config-common-style.vue
│ │ │ ├── config-component.vue
│ │ │ ├── config-event.vue
│ │ │ ├── config-general.vue
│ │ │ ├── config-page-param.vue
│ │ │ ├── config-page-style.vue
│ │ │ ├── config-text-style.vue
│ │ │ └── index.vue
│ │ ├── config-datas
│ │ │ ├── config-component.vue
│ │ │ ├── config-interface.vue
│ │ │ ├── index.vue
│ │ │ └── modal
│ │ │ │ └── add-mock.vue
│ │ ├── config-events
│ │ │ ├── events-left
│ │ │ │ ├── config-event
│ │ │ │ │ ├── event-confirm.vue
│ │ │ │ │ ├── event-disable.vue
│ │ │ │ │ ├── event-display.vue
│ │ │ │ │ ├── event-hlink.vue
│ │ │ │ │ ├── event-import.vue
│ │ │ │ │ ├── event-interface.vue
│ │ │ │ │ ├── event-javascript.vue
│ │ │ │ │ ├── event-link.vue
│ │ │ │ │ ├── event-logic.vue
│ │ │ │ │ ├── event-message.vue
│ │ │ │ │ ├── event-print.vue
│ │ │ │ │ ├── event-refresh.vue
│ │ │ │ │ ├── event-set-value.vue
│ │ │ │ │ ├── event-table-export.vue
│ │ │ │ │ ├── event-timeout.vue
│ │ │ │ │ ├── event-value-select
│ │ │ │ │ │ └── index.vue
│ │ │ │ │ ├── index.vue
│ │ │ │ │ └── interface-select
│ │ │ │ │ │ └── index.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── menu.ts
│ │ │ │ └── menu.vue
│ │ │ ├── events-right
│ │ │ │ ├── eventFlow.js
│ │ │ │ └── index.vue
│ │ │ ├── hooks
│ │ │ │ └── use-drag-node.ts
│ │ │ └── index.vue
│ │ ├── config-status
│ │ │ ├── hooks
│ │ │ │ └── use-drag-node.ts
│ │ │ ├── index.vue
│ │ │ ├── status-left
│ │ │ │ ├── config-status
│ │ │ │ │ ├── index.vue
│ │ │ │ │ ├── status-if.vue
│ │ │ │ │ ├── status-operate-color.vue
│ │ │ │ │ ├── status-operate-operate.vue
│ │ │ │ │ ├── status-operate-set.vue
│ │ │ │ │ ├── status-tag-color.vue
│ │ │ │ │ └── status-value-select
│ │ │ │ │ │ └── index.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── menu.ts
│ │ │ │ └── menu.vue
│ │ │ └── status-right
│ │ │ │ ├── index.vue
│ │ │ │ └── statusFlow.js
│ │ ├── index.vue
│ │ └── page-tree.vue
│ ├── designer-content
│ │ └── index.vue
│ ├── designer-header
│ │ ├── html.js
│ │ └── index.vue
│ └── modal
│ │ ├── data-model-dialog.vue
│ │ ├── icon-select-dialog.vue
│ │ └── image-upload-dialog.vue
├── main.ts
├── router
│ └── index.ts
├── shims-vue.d.ts
├── stores
│ └── index.ts
├── styles
│ ├── antd-ui-cover.less
│ ├── defaultTheme.json
│ ├── global.scss
│ ├── index.less
│ └── reset.less
├── utils
│ ├── charts-utils
│ │ ├── axis-formatter.ts
│ │ ├── charts-legend.ts
│ │ └── charts-theme.ts
│ ├── clean-config-json.ts
│ ├── common-style.ts
│ ├── component-copy-config.ts
│ ├── component-deep-clone-config.ts
│ ├── component-value.ts
│ ├── constants.ts
│ ├── deep-clone.ts
│ ├── load-css.ts
│ ├── mitt.ts
│ ├── multi-output-component.ts
│ ├── param-value.ts
│ ├── pub-use.ts
│ ├── storage-util.ts
│ ├── string-utils.ts
│ ├── text-formatter.ts
│ ├── transform-data-list.ts
│ ├── type.ts
│ └── uuid.ts
└── views
│ ├── Designer.vue
│ └── sdkEntry
│ └── SdkPage.vue
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /* eslint-env node */
2 | require('@rushstack/eslint-patch/modern-module-resolution')
3 |
4 | module.exports = {
5 | root: true,
6 | 'extends': [
7 | 'plugin:vue/vue3-essential',
8 | 'eslint:recommended',
9 | '@vue/eslint-config-typescript',
10 | '@vue/eslint-config-prettier/skip-formatting'
11 | ],
12 | parserOptions: {
13 | ecmaVersion: 'latest'
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .vscode/*
22 | !.vscode/extensions.json
23 | .idea
24 | *.suo
25 | *.ntvs*
26 | *.njsproj
27 | *.sln
28 | *.sw?
29 |
--------------------------------------------------------------------------------
/.images/b1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/b1.png
--------------------------------------------------------------------------------
/.images/b2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/b2.png
--------------------------------------------------------------------------------
/.images/b3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/b3.png
--------------------------------------------------------------------------------
/.images/b4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/b4.png
--------------------------------------------------------------------------------
/.images/b5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/b5.png
--------------------------------------------------------------------------------
/.images/b6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/b6.png
--------------------------------------------------------------------------------
/.images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/logo.png
--------------------------------------------------------------------------------
/.images/p1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/p1.png
--------------------------------------------------------------------------------
/.images/p2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/p2.png
--------------------------------------------------------------------------------
/.images/p3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/p3.png
--------------------------------------------------------------------------------
/.images/p4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/.images/p4.png
--------------------------------------------------------------------------------
/.prettierrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/prettierrc",
3 | "semi": false,
4 | "tabWidth": 2,
5 | "singleQuote": true,
6 | "printWidth": 200,
7 | "trailingComma": "none"
8 | }
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/FEATURE.md:
--------------------------------------------------------------------------------
1 | # Feature 2.0
2 |
3 |
4 | # 功能实现
5 |
6 | - [x] 2、**数据管理优化做出以下改动**(更高的定制、拓展)*已完成*
7 | 1、借鉴Vue hooks的思想,通过 import useData 的写法使用数据引擎(作为Vue插件)
8 | 2、每个组件都有独立的数据配置
9 | 3、接口具有生命周期,具有知道接口请求结束的能力
10 |
11 | # 与平台1.0对比
12 |
13 | - [x] 1、**架构重新整理,代码结构清晰明了,添加了更多注释**,让新人可以快速上手
14 | - [x] 2、**更好的状态管理**,1.0版本对数据状态没有做好管理,导致代码混乱,2.0版本升级代码体验!
15 |
16 | # 进行中
17 |
18 | 1、布局组件优化 *进行中*
19 | 2、数据管理优化 *进行中*
20 | 3、事件功能优化 *进行中*
21 |
22 | # 规划中
23 |
24 | 1、渲染器预览功能(实现方式选择)[open/api]*已完成* 1.0 > 2.0
25 | 2、Table组件部分功能迁移2.0 *进行中*
26 | 3、对接1.0接口(数据模块接口对接)[data/api]*已完成*
27 |
28 | 5、事件接口调用使用数据引擎(待研究)
29 | 6、事件实现技术选型(待研究)
30 | 7、默认值 < 组件设置 < 当前操作值
31 | 8、组件拖拽优化,在设计器中拖拽时原位置保留占位 *未开始*
32 |
33 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 NebulaTech
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.en.md:
--------------------------------------------------------------------------------
1 | # Nebulalowcode
2 |
3 | #### Description
4 | {**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
5 |
6 | #### Software Architecture
7 | Software architecture description
8 |
9 | #### Installation
10 |
11 | 1. xxxx
12 | 2. xxxx
13 | 3. xxxx
14 |
15 | #### Instructions
16 |
17 | 1. xxxx
18 | 2. xxxx
19 | 3. xxxx
20 |
21 | #### Contribution
22 |
23 | 1. Fork the repository
24 | 2. Create Feat_xxx branch
25 | 3. Commit your code
26 | 4. Create Pull Request
27 |
28 |
29 | #### Gitee Feature
30 |
31 | 1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
32 | 2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
33 | 3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
34 | 4. The most valuable open source project [GVP](https://gitee.com/gvp)
35 | 5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
36 | 6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
37 |
--------------------------------------------------------------------------------
/env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | 星云座
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/preview.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 预览
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
38 |
39 |
46 |
47 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/public/favicon.ico
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
18 |
--------------------------------------------------------------------------------
/src/api/file.ts:
--------------------------------------------------------------------------------
1 | import request from '@/api/request'
2 |
3 | /**
4 | * 常用图片列表V2
5 | */
6 | export function imageList(params: any) {
7 | return request({
8 | url: '/file/v2/list',
9 | method: 'get',
10 | params
11 | })
12 | }
13 | /**
14 | * 删除图片
15 | */
16 | export function deleteUploadImage(params: any) {
17 | return request({
18 | url: '/file/v1/delete',
19 | method: 'DELETE',
20 | params
21 | })
22 | }
23 |
--------------------------------------------------------------------------------
/src/assets/color/冷色.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/冷色.png
--------------------------------------------------------------------------------
/src/assets/color/商务.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/商务.png
--------------------------------------------------------------------------------
/src/assets/color/复古.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/复古.png
--------------------------------------------------------------------------------
/src/assets/color/怀旧.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/怀旧.png
--------------------------------------------------------------------------------
/src/assets/color/新特性.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/新特性.png
--------------------------------------------------------------------------------
/src/assets/color/明亮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/明亮.png
--------------------------------------------------------------------------------
/src/assets/color/暖色.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/暖色.png
--------------------------------------------------------------------------------
/src/assets/color/柔和.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/柔和.png
--------------------------------------------------------------------------------
/src/assets/color/淡雅.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/淡雅.png
--------------------------------------------------------------------------------
/src/assets/color/清新.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/清新.png
--------------------------------------------------------------------------------
/src/assets/color/渐变.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/渐变.png
--------------------------------------------------------------------------------
/src/assets/color/炫彩.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/炫彩.png
--------------------------------------------------------------------------------
/src/assets/color/科技.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/科技.png
--------------------------------------------------------------------------------
/src/assets/color/简洁.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/简洁.png
--------------------------------------------------------------------------------
/src/assets/color/经典.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/经典.png
--------------------------------------------------------------------------------
/src/assets/color/自定义.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/自定义.png
--------------------------------------------------------------------------------
/src/assets/color/艳丽.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/艳丽.png
--------------------------------------------------------------------------------
/src/assets/color/雅致.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/color/雅致.png
--------------------------------------------------------------------------------
/src/assets/icon/if.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/icon/start.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/12-12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/12-12.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/18-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/18-6.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/24.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/4-4-4-4-4-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/4-4-4-4-4-4.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/6-12-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/6-12-6.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/6-18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/6-18.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/6-6-6-6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/6-6-6-6.png
--------------------------------------------------------------------------------
/src/assets/images/designer/layout-config/8-8-8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/designer/layout-config/8-8-8.png
--------------------------------------------------------------------------------
/src/assets/images/pic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/pic.png
--------------------------------------------------------------------------------
/src/assets/images/placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/images/placeholder.png
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/assets/logo.png
--------------------------------------------------------------------------------
/src/components/common-attribute-config/color-config.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
19 |
20 |
21 |
54 |
64 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/column-config.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
{{ buttonText ?? '添加列' }}
19 |
20 |
21 |
49 |
56 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/divider-style.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{ item.label }}
8 |
9 |
10 |
11 |
12 |
13 |
14 |
35 |
41 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/grid-offset-charts.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 | px
14 |
15 |
16 | px
17 |
18 |
19 |
27 |
28 |
29 |
30 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/icon-select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
26 |
27 |
37 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/image-select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
![]()
4 |
5 |
6 |
7 |
8 |
9 |
29 |
30 |
50 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/input-icon.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
38 |
39 |
56 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/label-display.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
14 |
19 |
20 |
21 |
22 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/radio-button.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ item.label }}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/src/components/common-attribute-config/value-select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ item.label }}
5 |
6 |
7 |
8 |
9 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/bar-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/bar-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-bar',
6 | name: '条形图',
7 | icon: 'icontiaoxingtu1',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/custom-table/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-custom-table',
6 | name: '自定义表格',
7 | icon: 'iconliebiao1',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | isNestedComponent: true, // 是否为容器组件
11 | isBeta:true,
12 | component: layoutTemplate,
13 | options: optionsConfig
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/custom-table/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | interfaceDataConfig: {
4 | versions: '1.0.0',
5 | id: '',
6 | uuid: '',
7 | key: '',
8 | tableData: [],
9 | pagination: {
10 | pageIndex: 1,
11 | pageSize: 10
12 | }
13 | },
14 | commonConfig: {
15 | topPaddingDistance: 0,
16 | bottomPaddingDistance: 0,
17 | leftPaddingDistance: 0,
18 | rightPaddingDistance: 0,
19 | topSpaceDistance: 0,
20 | bottomSpaceDistance: 0,
21 | leftSpaceDistance: 0,
22 | rightSpaceDistance: 0
23 | },
24 | commonConfigAssignSign: '',
25 | columnsData: [], // 表格渲染需要的配置
26 | pagination: {
27 | current: 1,
28 | pageSize: 5,
29 | total: 0,
30 | showSizeChanger: true,
31 | pageSizeOptions: ['5', '10', '20', '50', '100']
32 | }, // 是否进行分页
33 | addRowSwitch:false,// 添加行开关
34 | echoRowConfig:{},
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/funnel-chart/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/funnel-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/funnel-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-funnel',
6 | name: '漏斗图',
7 | icon: 'iconfunnelChart',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/gantt-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-gantt',
6 | name: '甘特图',
7 | icon: 'icontiaoxingtu1',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/histogram-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/histogram-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-histogram',
6 | name: '柱状图',
7 | icon: 'iconzhuzhuangtu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/line-area-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/line-area-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-line-area',
6 | name: '堆叠面积图',
7 | icon: 'icontubiaozhexiantu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/line-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/line-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-line',
6 | name: '折线图',
7 | icon: 'icontubiaozhexiantu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/list/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/list/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
14 |
15 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/list/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-list',
6 | name: '列表',
7 | icon: 'iconliebiao1',
8 | isRefreshComponent: true, // 是否为可刷新组件
9 | isNestedComponent: true, // 是否为容器组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/list/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | interfaceDataConfig: {
4 | versions: '1.0.0',
5 | id: '',
6 | uuid: '',
7 | key: '',
8 | tableData: [],
9 | pagination: {
10 | pageIndex: 1,
11 | pageSize: 10
12 | }
13 | },
14 | columns: [
15 | {
16 | value: 24,
17 | componentList: []
18 | }
19 | ],
20 | commonConfig: {
21 | topPaddingDistance: 0,
22 | bottomPaddingDistance: 0,
23 | leftPaddingDistance: 0,
24 | rightPaddingDistance: 0,
25 | topSpaceDistance: 0,
26 | bottomSpaceDistance: 0,
27 | leftSpaceDistance: 0,
28 | rightSpaceDistance: 0
29 | },
30 | commonConfigAssignSign: ''
31 | }
32 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/pie-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/pie-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-pie',
6 | name: '饼图',
7 | icon: 'iconbingtu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/pivot-table/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-pivot-table',
6 | name: '数据透视表',
7 | icon: 'iconbiaoge1',
8 | isRefreshComponent: true, // 是否为可刷新组件
9 | isBeta:true,
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/progress/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-progress',
6 | name: '进度条',
7 | icon: 'iconjindutiao1',
8 | isRefreshComponent: true, // 是否为可刷新组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/progress/options-config.ts:
--------------------------------------------------------------------------------
1 | import { useThemeStore } from '@/stores'
2 | const themeStore = useThemeStore()
3 |
4 | export default {
5 | percentage: 10,
6 | strokeWidth: 10,
7 | color: themeStore.themeConfig.token.colorPrimary,
8 | themeChanged: {
9 | color: false
10 | }, //是否修改过默认样式
11 | type: 'line',
12 | maxValue: 100,
13 | rateValue: 0,
14 | numberShow: false, // 进度条数值显示
15 | contentDataSource: 'radio-button-default',
16 | interfaceDataConfig: {
17 | versions: '1.0.0',
18 | id: '',
19 | uuid: '',
20 | key: '',
21 | value: undefined,
22 | maxValue: undefined,
23 | // 数据绑定
24 | maxKey: '',
25 | rateKey: ''
26 | },
27 | // 公共属性
28 | commonConfig: {
29 | topPaddingDistance: 10,
30 | bottomPaddingDistance: 10,
31 | leftPaddingDistance: 10,
32 | rightPaddingDistance: 10
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/radar-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/radar-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-radar',
6 | name: '雷达图',
7 | icon: 'iconleidatu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/ring-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/ring-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-ring',
6 | name: '环形图',
7 | icon: 'iconhuanxingtu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/rose-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/rose-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-pie-radius',
6 | name: '玫瑰图',
7 | icon: 'iconbingtu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/scatter-chart/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/scatter-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/scatter-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-scatter',
6 | name: '散点图',
7 | icon: 'iconsandiantu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/table/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-table',
6 | name: '表格',
7 | icon: 'iconbiaoge1',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | isMultiOutputComponent: true, //是否是多输出组件
11 | component: layoutTemplate,
12 | options: optionsConfig
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/table/options-config.ts:
--------------------------------------------------------------------------------
1 | import { defaultColumnsData, defaultTableData } from './default-data'
2 |
3 | export default {
4 | value: '',
5 | defaultColumnsData: defaultColumnsData, // Mock数据项
6 | defaultTableData, // Mock数据
7 | defaultPagination: { // Mock分页
8 | current: 1,
9 | pageSize: 5,
10 | total: 10,
11 | showSizeChanger: true,
12 | pageSizeOptions: ['5', '10', '20', '50', '100']
13 | },
14 | // columnsConfigList: [],
15 | columnsData: [], // 表格渲染需要的配置
16 | pagination: {
17 | current: 1,
18 | pageSize: 5,
19 | total: 0,
20 | showSizeChanger: true,
21 | pageSizeOptions: ['5', '10', '20', '50', '100']
22 | }, // 是否进行分页
23 | interfaceDataConfig: {
24 | versions: '1.0.0',
25 | type: 'interface',
26 | id: '',
27 | uuid: '',
28 | key: '',
29 | tableData: []
30 | },
31 | rowIndexSwitch: false, // 行号开关
32 | paginationSwitch:true, // 分页开关
33 | paginationInterfaceSwitch:false,
34 | pagingTotalKey: '',
35 | pagingTotalKey_id:[],// 老版本回显用
36 | pagingTotalKeyConfig:{
37 | type: 'interface',
38 | id: '',
39 | uuid: '',
40 | key: '',
41 | },
42 | leftFixedIndex:0,//左侧固定列数
43 | echoRowConfig:{},
44 | summaryRowConfig:{},
45 | expandSwitch:false,//一维数组树形展示
46 | expandId:"",
47 | expandParentId:"",
48 | version:"2.0.0",
49 | rowSelectMethod:"multiple",// 不显示,单选多选
50 | columnSetSwitch:false,
51 | resizableSwitch:false,//
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/waterfall-chart/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/waterfall-chart/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/charts/waterfall-chart/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-chart-waterfall',
6 | name: '瀑布图',
7 | icon: 'iconchart-bar',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/calendar/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/calendar/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-pc-calendar',
6 | name: '日历',
7 | icon: 'iconriqi',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/calendar/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | event: '',
5 | fullScreen: true,
6 | interfaceDataConfig: {
7 | versions: '1.0.0',
8 | id: '',
9 | uuid: '',
10 | key: ''
11 | },
12 | //字段配置
13 | setOptions: {
14 | date: undefined,
15 | event: undefined,
16 | status: undefined,
17 | dateFormat: undefined
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/calendar/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/cascade/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-cascade',
6 | name: '级联选择',
7 | icon: 'iconjilianxuanze1',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/cascade/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // 自定义属性
3 | value: '',
4 | type: 'text',
5 | label: '标题',
6 | enLabel: '',
7 | width: 80,
8 | labelShow: true,
9 | optionsData: [],
10 | placeholder: '请选择',
11 | enPlaceHolder: '',
12 | labelAlign: 'right',
13 | size: 'default',
14 | disabled: false,
15 | clearable: false,
16 | required: false,
17 | dataFormat: '一维数组', //'一维数组', '树形数据'
18 | //层级数据
19 | setOptions: {
20 | value: '',
21 | name: '',
22 | id: '',
23 | parentId: '',
24 | childrenId: ''
25 | },
26 | // 配置
27 | contentDataSource: 'radio-button-default',
28 | interfaceDataConfig: {
29 | versions: '1.0.0',
30 | id: '',
31 | uuid: '',
32 | key: '',
33 | tableData: []
34 | },
35 | interfaceDataEchoConfig: {
36 | id: '',
37 | uuid: ''
38 | },
39 | contentDataEcho: ''
40 | }
41 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/checkbox/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/checkbox/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/checkbox/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-checkbox',
6 | name: '多选框',
7 | icon: 'iconduoxuankuang1',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig,
12 | extraData: {
13 | dicData: null as any
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/checkbox/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: [],
3 | defaultValue: [],
4 | direction: 'vertical',
5 | width: 80,
6 | label: '标题',
7 | enLabel: '',
8 | labelAlign: 'right',
9 | labelShow: true,
10 | columns: [],
11 | required: false,
12 | defaultTableData: [
13 | {
14 | label: '选项1',
15 | value: '1'
16 | },
17 | {
18 | label: '选项2',
19 | value: '2'
20 | },
21 | {
22 | label: '选项3',
23 | value: '3'
24 | }
25 | ], // 默认选项
26 | disabled: false,
27 | labelKey: '',
28 | valueKey: '',
29 | contentDataSource: 'radio-button-default',
30 | contentDataEcho: '',
31 | interfaceDataConfig: {
32 | versions: '1.0.0',
33 | uuid: '',
34 | id: '',
35 | key: ''
36 | },
37 | interfaceDataEchoConfig: {
38 | id: '',
39 | uuid: ''
40 | },
41 | dicId: ''
42 | }
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/date-picker/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/date-picker/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-calendar',
6 | name: '日期选择器',
7 | icon: 'iconriqi',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/date-picker/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: '',
3 | defaultValueType: '', //'Today' 'Monday' 'MonthStart'
4 | size: 'middle',
5 | forbidRange: '', // before、after
6 | format: 'date',
7 | disabled: false,
8 | labelShow: true,
9 | placeholder: '请选择日期',
10 | enPlaceHolder: '',
11 | width: 80,
12 | label: '标题',
13 | enLabel: '',
14 | labelAlign: 'right',
15 | clearable: true,
16 | required: false,
17 | contentDataSource: 'radio-button-default',
18 | contentDataEcho: '',
19 | interfaceDataConfig: {
20 | versions: '1.0.0',
21 | id: '',
22 | uuid: '',
23 | key: '',
24 | value: ''
25 | },
26 | interfaceDataEchoConfig: {
27 | id: '',
28 | uuid: '',
29 | key: '',
30 | value: ''
31 | },
32 | commonConfigAssignIsCol: false
33 | }
34 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/date-range/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/date-range/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-calendar-range',
6 | name: '日期范围',
7 | icon: 'iconriqi',
8 | isInputComponent: true, // 是否为输入组件
9 | isMultiOutputComponent: true, //是否是多输出组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/date-range/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: null as null | string,
3 | defaultValueType: '', //'Today' 'Monday' 'MonthStart'
4 | selectRange: '',
5 | forbidRange: '', // before、after
6 | size: 'default',
7 | format: 'date',
8 | disabled: false,
9 | labelShow: true,
10 | startPlaceholder: '开始日期',
11 | startEnPlaceHolder: '',
12 | endPlaceholder: '结束日期',
13 | endEnPlaceHolder: '',
14 | width: 80,
15 | label: '标题',
16 | enLabel: '',
17 | labelAlign: 'right',
18 | clearable: true,
19 | required: false,
20 | contentDataSource: 'radio-button-default',
21 | contentDataEcho: '',
22 | interfaceDataConfig: {
23 | versions: '1.0.0',
24 | id: '',
25 | uuid: '',
26 | key: '',
27 | value: null
28 | },
29 | interfaceDataEchoConfig: {
30 | versions: '1.0.0',
31 | id: '',
32 | uuid: '',
33 | key: '',
34 | value: null
35 | },
36 | commonConfigAssignIsCol: false
37 | }
38 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file-upload/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file-upload/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-upload-file',
6 | name: '附件上传',
7 | icon: 'iconupload',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file-upload/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | fileList: [],
3 | value: '',
4 | type: 'default',
5 | checked: 0,
6 | size: 1,
7 | isMultiple: false,
8 |
9 | icon: {
10 | name: 'cloud-upload',
11 | fontClass: 'iconfont ant-cloud-upload',
12 | unicode: 'e827'
13 | },
14 | iconColor: '#000000',
15 | iconSize: '32',
16 | text: '点击上传或拖拽文件到此区域',
17 |
18 | contentDataSource: 'radio-button-interface',
19 | contentDataEcho: '',
20 | interfaceDataConfig: {
21 | versions: '1.0.0',
22 | id: '',
23 | uuid: '',
24 | key: ''
25 | },
26 | interfaceDataEchoConfig: {
27 | versions: '1.0.0',
28 | uuid: '',
29 | id: ''
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file-upload/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{ options.text }}
6 |
7 |
8 |
9 |
10 | 点击上传
11 |
12 |
13 |
14 |
15 |
31 |
32 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-file',
6 | name: '附件查看',
7 | icon: 'iconwenjianjia',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: '',
3 | fileList: [] as any[],
4 | contentDataSource: 'radio-button-default',
5 | contentDataEcho: '',
6 | interfaceDataConfig: {
7 | versions: '1.0.0',
8 | id: '',
9 | key: ''
10 | },
11 | interfaceDataEchoConfig: {
12 | versions: '1.0.0',
13 | id: ''
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/file/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{ item.fileName }}
8 |
9 |
10 |
11 |
附件查看
12 |
13 |
14 |
15 |
47 |
48 |
57 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/image-upload/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/image-upload/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/image-upload/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-upload-img',
6 | name: '图片上传',
7 | icon: 'iconupload',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/image-upload/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | fileList: [],
3 | value: '',
4 | previewVisible: false,
5 | size: 1,
6 | checked: 0,
7 | icon: {
8 | fontClass: 'iconfont iconxiaolian',
9 | unicode: 'e699'
10 | },
11 | width: '104',
12 | height: '104',
13 | isMultiple: false,
14 | previewImage: '',
15 | imageUrl: '',
16 | showUploadList: false,
17 | contentDataSource: 'radio-button-interface',
18 | contentDataEcho: '',
19 | interfaceDataConfig: {
20 | versions: '1.0.0',
21 | id: '',
22 | uuid: '',
23 | key: ''
24 | },
25 | interfaceDataEchoConfig: {
26 | versions: '1.0.0',
27 | uuid: '',
28 | id: ''
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/image-upload/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
25 |
31 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/input/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/input/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-field',
6 | name: '输入框',
7 | icon: 'iconwenbenkuang',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/input/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | maxlength: 20,
5 | placeholder: '请输入',
6 | size: 'default',
7 | disabled: false,
8 | type: 'text',
9 | label: '标题',
10 | enLabel: '',
11 | inputType: 'text',
12 | width: 80,
13 | labelShow: true,
14 | isPassword: false,
15 | enPlaceHolder: '',
16 | clearable: false,
17 | labelAlign: 'right',
18 | customtimageIcon: {
19 | fontClass: 'iconfont ant-home',
20 | unicode: 'e801'
21 | }, //前置图标
22 | suffixIcon: {
23 | fontClass: 'iconfont ant-home',
24 | unicode: 'e801'
25 | }, //后置图标
26 | interfaceDataConfig: {
27 | versions: '1.0.0'
28 | },
29 | iconPreShow: false,
30 | iconPosShow: false,
31 | addonAfter: '', //后置标签
32 | addonBefore: '', //前置标签
33 | required: false,
34 | commonConfigAssignIsCol: false
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/multi-input/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/multi-input/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/multi-input/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-multi-input',
6 | name: '多项输入',
7 | icon: 'iconwenbenkuang',
8 | isInputComponent: true, // 是否为输入组件
9 | isNestedComponent: true, // 是否为容器组件
10 | component: layoutTemplate,
11 | options: optionsConfig,
12 | extraData: {
13 | columns: []
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/multi-input/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | size: 'default',
5 | placeholder: '请输入',
6 | enPlaceHolder: '',
7 | interfaceDataConfig: {
8 | versions: '1.0.0',
9 | uuid: '',
10 | id: '',
11 | key: ''
12 | },
13 | columns: [
14 | {
15 | componentList: []
16 | }
17 | ],
18 | commonConfigAssignSign: ''
19 | }
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/radio/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/radio/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-radio',
6 | name: '单选框',
7 | icon: 'icondanxuankuangxuanzhong',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig,
12 | extraData: {
13 | dicData: null as any
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/radio/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // 自定义属性
3 | value: '',
4 | direction: 'vertical',
5 | width: 80,
6 | label: '标题',
7 | enLabel: '',
8 | labelAlign: 'right',
9 | labelShow: true,
10 | columns: [],
11 | required: false,
12 | defaultTableData: [
13 | {
14 | label: '选项1',
15 | value: '1'
16 | },
17 | {
18 | label: '选项2',
19 | value: '2'
20 | },
21 | {
22 | label: '选项3',
23 | value: '3'
24 | }
25 | ], // 默认选项
26 | disabled: false,
27 | radioStyleType: 'round',
28 | size: 'default',
29 | labelKey: '',
30 | valueKey: '',
31 | contentDataSource: 'radio-button-default',
32 | contentDataEcho: '',
33 | interfaceDataConfig: {
34 | versions: '1.0.0',
35 | uuid: '',
36 | id: '',
37 | key: ''
38 | },
39 | interfaceDataEchoConfig: {
40 | versions: '1.0.0',
41 | uuid: '',
42 | id: ''
43 | },
44 | dicId: ''
45 | }
46 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/rich-text/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/rich-text/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/rich-text/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-editor',
6 | name: '富文本',
7 | icon: 'iconwenbenkuang',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig,
11 | extraData: {
12 | editor: null
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/rich-text/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | type: 'text',
5 | label: '标题',
6 | enLabel: '',
7 | width: 80,
8 | labelShow: true,
9 | placeholder: '请输入',
10 | enPlaceHolder: '',
11 | maxlength: 20,
12 | clearable: false,
13 | labelAlign: 'right',
14 | interfaceDataConfig: {
15 | versions: '1.0.0',
16 | id: '',
17 | uuid: '',
18 | key: '',
19 | value: ''
20 | },
21 | iconPreShow: false,
22 | iconPosShow: false,
23 | disabled: false,
24 | required: false
25 | }
26 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/select/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-select',
6 | name: '选择器',
7 | icon: 'icondanchu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig,
12 | extraData: {
13 | dicData: null as any
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/select/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: undefined,
3 | width: 80,
4 | outputLabel: undefined,
5 | label: '标题',
6 | enLabel: '',
7 | labelAlign: 'right',
8 | labelShow: true,
9 | size: 'default',
10 | mode: 'default',
11 | placeholder: '请选择',
12 | enPlaceHolder: '',
13 | labelKey: '',
14 | valueKey: '',
15 | required: false,
16 | disabled: false,
17 | columns: [],
18 | defaultTableData: [
19 | {
20 | label: '选项1',
21 | value: '1'
22 | },
23 | {
24 | label: '选项2',
25 | value: '2'
26 | },
27 | {
28 | label: '选项3',
29 | value: '3'
30 | }
31 | ], // 默认选项
32 | dropdownWidth: undefined, //下拉菜单宽度
33 | contentDataSource: 'radio-button-default',
34 | contentDataEcho: '',
35 | interfaceDataConfig: {
36 | versions: '1.0.0',
37 | id: '',
38 | uuid: '',
39 | key: ''
40 | },
41 | interfaceDataEchoConfig: {
42 | uuid: '',
43 | key: ''
44 | },
45 | interfaceSearchEchoConfig:{
46 | uuid: '',
47 | key: ''
48 | },
49 | dicId: '',
50 | commonConfigAssignIsCol: false,
51 | interfaceSearch:false
52 | }
53 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/slider/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/slider/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/slider/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-slider',
6 | name: '滑动条',
7 | icon: 'iconsliders',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/slider/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: 0,
3 | label: '标题',
4 | enLabel: '',
5 | labelShow: true,
6 | labelAlign: 'right',
7 | width: 80,
8 | max: 80,
9 | min: 0,
10 | step: 1,
11 | size: 'default',
12 | vertical: false,
13 | disabled: false,
14 | interfaceDataConfig: {
15 | versions: '1.0.0'
16 | },
17 | // 公共属性
18 | commonConfig: {
19 | topPaddingDistance: 0,
20 | bottomPaddingDistance: 0,
21 | leftPaddingDistance: 0,
22 | rightPaddingDistance: 0
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/slider/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
13 |
23 |
24 |
25 |
49 |
50 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/stepper/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/stepper/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/stepper/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-stepper',
6 | name: '步进器',
7 | icon: 'iconjia',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/stepper/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: 0,
3 | max: 80,
4 | min: 0,
5 | step: 1,
6 | integer: true, //是否是小数(废弃,作为兼容旧数据保留)
7 | precision: 1, //小数位数
8 | interfaceDataConfig: {
9 | versions: '1.0.0'
10 | },
11 | commonConfig: {
12 | borderStyle: {},
13 | leftSpaceDistance: 8,
14 | rightSpaceDistance: 8
15 | },
16 | commonConfigAssignIsCol: false
17 | }
18 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/stepper/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
34 |
35 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/switch/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/switch/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/switch/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-switch',
6 | name: '开关',
7 | icon: 'iconkaiguan',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/switch/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | switchValue: true,
3 | value: true,
4 | size: 'default',
5 | prefixLabel: '',
6 | prefixEnLabel: '',
7 | prefixValue: true,
8 | suffixLabel: '',
9 | suffixEnLabel: '',
10 | suffixValue: false,
11 | contentDataSource: 'radio-button-default',
12 | interfaceDataConfig: {
13 | versions: '1.0.0'
14 | },
15 | commonConfigAssignIsCol: false
16 | }
17 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/table-select/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/table-select/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-table-select',
6 | name: '表格选择器',
7 | icon: 'icondanchu',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig,
12 | extraData: {
13 | dicData: null as any
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/table-select/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: undefined,
3 | width: 80,
4 | outputLabel: undefined,
5 | label: '标题',
6 | enLabel: '',
7 | labelAlign: 'right',
8 | labelShow: true,
9 | size: 'default',
10 | mode: 'single',
11 | placeholder: '请选择',
12 | enPlaceHolder: '',
13 | labelKey: '',
14 | valueKey: '',
15 | required: false,
16 | disabled: false,
17 | // paginationSwitch: true, // 分页开关
18 | // pagination: {
19 | // current: 1,
20 | // pageSize: 10,
21 | // total: 0
22 | // },
23 | columns: [],
24 | defaultTableData: [
25 | {
26 | label: '选项1',
27 | value: '1'
28 | },
29 | {
30 | label: '选项2',
31 | value: '2'
32 | },
33 | {
34 | label: '选项3',
35 | value: '3'
36 | }
37 | ], // 静态选项
38 | contentDataSource: 'radio-button-default',
39 | contentDataEcho: '',
40 | interfaceDataConfig: {
41 | versions: '1.0.0',
42 | id: '',
43 | uuid: '',
44 | key: ''
45 | },
46 | interfaceDataEchoConfig: {
47 | uuid: '',
48 | key: ''
49 | },
50 | dicId: '',
51 | commonConfigAssignIsCol: false
52 | }
53 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/time-picker/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/time-picker/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-datetime-picker',
6 | isInputComponent: true, // 是否为输入组件
7 | name: '时间选择器',
8 | icon: 'iconshijianxuanzeqi',
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/time-picker/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | width: 80,
5 | size: 'default',
6 | label: '标题',
7 | enLabel: '',
8 | placeholder: '请选择时间',
9 | enPlaceHolder: '',
10 | format: 'HH:mm:ss',
11 | required: false,
12 | disabled: false,
13 | labelAlign: 'right',
14 | labelShow: true,
15 | clearable: true,
16 | interfaceDataConfig: {
17 | versions: '1.0.0',
18 | id: '',
19 | uuid: '',
20 | key: '',
21 | value: ''
22 | },
23 | interfaceDataEchoConfig: {
24 | versions: '1.0.0',
25 | id: '',
26 | uuid: '',
27 | key: '',
28 | value: ''
29 | },
30 | commonConfigAssignIsCol: false
31 | }
32 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/tree-select/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-tree-select',
6 | name: '树形选择器',
7 | icon: 'icontree',
8 | isInputComponent: true, // 是否为输入组件
9 | isMultiOutputComponent: true, //是否是多输出组件
10 | isRefreshComponent: true, // 是否为可刷新组件
11 | component: layoutTemplate,
12 | options: optionsConfig
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/tree-select/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: '',
3 | outputLabel: '', //组件输出的label值
4 | type: 'text',
5 | label: '标题',
6 | enLabel: '',
7 | multiple: false,
8 | expandAll: false,
9 | width: 80,
10 | labelShow: true,
11 | treeData: [],
12 | placeholder: '请选择',
13 | enPlaceHolder: '',
14 | labelAlign: 'right',
15 | size: 'default',
16 | disabled: false,
17 | clearable: false,
18 | required: false,
19 | dataFormat: '一维数组', //'一维数组', '树形数据'
20 | //层级数据
21 | setOptions: {
22 | value: '',
23 | name: '',
24 | id: '',
25 | parentId: '',
26 | childrenId: ''
27 | },
28 | // 配置
29 | contentDataSource: 'radio-button-default',
30 | interfaceDataConfig: {
31 | versions: '1.0.0',
32 | id: '',
33 | uuid: '',
34 | key: ''
35 | },
36 | interfaceDataEchoConfig: {
37 | id: '',
38 | uuid: ''
39 | },
40 | contentDataEcho: ''
41 | }
42 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/tree/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/tree/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-tree',
6 | name: '树形组件',
7 | icon: 'icontree',
8 | isInputComponent: true, // 是否为输入组件
9 | isMultiOutputComponent: true, //是否是多输出组件
10 | isRefreshComponent: true, // 是否为可刷新组件
11 | component: layoutTemplate,
12 | options: optionsConfig
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/inputs/tree/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: '', ////组件输出的value值
3 | outputLabel: '', //组件输出的label值
4 | pathValue: '', //包含父节点信息的value,节点信息用'-'连接
5 | pathLabel: '', //包含父节点信息的label,节点信息用'-'连接
6 | type: 'text',
7 | label: '标题',
8 | enLabel: '',
9 | containPath: false,
10 | multiple: false,
11 | width: 80,
12 | labelShow: true,
13 | treeData: [],
14 | placeholder: '请选择',
15 | enPlaceHolder: '',
16 | expandAll: false,
17 | labelAlign: 'right',
18 | size: 'default',
19 | disabled: false,
20 | clearable: false,
21 | dataFormat: '一维数组', //'一维数组', '树形数据'
22 | //层级数据
23 | setOptions: {
24 | value: '',
25 | name: '',
26 | id: '',
27 | parentId: '',
28 | childrenId: ''
29 | },
30 | // 配置
31 | contentDataSource: 'radio-button-default',
32 | interfaceDataConfig: {
33 | versions: '1.0.0',
34 | id: '',
35 | uuid: '',
36 | key: ''
37 | },
38 | interfaceDataEchoConfig: {
39 | id: '',
40 | uuid: ''
41 | },
42 | contentDataEcho: '',
43 | defaultTableData: [
44 | {
45 | title: '父节点 1',
46 | key: '0-0',
47 | children: [
48 | {
49 | title: '父节点 1-0',
50 | key: '0-0-0',
51 | children: [
52 | { title: '子节点1', key: '0-0-0-0' },
53 | { title: '子节点2', key: '0-0-0-1' }
54 | ]
55 | },
56 | {
57 | title: '父节点 1-1',
58 | key: '0-0-1',
59 | children: [{ key: '0-0-1-0', title: '子节点3' }]
60 | }
61 | ]
62 | }
63 | ],
64 | }
65 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/layouts/layout/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-layout',
6 | name: '布局容器',
7 | icon: 'iconzhage',
8 | isNestedComponent: true, // 是否为容器组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/layouts/layout/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | gutter: 0,
3 | layoutHeight: 46,
4 | layoutHeightUnit: 'px',
5 | justify: 'start',
6 | align: 'top',
7 | columnsSpanType: '8:8:8',
8 | columns: [
9 | {
10 | value: 8,
11 | componentList: []
12 | },
13 | {
14 | value: 8,
15 | componentList: []
16 | },
17 | {
18 | value: 8,
19 | componentList: []
20 | }
21 | ],
22 | labelAlign: 'left',
23 | labelVerticalAlign: '',
24 | layoutMargin: 0,
25 | layoutBorder: 0,
26 | backgroundColor: '#fff', // 背景色
27 | backgroundOpacity: 100,
28 | isDialogFooterContainer: false, // 是否作为弹窗页脚容器(打开后该容器作为对话框下面的Footer渲染)
29 | // 公共属性(组件边距)
30 | commonConfig: {
31 | topPaddingDistance: 0,
32 | bottomPaddingDistance: 0,
33 | leftPaddingDistance: 0,
34 | rightPaddingDistance: 0,
35 | topSpaceDistance: 0,
36 | bottomSpaceDistance: 0,
37 | leftSpaceDistance: 0,
38 | rightSpaceDistance: 0
39 | },
40 | _data_origin_component_uuid: ''
41 | }
42 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/layouts/tabs/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/layouts/tabs/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-tabs',
6 | name: '标签页',
7 | icon: 'icontab1',
8 | isInputComponent: true, // 是否为输入组件
9 | isNestedComponent: true, // 是否为容器组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/layouts/tabs/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | type: 'line',
3 | tabPosition: 'top',
4 | value: '0',
5 | columns: [
6 | {
7 | value: 'Tab 1',
8 | componentList: []
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/button/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-button',
6 | name: '按钮',
7 | icon: 'iconanniu1',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/button/options-config.ts:
--------------------------------------------------------------------------------
1 | import { useThemeStore } from '@/stores'
2 | const themeStore = useThemeStore()
3 | export default {
4 | version: '1.0.0',
5 | value: '',
6 | type: 'primary',
7 | shape: 'default', // 按钮类型
8 | size: 'default', // 按钮大小
9 | disabled: false,
10 | customtimageIcon: {
11 | fontClass: 'iconfont ant-home',
12 | unicode: 'e801'
13 | },
14 | iconPosition: 'left',
15 | iconPreShow: false,
16 | text: '确定',
17 | enText: '',
18 |
19 | // 颜色
20 | // backgroundColor: '#1677ff',
21 | backgroundColor: themeStore.themeConfig.token.colorPrimary,
22 | color: '#FFFFFF',
23 | styleEditorConfig: {
24 | textHtmlSize: themeStore.themeConfig.token.fontSize
25 | },
26 | themeChanged: {
27 | fontSize: false
28 | }, //是否修改过默认样式
29 | block: false,
30 | commonConfig: {
31 | topPaddingDistance: 8,
32 | bottomPaddingDistance: 8,
33 | leftPaddingDistance: 16,
34 | rightPaddingDistance: 16,
35 | borderStyle: {} as any,
36 | shadow: ''
37 | },
38 | commonConfigAssignIsCol: false
39 | }
40 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/collapse/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/collapse/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-collapse',
6 | name: '折叠面板',
7 | icon: 'iconfuhao-zhediemianban',
8 | isNestedComponent: true, // 是否为容器组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/collapse/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | active: [], //展开值
3 | accordion: false, //手风琴模式
4 | columns: [
5 | {
6 | title: '标题',
7 | componentList: []
8 | }
9 | ]
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/data-model/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/data-model/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 | export default {
4 | type: 'van-design-data-model',
5 | name: '数据模型',
6 | icon: 'iconzujian',
7 | isBeta:true,
8 | isRefreshComponent: true, // 是否为可刷新组件
9 | isInputComponent: true, // 是否为输入组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | // extraData: {
13 | // customComponent: null
14 | // }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/data-model/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | interfaceDataConfig: {
5 | versions: '1.0.0',
6 | // 数据绑定
7 | bindDataKey: ''
8 | },
9 | component: {} as any,
10 | customComponentId: '',
11 | _data_origin_component_uuid: ''
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/data-model/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 数据模型组件
4 |

5 |
6 |
7 |
8 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/divider/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/divider/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-divider',
6 | name: '分割线',
7 | icon: 'iconfengexian',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/divider/options-config.ts:
--------------------------------------------------------------------------------
1 | import { FormatType } from '@/utils/text-formatter'
2 |
3 | export default {
4 | type: 'horizontal', // vertical
5 | title: '文本',
6 | orientation: 'center',
7 | borderConfig: {
8 | color: '',
9 | size: 1,
10 | style: ''
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/divider/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 | {{ options.title }}
9 |
10 |
20 |
21 |
22 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/dropdown-menu/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/dropdown-menu/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-dropdown-menu',
6 | name: '下拉菜单',
7 | icon: 'iconswipeCell',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/dropdown-menu/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | title: '菜单名称',
3 | menus: [
4 | {
5 | value: '菜单名称'
6 | }
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/dropdown-menu/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ options.title }}
5 |
6 |
7 |
8 |
9 |
10 | {{ item.value }}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/dynamic-tabs/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-dynamic-tabs',
6 | name: '动态标签',
7 | icon: 'icontab1',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/dynamic-tabs/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | type: 'line',
3 | tabPosition: 'top',
4 | labelKey: '',
5 | valueKey: '',
6 | value: '',
7 | contentDataSource: 'radio-button-default',
8 | interfaceDataConfig: {
9 | versions: '1.0.0',
10 | id: '',
11 | uuid: '',
12 | key: '',
13 | value: ''
14 | },
15 | columns: [
16 | {
17 | value: 'Tab 1',
18 | componentList: []
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/extend-field/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-extend-field',
6 | name: '扩展字段',
7 | icon: 'iconwenben',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/extend-field/options-config.ts:
--------------------------------------------------------------------------------
1 | import { FormatType } from '@/utils/text-formatter'
2 |
3 | export default {
4 | value: '扩展字段',
5 | enValue: '',
6 | extendName:"",
7 | extendType:"",
8 | extendValue:"",
9 | contentDataSource: 'radio-button-default',
10 | interfaceDataConfig: {
11 | versions: '1.0.0',
12 | id: '',
13 | key: ''
14 | },
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/extend-field/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
36 |
37 |
46 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/icon/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-icon',
6 | name: '图标',
7 | icon: 'icontubiao',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/icon/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | icon: {
3 | name: 'smile',
4 | fontClass: 'iconfont ant-smile',
5 | unicode: 'e78f'
6 | },
7 | color: '#000000',
8 | size: '32',
9 | commonConfig: {
10 | postionConfig: {
11 | type: '',
12 | top: null,
13 | left: null,
14 | right: null,
15 | bottom: null,
16 | unit: 'px'
17 | },
18 | postionAbsolute: false,
19 | zIndex: 1
20 | },
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/icon/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/iframe/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/iframe/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/iframe/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-iframe',
6 | name: 'iframe',
7 | icon: 'iconhtml',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/iframe/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // 自定义属性
3 | url: '',
4 | commonConfigCompWidthUnit: '%',
5 | commonConfigCompWidth: '100',
6 | commonConfigCompHeightUnit: 'px',
7 | commonConfigCompHeight: '100',
8 | commonConfig: {
9 | leftSpaceDistance: 0,
10 | rightSpaceDistance: 0,
11 | bottomSpaceDistance: 0,
12 | topSpaceDistance: 0
13 | },
14 | contentDataSource: 'radio-button-default',
15 | interfaceDataConfig: {
16 | versions: '1.0.0',
17 | id: '',
18 | uuid: '',
19 | key: '',
20 | value: ''
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/iframe/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/image/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
14 |
15 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/image/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-image',
6 | name: '图片',
7 | icon: 'iconicon_tupian-xian',
8 | isRefreshComponent: true, // 是否为可刷新组件
9 | component: layoutTemplate,
10 | options: optionsConfig,
11 | extraData: {
12 | columns: [] as any[]
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/image/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | src: new URL('@/assets/images/pic.png', import.meta.url).href,
3 | width: '100',
4 | widthPercent: false,
5 | height: '100',
6 | heightPercent: false,
7 | contentDataSource: 'radio-button-default',
8 | interfaceDataConfig: {
9 | versions: '1.0.0',
10 | id: '',
11 | key: ''
12 | },
13 | commonConfig: {
14 | postionConfig: {
15 | type: '',
16 | top: null,
17 | left: null,
18 | right: null,
19 | bottom: null,
20 | unit: 'px'
21 | },
22 | postionAbsolute: false,
23 | zIndex: 1,
24 | leftSpaceDistance: 0,
25 | rightSpaceDistance: 0,
26 | bottomSpaceDistance: 0,
27 | topSpaceDistance: 0
28 | },
29 | commonConfigCompWidthUnit: 'px',
30 | commonConfigCompWidth: '100',
31 | commonConfigCompHeightUnit: 'auto',
32 | commonConfigCompHeight: '',
33 | _data_origin_component_uuid: '',
34 | commonConfigAssignIsCol: false
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/page-header/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/page-header/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-page-header',
6 | name: '页头',
7 | icon: 'iconall',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/page-header/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | title: '标题',
3 | subTitle: '副标题'
4 | }
5 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/page-header/template.vue:
--------------------------------------------------------------------------------
1 |
2 | null"
7 | />
8 |
9 |
10 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/qrcode/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/qrcode/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/qrcode/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-qrcode',
6 | name: '二维码',
7 | icon: 'iconQRcode',
8 | component: layoutTemplate,
9 | options: optionsConfig
10 | }
11 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/qrcode/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: 'https://www.xingyunzuo.com/',
3 | contentDataSource: 'radio-button-default',
4 | width: 100,
5 | height: 100,
6 | color: '#000000',
7 | interfaceDataConfig: {
8 | versions: '1.0.0',
9 | id: '',
10 | uuid: '',
11 | key: ''
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/qrcode/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/render/config-attribute/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/render/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/render/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 | export default {
4 | type: 'van-design-custom',
5 | name: '自定义组件',
6 | icon: 'iconzujian',
7 | isRefreshComponent: true, // 是否为可刷新组件
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | // extraData: {
12 | // customComponent: null
13 | // }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/render/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | interfaceDataConfig: {
5 | versions: '1.0.0',
6 | // 数据绑定
7 | bindDataKey: ''
8 | },
9 | component: {} as any,
10 | customComponentId: '',
11 | _data_origin_component_uuid: ''
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/steps/config-attribute/steps-config.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
31 |
38 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/steps/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/steps/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-steps',
6 | name: '步骤条',
7 | icon: 'iconbuzhoutiao1',
8 | isInputComponent: true, // 是否为输入组件
9 | component: layoutTemplate,
10 | options: optionsConfig
11 | }
12 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/steps/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: 1,
3 | direction: 'horizontal',
4 | size: 'default',
5 | steps: [
6 | { value: '登录', description: '用户登录' },
7 | { value: '验证', description: '验证身份' },
8 | { value: '付款', description: '支付款项' },
9 | { value: '完成', description: '完成交易' }
10 | ],
11 | interfaceDataConfig: {
12 | versions: '1.0.0'
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/steps/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/sub-table/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 | export default {
4 | type: 'van-design-sub-table',
5 | name: '子表',
6 | icon: 'iconzujian',
7 | isBeta:true,
8 | isRefreshComponent: true, // 是否为可刷新组件
9 | isInputComponent: true, // 是否为输入组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | // extraData: {
13 | // customComponent: null
14 | // }
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/sub-table/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | contentDataSource: 'radio-button-default',
3 | value: '',
4 | interfaceDataConfig: {
5 | versions: '1.0.0',
6 | // 数据绑定
7 | bindDataKey: ''
8 | },
9 | columnsConfigList:[],
10 | dataModelConnectConfig:{},
11 | tableData:[],// 表格数据,子表按理没有很多数据直接塞在组件里似乎是可行的?
12 | component: {} as any,
13 | customComponentId: '',
14 | _data_origin_component_uuid: ''
15 | }
16 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/sub-table/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | 子表
4 |

5 |
6 |
7 |
8 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/text/config-data/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/text/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-text',
6 | name: '文本',
7 | icon: 'iconwenben',
8 | isInputComponent: true, // 是否为输入组件
9 | isRefreshComponent: true, // 是否为可刷新组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/text/options-config.ts:
--------------------------------------------------------------------------------
1 | import { FormatType, FontSizeType } from '@/utils/text-formatter'
2 |
3 | export default {
4 | value: '文本',
5 | enValue: '',
6 | interfaceDataConfig: {
7 | versions: '1.0.0',
8 | id: '',
9 | key: ''
10 | },
11 | textFormat: FormatType.NORMAL_TEXT,
12 | fontSizeType: '',
13 | nowrap: false, //是否关闭自动换行
14 | richText: false,
15 | styleEditorConfig: {
16 | textBgColor: '',
17 | textHtmlSize: 14,
18 | textHtmlPosit: '',
19 | textHtmlBlod: '',
20 | textHtmlTilt: '',
21 | textHtmlUnder: '',
22 | textColor: '#333',
23 | lineHeight: 32
24 | },
25 | _data_origin_component_uuid: ''
26 | }
27 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/workflow/index.ts:
--------------------------------------------------------------------------------
1 | import layoutTemplate from './template.vue'
2 | import optionsConfig from './options-config'
3 |
4 | export default {
5 | type: 'van-design-workflow',
6 | name: '审批流',
7 | icon: 'iconliuchengshuoming',
8 | isInputComponent: true, // 是否为输入组件
9 | isMultiOutputComponent: true, //是否是多输出组件
10 | component: layoutTemplate,
11 | options: optionsConfig
12 | }
13 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/workflow/options-config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | value: '',
3 | contentDataSource: 'radio-button-default',
4 | interfaceDataConfig: {
5 | versions: '1.0.0',
6 | id: '',
7 | uuid: '',
8 | key: ''
9 | },
10 | eventConfig: {
11 | eventList: [
12 | {
13 | eventType: 'click',
14 | version: '1.0.0',
15 | actionList: []
16 | },
17 | {
18 | eventType: 'change',
19 | version: '1.0.0',
20 | actionList: []
21 | },
22 | {
23 | eventType: 'approve',
24 | version: '1.0.0',
25 | actionList: []
26 | },
27 | {
28 | eventType: 'reject',
29 | version: '1.0.0',
30 | actionList: []
31 | },
32 | {
33 | eventType: 'back',
34 | version: '1.0.0',
35 | actionList: []
36 | }
37 | ]
38 | },
39 | logList: [],
40 | workflowId: null,
41 | workflowIdConfig: {},
42 | logId: null,
43 | logIdConfig: {},
44 | currentUserId: null,
45 | // 组件输出
46 | outputs: {
47 | pendingUser: '',
48 | approvedUser: '',
49 | approvedAdvice: '',
50 | startUser: ''
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/components/design-pc/configs/others/workflow/template.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
审核意见
4 |
5 |
6 |
7 |
8 | 同意
9 | 拒绝
10 |
11 |
12 |
13 |
14 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/components/tools/code-editor/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
54 |
55 |
--------------------------------------------------------------------------------
/src/hooks/design-component/use-index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/hooks/design-component/use-index.ts
--------------------------------------------------------------------------------
/src/hooks/design-page-operate/use-clear.ts:
--------------------------------------------------------------------------------
1 | import { message } from 'ant-design-vue'
2 | import { Modal } from 'ant-design-vue'
3 | import { useDataStore } from '@/stores'
4 |
5 | export default function usePageClear(componentTreeList: any) {
6 | function onClear() {
7 | const store = useDataStore()
8 | Modal.confirm({
9 | title: '请确认是否清空所有组件和接口?',
10 | okText: '确认',
11 | cancelText: '取消',
12 | onOk() {
13 | message.success('清除成功')
14 | componentTreeList.value = []
15 | store.interfaceMap = {}
16 | store.componentListMap = {}
17 | store.componentTreeList = []
18 | },
19 | onCancel() {
20 | console.log('Cancel')
21 | },
22 | class: 'test'
23 | })
24 | }
25 |
26 | return {
27 | onClear
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/src/hooks/design-page-operate/use-delete.ts:
--------------------------------------------------------------------------------
1 | import { message } from 'ant-design-vue';
2 |
3 | export default function usePageDelete() {
4 | function onDelete() {
5 | message.info('功能开发中')
6 | }
7 |
8 | return {
9 | onDelete
10 | }
11 | }
--------------------------------------------------------------------------------
/src/hooks/design-page-operate/use-reload.ts:
--------------------------------------------------------------------------------
1 | import { nextTick } from 'vue'
2 | import { message } from 'ant-design-vue';
3 |
4 | export default function usePageReload(isShow: any) {
5 | async function onReload() {
6 | isShow.value = false
7 |
8 | await nextTick()
9 | isShow.value = true
10 |
11 | message.success('重载成功')
12 | }
13 |
14 | return {
15 | onReload
16 | }
17 | }
--------------------------------------------------------------------------------
/src/hooks/design-page-operate/use-save.ts:
--------------------------------------------------------------------------------
1 | import { message } from 'ant-design-vue'
2 | import { getCleanConfigJson } from '@/utils/clean-config-json'
3 | import { useDataStore } from '@/stores'
4 | import { setStorage } from '@/utils/storage-util'
5 |
6 | export default function usePageSave(componentTreeList: any, reportId: any) {
7 | function onSave() {
8 | let configJson = getCleanConfigJson()
9 | setStorage(reportId, configJson)
10 | message.success('保存成功', 0.5)
11 | }
12 |
13 | return {
14 | onSave
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | // import './assets/main.css';
3 | import Antd from 'ant-design-vue'
4 | import SdkPage from "./views/sdkEntry/SdkPage.vue";
5 | // import type { PageConfig } from '@/views/models';
6 | import { createPinia } from 'pinia'
7 | import router from './router'
8 | import * as echarts from 'echarts'
9 | class NebularPCRenderer {
10 | constructor(props: any) {
11 | this.config = props;
12 | console.log('---constructor---',this.config)
13 | this.init();
14 | }
15 | config: any = {
16 | merchantId: 10,
17 | projectId:330,
18 | reportId:5340,
19 | token:"",
20 | permission:"",
21 | pageParams:"",
22 | }
23 | editbox:any
24 | init() {
25 | const app = createApp(SdkPage, {
26 | ...this.config,
27 | onInit: (editbox: any) => {
28 | console.log("edit", editbox);
29 |
30 | }
31 | })
32 | const pinia = createPinia()
33 | app.use(pinia).use(router).use(Antd)
34 | app.config.globalProperties.echarts = echarts
35 | app.mount('#app');
36 | }
37 | loadData() {
38 | console.log("loadData");
39 | }
40 |
41 |
42 | }
43 | //兼容seajs
44 | // define(function (require:any, exports:any, module:any) {
45 | // return NebularRendererPC;
46 | // })
47 |
48 | export default NebularPCRenderer;
49 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-left/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
17 |
46 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-basics/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
39 |
40 |
48 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-datas/config-interface.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
20 |
21 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-confirm.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
17 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-disable.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 | {{ value.options.commonConfigAssignName }}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-display.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 | {{ value.options.commonConfigAssignName }}
11 |
12 |
13 |
14 |
15 |
16 |
17 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-import.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-interface.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-print.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | {{ comp.options.commonConfigAssignName }}
10 |
11 |
12 |
13 |
14 |
22 |
23 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-refresh.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 | {{ value.options.commonConfigAssignName }}
11 |
12 |
13 |
14 |
15 |
16 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-set-value.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {
9 | e.preventDefault()
10 | e.stopPropagation()
11 | }
12 | "
13 | >
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
31 |
32 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-table-export.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 | {{ value.options.commonConfigAssignName }}
10 |
11 |
12 |
导出名称
13 |
14 |
15 |
16 |
25 |
26 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/events-left/config-event/event-timeout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-events/hooks/use-drag-node.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 |
3 | export default function useDragNode() {
4 | const draggingNode = ref(null) as any;
5 | const draggingNodeName = ref(null) as any;
6 |
7 | return {
8 | draggingNode,
9 | draggingNodeName
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-status/hooks/use-drag-node.ts:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 |
3 | export default function useDragNode() {
4 | const draggingNode = ref(null) as any;
5 | const draggingNodeName = ref(null) as any;
6 |
7 | return {
8 | draggingNode,
9 | draggingNodeName
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/layouts/designer-aside-right/config-status/status-left/config-status/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ curDiagram.title }}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/layouts/designer-header/html.js:
--------------------------------------------------------------------------------
1 | export const prefix = `
2 |
3 |
4 |
5 |
6 |
7 |
8 | 测试
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
33 |
34 |
41 |
42 | `
43 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import { createPinia } from 'pinia'
5 |
6 | import './styles/index.less'
7 |
8 | import Antd from 'ant-design-vue'
9 |
10 | import * as echarts from 'echarts'
11 | import ganttastic from '@infectoone/vue-ganttastic'
12 |
13 | import '@imengyu/vue3-context-menu/lib/vue3-context-menu.css'
14 | import ContextMenu from '@imengyu/vue3-context-menu'
15 |
16 | const app = createApp(App)
17 | const pinia = createPinia()
18 | app.use(pinia).use(router).use(Antd).use(ganttastic).use(ContextMenu)
19 | app.config.globalProperties.echarts = echarts
20 | app.mount('#app')
21 |
--------------------------------------------------------------------------------
/src/router/index.ts:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory,createWebHashHistory } from 'vue-router'
2 | const router = createRouter({
3 | history: createWebHashHistory(import.meta.env.BASE_URL),
4 | routes: [
5 | {
6 | path: '/',
7 | redirect: {
8 | path: '/designer/pc'
9 | }
10 | },
11 | {
12 | path: '/designer/:device',
13 | name: 'designer',
14 | component: () => import('../views/Designer.vue')
15 | }
16 | ]
17 | })
18 |
19 | export default router
20 |
--------------------------------------------------------------------------------
/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | declare module '*.vue' {
3 | import type { DefineComponent } from 'vue'
4 | const component: DefineComponent<{}, {}, any>
5 | export default component
6 | }
7 |
--------------------------------------------------------------------------------
/src/styles/antd-ui-cover.less:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nebula-low-code/NebulaLowcode/7295fa8e21d25645ac3b8d7ba24289ca91f2c73e/src/styles/antd-ui-cover.less
--------------------------------------------------------------------------------
/src/styles/defaultTheme.json:
--------------------------------------------------------------------------------
1 | {
2 | "token": {
3 | "colorPrimary": "#1677ff",
4 | "fontSize": 14,
5 | "borderRadius": 6,
6 | "fontSizeHeading1": 38,
7 | "fontSizeHeading2": 30,
8 | "fontSizeHeading3": 24,
9 | "fontSizeHeading4": 20,
10 | "fontSizeHeading5": 16
11 | }
12 | }
--------------------------------------------------------------------------------
/src/styles/global.scss:
--------------------------------------------------------------------------------
1 | /* input 输入框label */
2 | .custom_component_label{
3 | min-height:32px;
4 | line-height: 32px;
5 | label{
6 | display: inline-block;
7 | word-wrap: break-word;
8 | flex-shrink: 0;
9 | font-size: 14px;
10 | font-weight: 500;
11 | color: #606266;
12 | padding: 0 12px 0 0;
13 | }
14 | label.required:before {
15 | content: '* ';
16 | color: red;
17 | }
18 | }
19 |
20 | .i-scrollbar-hide {
21 | &::-webkit-scrollbar {
22 | width: 0;
23 | }
24 | &::-webkit-scrollbar-track {
25 | background-color: transparent;
26 | }
27 | &::-webkit-scrollbar-thumb {
28 | background: #e8eaec;
29 | }
30 | }
31 |
32 | // 隐藏移动端label标签
33 | .hide_label{
34 | .van-field__label{
35 | display: none;
36 | }
37 | }
38 |
39 | .ant-message::before {
40 | display: none;
41 | }
42 |
43 | .ant-qrcode::before {
44 | display: none;
45 | }
46 |
47 | .ant-form-item {
48 | margin-bottom: 12px;
49 | }
50 |
51 | .ant-collapse>.ant-collapse-item >.ant-collapse-header {
52 | align-items: center;
53 | }
54 |
55 | .ant-tree {
56 | background: transparent;
57 | }
58 |
59 | .van-cell {
60 | background: transparent !important;
61 | }
62 |
63 | body {
64 | padding: 0;
65 | margin: 0;
66 | }
--------------------------------------------------------------------------------
/src/styles/index.less:
--------------------------------------------------------------------------------
1 | @import url(./reset.less);
2 | @import url(./antd-ui-cover.less);
3 | @import url(./global.scss);
4 |
--------------------------------------------------------------------------------
/src/styles/reset.less:
--------------------------------------------------------------------------------
1 | li {
2 | list-style: none;
3 | }
4 |
5 | ul,
6 | li,
7 | p,
8 | h1,
9 | h2,
10 | h3,
11 | h4,
12 | h5 {
13 | margin: 0px;
14 | padding: 0px;
15 | }
16 |
--------------------------------------------------------------------------------
/src/utils/charts-utils/axis-formatter.ts:
--------------------------------------------------------------------------------
1 | export function axisFormatter(value: any, formatter: string) {
2 | if (formatter && formatter.length > 0) {
3 | if (formatter == 'percent') {
4 | return toThousands(value * 100) + '%'
5 | } else if (formatter == 'KMB') {
6 | return abbreviateNumber(value)
7 | } else {
8 | return toThousands(value)
9 | }
10 | } else {
11 | return toThousands(value)
12 | }
13 | }
14 |
15 | //千分位
16 | function toThousands(num: any) {
17 | return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,')
18 | }
19 |
20 | //将大数转为K、M、B、T
21 | function abbreviateNumber(num: any, fixed = 0) {
22 | if (num === null) {
23 | return null
24 | } // terminate early
25 | if (num === 0) {
26 | return '0'
27 | } // terminate early
28 | let b = num.toPrecision(2).split('e'), // get power
29 | k = b.length === 1 ? 0 : Math.floor(Math.min(b[1].slice(1), 14) / 3), // floor at decimals, ceiling at trillions
30 | c = k < 1 ? num.toFixed(0 + fixed) : (num / Math.pow(10, k * 3)).toFixed(1), // divide by power
31 | d = c < 0 ? c : Math.abs(c), // enforce -0 is 0
32 | e = d + ['', 'K', 'M', 'B', 'T'][k] // append power
33 | return e
34 | }
35 |
--------------------------------------------------------------------------------
/src/utils/charts-utils/charts-legend.ts:
--------------------------------------------------------------------------------
1 | export function legend(legendAlign: string) {
2 | let legend: any
3 | switch (legendAlign) {
4 | case 'top':
5 | legend = {
6 | orient: 'horizontal',
7 | right: 'center',
8 | top: 0
9 | }
10 | break
11 | case 'left':
12 | legend = {
13 | orient: 'vertical',
14 | left: 0,
15 | top: 'center'
16 | }
17 | break
18 | case 'right':
19 | legend = {
20 | orient: 'vertical',
21 | right: 0,
22 | top: 'center'
23 | }
24 | break
25 | case 'bottom':
26 | legend = {
27 | orient: 'horizontal',
28 | right: 'center',
29 | bottom: 0
30 | }
31 | break
32 | case 'none':
33 | legend = undefined
34 | break
35 | }
36 | if (legend) {
37 | legend['type'] = 'scroll'
38 | }
39 | return legend
40 | }
41 |
--------------------------------------------------------------------------------
/src/utils/deep-clone.ts:
--------------------------------------------------------------------------------
1 | export function deepClone(source: T): T {
2 | if (source === null || typeof source !== 'object') {
3 | // 如果是原始类型或 null,则直接返回
4 | return source
5 | }
6 |
7 | if (Array.isArray(source)) {
8 | // 如果是数组,递归拷贝数组的每个元素
9 | const cloneArray = source.map((item) => deepClone(item))
10 | return cloneArray as any
11 | }
12 |
13 | // 如果是对象,递归拷贝对象的每个属性
14 | const cloneObject = {} as T
15 | for (const key in source) {
16 | if (Object.prototype.hasOwnProperty.call(source, key)) {
17 | cloneObject[key] = deepClone(source[key])
18 | }
19 | }
20 | return cloneObject
21 | }
22 |
23 | export function deepMerge(target: T, source: Partial): T {
24 | if (source === null || typeof source !== 'object') {
25 | // 如果源对象是原始类型或者 null,则直接返回源对象
26 | return source as T
27 | }
28 |
29 | const mergedObject = { ...target }
30 |
31 | for (const key in source) {
32 | if (Object.prototype.hasOwnProperty.call(source, key)) {
33 | const targetValue = target[key]
34 | const sourceValue = source[key]
35 |
36 | if (
37 | targetValue !== null &&
38 | typeof targetValue === 'object' &&
39 | sourceValue !== null &&
40 | typeof sourceValue === 'object'
41 | ) {
42 | // 如果目标值和源值都是对象,则递归合并两个对象
43 | mergedObject[key] = deepMerge(targetValue, sourceValue)
44 | } else {
45 | // 否则,直接用源值覆盖目标值
46 | mergedObject[key] = sourceValue as NonNullable]>
47 | }
48 | }
49 | }
50 |
51 | return mergedObject
52 | }
53 |
--------------------------------------------------------------------------------
/src/utils/load-css.ts:
--------------------------------------------------------------------------------
1 | export const loadCss = (url: string) => {
2 | return new Promise((resolve, reject) => {
3 | const link = document.createElement('link')
4 | link.rel = 'stylesheet'
5 | link.href = url
6 | document.head.appendChild(link)
7 | link.onload = () => {
8 | resolve()
9 | }
10 | })
11 | }
12 |
--------------------------------------------------------------------------------
/src/utils/mitt.ts:
--------------------------------------------------------------------------------
1 | import mitt from 'mitt'
2 | const emitter = mitt()
3 | export default emitter
4 |
--------------------------------------------------------------------------------
/src/utils/pub-use.ts:
--------------------------------------------------------------------------------
1 | export function getAssetsFile(url: string) {
2 | return new URL(`../assets/${url}`, import.meta.url).href
3 | }
4 |
5 | //根据名字在树形数据中搜索
6 | export function searchTreeData(nodes: any[], searchTerm: string, keyName: string): any[] {
7 | // 忽略大小写进行模糊匹配
8 | const lowerCaseSearchTerm = searchTerm.toLowerCase()
9 |
10 | // 递归搜索函数
11 | const searchRecursively = (nodes: any[]): any[] => {
12 | return nodes.reduce((acc, node) => {
13 | // 检查当前节点的label是否匹配
14 | if (node[keyName].toLowerCase().includes(lowerCaseSearchTerm)) {
15 | // 如果是叶子节点,直接添加到结果中
16 | if (!node.children || node.children.length === 0) {
17 | acc.push(node)
18 | } else {
19 | // 如果不是叶子节点,递归搜索子节点并合并结果
20 | const childrenResults = searchRecursively(node.children || [])
21 | if (childrenResults.length > 0) {
22 | acc.push({
23 | ...node,
24 | children: childrenResults
25 | })
26 | }
27 | }
28 | } else if (node.children) {
29 | // 如果当前节点不匹配,递归搜索子节点
30 | const childrenResults = searchRecursively(node.children)
31 | if (childrenResults.length > 0) {
32 | acc.push({
33 | ...node,
34 | children: childrenResults
35 | })
36 | }
37 | }
38 | return acc
39 | }, [] as any[])
40 | }
41 |
42 | // 开始递归搜索
43 | return searchRecursively(nodes)
44 | }
45 |
--------------------------------------------------------------------------------
/src/utils/storage-util.ts:
--------------------------------------------------------------------------------
1 | // 设置 setStorage
2 | export const setStorage = (key: any, value: any) => {
3 | if (value === '' || value === null || value === undefined) {
4 | value = null
5 | }
6 | let keyString = 'designer-' + key
7 | localStorage.setItem(
8 | keyString,
9 | JSON.stringify({
10 | value: value
11 | })
12 | )
13 | }
14 |
15 | // 获取 getStorage
16 | export const getStorage = (key: any) => {
17 | let keyString = 'designer-' + key
18 | let storageStr = localStorage.getItem(keyString)
19 | if (storageStr) {
20 | return JSON.parse(storageStr).value
21 | }
22 | return null
23 | }
24 |
25 | // 删除 removeStorage
26 | export const removeStorage = (key: any) => {
27 | localStorage.removeItem(key)
28 | }
29 |
30 | // 清空 clearStorage
31 | export const clearStorage = () => {
32 | localStorage.clear()
33 | }
34 |
--------------------------------------------------------------------------------
/src/utils/string-utils.ts:
--------------------------------------------------------------------------------
1 | import { DataSourceType } from './constants'
2 |
3 | //解析字符串中所有{}包围的字段,作为数组返回
4 | export function extractParams(sql: string): string[] {
5 | // 定义正则表达式匹配 {} 中的内容
6 | const regex = /\{(\s*.*?\s*)\}/g
7 | let matches: RegExpExecArray | null
8 | const params: string[] = []
9 |
10 | // 使用正则表达式匹配并提取参数
11 | while ((matches = regex.exec(sql)) !== null) {
12 | // 去除空格
13 | const paramName = matches[1].trim()
14 | params.push(paramName)
15 | }
16 |
17 | return params
18 | }
19 |
20 | export function isNetworkDatasource(dataSourceType: string) {
21 | return dataSourceType === DataSourceType.INTERFACE || dataSourceType === DataSourceType.CONNECT || dataSourceType === DataSourceType.DATABASE || dataSourceType === DataSourceType.SQL|| dataSourceType === DataSourceType.DIFY
22 | }
23 |
24 | export function imageToBase64(url: string, callback: Function) {
25 | let img = new Image(),
26 | dataURL = ''
27 | img.src = url + '?v=' + Math.random()
28 | img.setAttribute('crossOrigin', 'Anonymous')
29 | img.onload = function () {
30 | let canvas = document.createElement('canvas'),
31 | width = img.width,
32 | height = img.height
33 | canvas.width = width
34 | canvas.height = height
35 | canvas.getContext('2d')?.drawImage(img, 0, 0, width, height)
36 | dataURL = canvas.toDataURL('image/jpeg')
37 | callback ? callback(dataURL) : null
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/utils/uuid.ts:
--------------------------------------------------------------------------------
1 | export const generateUUID = (prefix?: string) => {
2 | let d = new Date().getTime()
3 | const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
4 | const r = (d + Math.random() * 16) % 16 | 0
5 | d = Math.floor(d / 16)
6 | return (c == 'x' ? r : (r & 0x7) | 0x8).toString(16)
7 | })
8 | return (prefix || 'van-') + uuid // 为什么要加van-?因为需要支持自定义class功能,html的class不支持数字开头
9 | }
10 |
--------------------------------------------------------------------------------
/src/views/sdkEntry/SdkPage.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
17 |
--------------------------------------------------------------------------------
/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@vue/tsconfig/tsconfig.dom.json",
3 | "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
4 | "exclude": ["src/**/__tests__/*"],
5 | "compilerOptions": {
6 | "composite": true,
7 | "baseUrl": ".",
8 | "paths": {
9 | "@/*": ["./src/*"]
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | {
5 | "path": "./tsconfig.node.json"
6 | },
7 | {
8 | "path": "./tsconfig.app.json"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@tsconfig/node18/tsconfig.json",
3 | "include": [
4 | "vite.config.*",
5 | "vitest.config.*",
6 | "cypress.config.*",
7 | "nightwatch.conf.*",
8 | "playwright.config.*"
9 | ],
10 | "compilerOptions": {
11 | "composite": true,
12 | "module": "ESNext",
13 | "types": ["node"]
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'node:url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | base:"./",
9 | plugins: [
10 | vue(),
11 | ],
12 | resolve: {
13 | alias: {
14 | '@': fileURLToPath(new URL('./src', import.meta.url))
15 | }
16 | }
17 | })
18 |
--------------------------------------------------------------------------------