|
@@ -5,6 +5,7 @@
|
|
:label-width="formOption.labelWidth"
|
|
:label-width="formOption.labelWidth"
|
|
:inline="formOption.inline || false"
|
|
:inline="formOption.inline || false"
|
|
:rules="rules"
|
|
:rules="rules"
|
|
|
|
+ :labelPosition="formOption.labelPosition || 'top'"
|
|
ref="byForm"
|
|
ref="byForm"
|
|
>
|
|
>
|
|
<el-form-item
|
|
<el-form-item
|
|
@@ -13,13 +14,15 @@
|
|
:key="i.model"
|
|
:key="i.model"
|
|
:prop="i.prop"
|
|
:prop="i.prop"
|
|
:style="
|
|
:style="
|
|
- i.itemWidth
|
|
|
|
|
|
+ i.type == 'title' ? 'width:100%' :
|
|
|
|
+ i.itemWidth
|
|
? 'width:' + i.itemWidth + '%'
|
|
? 'width:' + i.itemWidth + '%'
|
|
: formOption.itemWidth
|
|
: formOption.itemWidth
|
|
? 'width:' + formOption.itemWidth + '%'
|
|
? 'width:' + formOption.itemWidth + '%'
|
|
- : ''
|
|
|
|
|
|
+ : '100%'
|
|
"
|
|
"
|
|
>
|
|
>
|
|
|
|
+
|
|
<el-input
|
|
<el-input
|
|
v-if="i.type == 'input'"
|
|
v-if="i.type == 'input'"
|
|
v-model="formData[i.prop]"
|
|
v-model="formData[i.prop]"
|
|
@@ -37,8 +40,19 @@
|
|
:disabled="i.disabled ? i.disabled : false"
|
|
:disabled="i.disabled ? i.disabled : false"
|
|
:style="i.style"
|
|
:style="i.style"
|
|
>
|
|
>
|
|
- <el-option :label="j.name" :value="j.id" v-for="j in i.data" :key="j.id" />
|
|
|
|
|
|
+ <el-option :label="j.title || j.name" :value="j.id || j.value" v-for="j in i.data" :key="j.id">
|
|
|
|
+
|
|
|
|
+ </el-option>
|
|
</el-select>
|
|
</el-select>
|
|
|
|
+ <el-tree-select
|
|
|
|
+ v-model="formData[i.prop]"
|
|
|
|
+ v-else-if="i.type == 'treeSelect'"
|
|
|
|
+ :data="i.data"
|
|
|
|
+ :props="{ value: 'id', label: 'label', children: 'children' }"
|
|
|
|
+ value-key="id"
|
|
|
|
+ :placeholder="i.placeholder || '请选择'"
|
|
|
|
+ check-strictly
|
|
|
|
+ />
|
|
<el-date-picker
|
|
<el-date-picker
|
|
v-model="formData[i.prop]"
|
|
v-model="formData[i.prop]"
|
|
v-else-if="i.type == 'date'"
|
|
v-else-if="i.type == 'date'"
|
|
@@ -68,18 +82,50 @@
|
|
v-else-if="i.type == 'radio'"
|
|
v-else-if="i.type == 'radio'"
|
|
v-model="formData[i.prop]"
|
|
v-model="formData[i.prop]"
|
|
:disabled="i.disabled ? i.disabled : false"
|
|
:disabled="i.disabled ? i.disabled : false"
|
|
|
|
+
|
|
>
|
|
>
|
|
- <el-radio label="Sponsor" />
|
|
|
|
- <el-radio label="Venue" />
|
|
|
|
|
|
+ <el-radio
|
|
|
|
+ :border="i.border ? i.border : false"
|
|
|
|
+ v-for="j in i.data" :key="j.id || j.value" :label="j.id || j.value" name="type"
|
|
|
|
+ >
|
|
|
|
+ {{ j.name || j.label }}
|
|
|
|
+ </el-radio>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
|
+ <el-input-number
|
|
|
|
+ v-else-if="i.type == 'number'"
|
|
|
|
+ v-model="formData[i.prop]"
|
|
|
|
+ :placeholder="i.placeholder || '请输入'"
|
|
|
|
+ @input="commonsEmit"
|
|
|
|
+ :disabled="i.disabled ? i.disabled : false"
|
|
|
|
+ :min="i.min ? i.min : 0"
|
|
|
|
+ :max="i.max ? i.max : 100"
|
|
|
|
+ :step="i.step ? i.step : 1">
|
|
|
|
+ </el-input-number>
|
|
|
|
+ <el-tree
|
|
|
|
+ v-else-if="i.type == 'tree'"
|
|
|
|
+ :data="i.data"
|
|
|
|
+ :props="i.props"
|
|
|
|
+ :show-checkbox="i.showCheckbox || true"
|
|
|
|
+ >
|
|
|
|
+ </el-tree>
|
|
|
|
+ <el-cascader
|
|
|
|
+ v-else-if="i.type == 'cascader'"
|
|
|
|
+ :options="i.data"
|
|
|
|
+ :props="i.props"
|
|
|
|
+ :placeholder="i.placeholder || '请选择'"
|
|
|
|
+ @change="commonsEmit"
|
|
|
|
+ :disabled="i.disabled ? i.disabled : false"
|
|
|
|
+ :style="i.style">
|
|
|
|
+ </el-cascader>
|
|
|
|
+ <div class="form-title" v-else-if="i.type == 'title'">
|
|
|
|
+ {{ i.title }}
|
|
|
|
+ </div>
|
|
<slot
|
|
<slot
|
|
:name="i.slotName"
|
|
:name="i.slotName"
|
|
v-else-if="i.type == 'slot'">
|
|
v-else-if="i.type == 'slot'">
|
|
{{i.slotName}}插槽占位符
|
|
{{i.slotName}}插槽占位符
|
|
</slot>
|
|
</slot>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-button @click="resetForm">qingkong</el-button>
|
|
|
|
-
|
|
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
@@ -109,23 +155,17 @@ defineProps({
|
|
default: false,
|
|
default: false,
|
|
},
|
|
},
|
|
})
|
|
})
|
|
|
|
+
|
|
const isInit = ref(false)
|
|
const isInit = ref(false)
|
|
const { proxy } = getCurrentInstance()
|
|
const { proxy } = getCurrentInstance()
|
|
const emit = defineEmits(['update:modelValue'])
|
|
const emit = defineEmits(['update:modelValue'])
|
|
const formData = computed(() => {
|
|
const formData = computed(() => {
|
|
- return proxy.modelValue
|
|
|
|
- if(isInit.value) {
|
|
|
|
- }else{
|
|
|
|
- return formDataInit()
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ return proxy.modelValue
|
|
})
|
|
})
|
|
const formDataReset = ref({...proxy.modelValue})
|
|
const formDataReset = ref({...proxy.modelValue})
|
|
-const onSubmit = () => {}
|
|
|
|
const commonsEmit = (prop) => {
|
|
const commonsEmit = (prop) => {
|
|
emit('update:modelValue', formData.value)
|
|
emit('update:modelValue', formData.value)
|
|
}
|
|
}
|
|
-
|
|
|
|
const loadInit = () => {
|
|
const loadInit = () => {
|
|
const v = this
|
|
const v = this
|
|
for (let i = 0; i < proxy.formConfig.length; i++) {
|
|
for (let i = 0; i < proxy.formConfig.length; i++) {
|
|
@@ -135,11 +175,6 @@ const loadInit = () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
-const resetForm = (() => {
|
|
|
|
- proxy.resetForm("byForm");
|
|
|
|
-})
|
|
|
|
-
|
|
|
|
const dateFormatInit = ((itemType) => {
|
|
const dateFormatInit = ((itemType) => {
|
|
const formatObj = {
|
|
const formatObj = {
|
|
year:"YYYY",
|
|
year:"YYYY",
|
|
@@ -180,7 +215,7 @@ const commonRecursive = (arr, labelKey, labelVal, childrenName) => {
|
|
|
|
|
|
//请求form表单所需数据字典
|
|
//请求form表单所需数据字典
|
|
const commonGetdata = (isLoad,i) => {
|
|
const commonGetdata = (isLoad,i) => {
|
|
- proxy.get('/getRouters').then(message=>{
|
|
|
|
|
|
+ proxy[isLoad.method](isLoad.url,isLoad.req).then(message=>{
|
|
if (getFormat(isLoad.resUrl, message) == undefined) {
|
|
if (getFormat(isLoad.resUrl, message) == undefined) {
|
|
console.log('请查看isLoad配置是否正确url:' + isLoad.url)
|
|
console.log('请查看isLoad配置是否正确url:' + isLoad.url)
|
|
return
|
|
return
|
|
@@ -197,6 +232,7 @@ const commonGetdata = (isLoad,i) => {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
//根据resurl获取数据
|
|
//根据resurl获取数据
|
|
const getFormat = (formatStr, props) => {
|
|
const getFormat = (formatStr, props) => {
|
|
if(!formatStr) return props
|
|
if(!formatStr) return props
|
|
@@ -224,6 +260,8 @@ const formDataInit = () => {
|
|
Solt: null,
|
|
Solt: null,
|
|
Transfer: [],
|
|
Transfer: [],
|
|
Upload: { path: null, id: null, name: null },
|
|
Upload: { path: null, id: null, name: null },
|
|
|
|
+ password:'',
|
|
|
|
+ treeSelect:'',
|
|
}
|
|
}
|
|
const formDataCopy = { ...formData.value }
|
|
const formDataCopy = { ...formData.value }
|
|
for (let i = 0; i < proxy.formConfig.length; i++) {
|
|
for (let i = 0; i < proxy.formConfig.length; i++) {
|
|
@@ -241,18 +279,42 @@ const formDataInit = () => {
|
|
emit('update:modelValue', formData.value)
|
|
emit('update:modelValue', formData.value)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const handleSubmit = (onSubmit) => {
|
|
|
|
+ proxy.$refs['byForm'].validate((valid) => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ onSubmit()
|
|
|
|
+ } else {
|
|
|
|
+ ElMessage({
|
|
|
|
+ message: '请检查表单',
|
|
|
|
+ type: 'warning',
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+const byform = ref(null) // 延迟使用,因为还没有返回跟挂载
|
|
onMounted(()=>{
|
|
onMounted(()=>{
|
|
|
|
|
|
})
|
|
})
|
|
|
|
+defineExpose({
|
|
|
|
+ handleSubmit,
|
|
|
|
+})
|
|
formDataInit()
|
|
formDataInit()
|
|
loadInit()
|
|
loadInit()
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style>
|
|
<style>
|
|
|
|
|
|
|
|
+.form-title {
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ margin-top: 22px;
|
|
|
|
+ color: #333333;
|
|
|
|
+}
|
|
.by-form .el-form--inline .el-form-item {
|
|
.by-form .el-form--inline .el-form-item {
|
|
margin-right: 0px;
|
|
margin-right: 0px;
|
|
padding-right: 32px;
|
|
padding-right: 32px;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
</style>
|
|
</style>
|