基本表单功能、通用设置界面

This commit is contained in:
Gary Fu
2023-12-30 18:21:15 +08:00
parent d74c876d70
commit a65a1db306
9 changed files with 322 additions and 77 deletions

View File

@@ -0,0 +1,53 @@
<script setup>
import { computed } from 'vue'
import cloneDeep from 'lodash/cloneDeep'
const props = defineProps({
/**
* @type [CommonFormOption]
*/
options: {
type: Array,
required: true
},
labelWidth: {
type: String,
default: '100px'
},
model: {
type: Object
}
})
const rules = computed(() => {
const ruleResult = {}
props.options.forEach(option => {
if (option.prop && option.rules) {
ruleResult[option.prop] = cloneDeep(option.rules)
}
})
console.info(ruleResult)
return ruleResult
})
</script>
<template>
<el-form
:model="model"
:rules="rules"
:label-width="labelWidth"
v-bind="$attrs"
>
<common-form-control
v-for="(option,index) in options"
:key="index"
:model="model"
:option="option"
/>
</el-form>
</template>
<style scoped>
</style>