This commit is contained in:
2026-03-29 18:25:02 +08:00
parent ae4e342106
commit 25f3e8e989
3 changed files with 313 additions and 46 deletions

View File

@@ -59,15 +59,7 @@
<script>
import templateRender from './templateRender'
import FrameworkSwitch from '../switch/index.vue'
// 导入框架中的图标配置
let icons = []
try {
icons = require('../../config/icons.json') || []
} catch (e) {
console.warn('未找到图标配置文件,图标选择功能将不可用', e)
icons = []
}
import { SELECT_ICON_OPTIONS } from './selectIconOptions'
export default {
name: 'FieldRenderer',
@@ -91,7 +83,7 @@ export default {
},
data() {
return {
icons: []
icons: SELECT_ICON_OPTIONS
}
},
computed: {
@@ -112,21 +104,13 @@ export default {
return this.value
}
},
mounted() {
// 安全处理图标数据
if (Array.isArray(icons)) {
this.icons = icons.map((item) => item.trim ? item.trim() : item)
} else {
this.icons = []
}
},
methods: {
// 组件映射表 - 统一管理组件类型
getComponentName(componentType) {
const componentMap = {
'Select': 'Select',
'Radio': 'RadioGroup',
'SelectIcon': 'AutoComplete',
'SelectIcon': 'Select',
'UploadSingle': 'UploadSingle',
'TextArea': 'TextArea',
'Input': 'Input',
@@ -174,7 +158,9 @@ export default {
baseProps.filterable = true
baseProps.clearable = true
} else if (col.com === 'SelectIcon') {
baseProps.icon = 'ios-search'
baseProps.filterable = true
baseProps.clearable = true
baseProps.placeholder = col.placeholder || '搜索或选择图标'
} else if (col.com === 'TextArea') {
baseProps.rows = 4
baseProps.placeholder = '请输入内容'
@@ -255,6 +241,7 @@ export default {
'TextArea': 'width:100%;',
'DatePicker': 'width:100%;',
'TimePicker': 'width:100%;',
'SelectIcon': 'width:100%;',
"inputNumber": "width:100%;",
}

View File

@@ -0,0 +1,306 @@
/**
* 菜单/表单「图标」下拉选项(与 View Design Icon 的 type 一致)
* 不依赖 icons.json保证 UMD 打包后无需额外静态资源即可使用
*/
export const SELECT_ICON_OPTIONS = [
'md-add',
'md-add-circle',
'md-alarm',
'md-albums',
'md-alert',
'md-american-football',
'md-analytics',
'md-aperture',
'md-apps',
'md-appstore',
'md-archive',
'md-arrow-back',
'md-arrow-down',
'md-arrow-dropdown',
'md-arrow-dropdown-circle',
'md-arrow-dropleft',
'md-arrow-dropleft-circle',
'md-arrow-dropright',
'md-arrow-dropright-circle',
'md-arrow-dropup',
'md-arrow-dropup-circle',
'md-arrow-forward',
'md-arrow-round-back',
'md-arrow-round-down',
'md-arrow-round-forward',
'md-arrow-round-up',
'md-arrow-up',
'md-at',
'md-attach',
'md-backspace',
'md-barcode',
'md-baseball',
'md-basket',
'md-basketball',
'md-battery-charging',
'md-battery-dead',
'md-battery-full',
'md-beaker',
'md-beer',
'md-bicycle',
'md-bluetooth',
'md-boat',
'md-body',
'md-bonfire',
'md-book',
'md-bookmark',
'md-bookmarks',
'md-bowtie',
'md-briefcase',
'md-browsers',
'md-brush',
'md-bug',
'md-build',
'md-bulb',
'md-bus',
'md-cafe',
'md-calculator',
'md-calendar',
'md-call',
'md-camera',
'md-car',
'md-card',
'md-cart',
'md-cash',
'md-chatboxes',
'md-chatbubbles',
'md-checkbox',
'md-checkbox-outline',
'md-checkmark',
'md-checkmark-circle',
'md-checkmark-circle-outline',
'md-clipboard',
'md-clock',
'md-close',
'md-close-circle',
'md-closed-captioning',
'md-cloud',
'md-cloud-circle',
'md-cloud-done',
'md-cloud-download',
'md-cloud-outline',
'md-cloud-upload',
'md-cloudy',
'md-cloudy-night',
'md-code',
'md-code-download',
'md-code-working',
'md-cog',
'md-color-fill',
'md-color-filter',
'md-color-palette',
'md-color-wand',
'md-compass',
'md-construct',
'md-contact',
'md-contacts',
'md-contract',
'md-contrast',
'md-copy',
'md-create',
'md-crop',
'md-cube',
'md-cut',
'md-desktop',
'md-disc',
'md-document',
'md-done-all',
'md-download',
'md-easel',
'md-egg',
'md-exit',
'md-expand',
'md-eye',
'md-eye-off',
'md-fastforward',
'md-female',
'md-filing',
'md-film',
'md-finger-print',
'md-flag',
'md-flame',
'md-flash',
'md-flask',
'md-flower',
'md-folder',
'md-folder-open',
'md-football',
'md-funnel',
'md-game-controller-a',
'md-game-controller-b',
'md-git-branch',
'md-git-commit',
'md-git-compare',
'md-git-merge',
'md-git-network',
'md-git-pull-request',
'md-glasses',
'md-globe',
'md-grid',
'md-hammer',
'md-hand',
'md-happy',
'md-headset',
'md-heart',
'md-heart-outline',
'md-help',
'md-help-buoy',
'md-help-circle',
'md-home',
'md-ice-cream',
'md-image',
'md-images',
'md-infinite',
'md-information',
'md-information-circle',
'md-ionic',
'md-ionitron',
'md-jet',
'md-key',
'md-keypad',
'md-laptop',
'md-leaf',
'md-link',
'md-list',
'md-list-box',
'md-locate',
'md-lock',
'md-log-in',
'md-log-out',
'md-magnet',
'md-mail',
'md-mail-open',
'md-male',
'md-man',
'md-map',
'md-medal',
'md-medical',
'md-medkit',
'md-megaphone',
'md-menu',
'md-mic',
'md-mic-off',
'md-microphone',
'md-moon',
'md-more',
'md-move',
'md-musical-note',
'md-musical-notes',
'md-navigate',
'md-no-smoking',
'md-notifications',
'md-notifications-off',
'md-notifications-outline',
'md-nuclear',
'md-nutrition',
'md-open',
'md-options',
'md-outlet',
'md-paper',
'md-paper-plane',
'md-partly-sunny',
'md-pause',
'md-paw',
'md-people',
'md-person',
'md-person-add',
'md-phone-landscape',
'md-phone-portrait',
'md-photos',
'md-pie',
'md-pin',
'md-pint',
'md-pizza',
'md-plane',
'md-planet',
'md-play',
'md-podium',
'md-power',
'md-pricetag',
'md-pricetags',
'md-print',
'md-pulse',
'md-qr-scanner',
'md-quote',
'md-radio',
'md-radio-button-off',
'md-radio-button-on',
'md-rainy',
'md-recording',
'md-redo',
'md-refresh',
'md-refresh-circle',
'md-remove',
'md-remove-circle',
'md-reorder',
'md-repeat',
'md-resize',
'md-restaurant',
'md-return-left',
'md-return-right',
'md-reverse-camera',
'md-rewind',
'md-ribbon',
'md-rose',
'md-sad',
'md-school',
'md-search',
'md-send',
'md-settings',
'md-share',
'md-share-alt',
'md-shirt',
'md-shuffle',
'md-skip-backward',
'md-skip-forward',
'md-snow',
'md-speedometer',
'md-square',
'md-square-outline',
'md-star',
'md-star-half',
'md-star-outline',
'md-stats',
'md-stopwatch',
'md-subway',
'md-sunny',
'md-swap',
'md-switch',
'md-sync',
'md-tablet-landscape',
'md-tablet-portrait',
'md-tennisball',
'md-text',
'md-thermometer',
'md-thumbs-down',
'md-thumbs-up',
'md-thunderstorm',
'md-time',
'md-timer',
'md-train',
'md-transgender',
'md-trash',
'md-trending-down',
'md-trending-up',
'md-trophy',
'md-umbrella',
'md-undo',
'md-unlock',
'md-videocam',
'md-volume-down',
'md-volume-mute',
'md-volume-off',
'md-volume-up',
'md-walk',
'md-warning',
'md-watch',
'md-water',
'md-wifi',
'md-wine',
'md-woman'
]