6 changed files with 415 additions and 214 deletions
-
3src/assets/styles/variables.scss
-
86src/assets/styles/yxk-admin.scss
-
4src/views/category/descriptionPreview/form.json
-
296src/views/category/descriptionPreview/index.vue
-
135src/views/category/descriptionPreview/module/PreviewForm.vue
-
103src/views/category/descriptionPreview/module/SettingForm.vue
@ -0,0 +1,135 @@ |
|||||
|
<template> |
||||
|
<div class="preview-content des-form"> |
||||
|
<el-row :gutter="4"> |
||||
|
<el-form ref="addOrUpdateForm" :model="addOrUpdateForm" label-width="100px"> |
||||
|
<draggable v-bind="{draggable:'.dragg-item',animation:500}" :disabled="!isDisabled" @update="datadragEnd"> |
||||
|
<el-col v-for="(item,index) in formPreviewData" :key="index" class="dragg-item" :span="item.isFullRow ? 24 : 12"> |
||||
|
<el-form-item :label="item.fieldCnName" :prop="item.fieldName"> |
||||
|
<!-- select --> |
||||
|
<el-select v-if="item.isInputClass === 'select'" v-model="addOrUpdateForm[item.fieldName]" placeholder="" :style="{ width: item.isDisplayWidth+'px'}" :disabled="isDisabled"> |
||||
|
<el-option label="区域二" value="beijing" /> |
||||
|
</el-select> |
||||
|
<!-- text --> |
||||
|
<el-input v-if="item.isInputClass === 'text'" v-model="addOrUpdateForm[item.fieldName]" :style="{ width: item.isDisplayWidth+'px'}" :disabled="isDisabled" /> |
||||
|
<!-- number --> |
||||
|
<el-input v-if="item.isInputClass === 'number'" v-model="addOrUpdateForm[item.fieldName]" type="number" :style="{ width: item.isDisplayWidth+'px'}" :disabled="isDisabled" /> |
||||
|
<!-- date --> |
||||
|
<el-date-picker |
||||
|
v-if="item.isInputClass === 'date'" |
||||
|
v-model="addOrUpdateForm[item.fieldName]" |
||||
|
type="date" |
||||
|
align="right" |
||||
|
format="yyyy-MM-dd" |
||||
|
placeholder="" |
||||
|
:clearable="false" |
||||
|
:style="{ width: item.isDisplayWidth+'px'}" |
||||
|
:disabled="isDisabled" |
||||
|
/> |
||||
|
<!-- popover --> |
||||
|
<el-input v-if="item.isInputClass === 'popover'" v-model="addOrUpdateForm[item.fieldName]" class="input-popover" :style="{ width: item.isDisplayWidth+'px'}" :disabled="isDisabled"> |
||||
|
<i slot="suffix" class="el-input__icon iconfont icon-weibiaoti-2" /> |
||||
|
</el-input> |
||||
|
<!-- textarea --> |
||||
|
<el-input v-if="item.isInputClass === 'textarea'" v-model="addOrUpdateForm[item.fieldName]" type="textarea" rows="3" :style="{ width: item.isDisplayWidth+'px'}" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</draggable> |
||||
|
</el-form> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import formData from '../form.json' |
||||
|
import draggable from 'vuedraggable' |
||||
|
export default { |
||||
|
name: 'PreviewForm', |
||||
|
components: { draggable }, |
||||
|
props: { |
||||
|
isDisabled: { |
||||
|
type: Boolean, |
||||
|
required: true |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
formPreviewData: [], |
||||
|
rules: {}, |
||||
|
addOrUpdateForm: {} |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.formPreviewData = formData |
||||
|
this.editrow() |
||||
|
}, |
||||
|
methods: { |
||||
|
editrow(row) { |
||||
|
this.rules = {} |
||||
|
this.formPreviewData.map(x => { |
||||
|
this.rules[x.prop] = [{ required: true, message: '请输入' + x.label, trigger: 'blur' }] |
||||
|
}) |
||||
|
this.addOrUpdateForm = Object.assign({}, row) |
||||
|
}, |
||||
|
datadragEnd(evt) { |
||||
|
evt.preventDefault() |
||||
|
console.log('拖动前的索引 :' + evt.oldIndex) |
||||
|
console.log('拖动后的索引 :' + evt.newIndex) |
||||
|
// console.log(this.colors)// 拖拽排序后会改变原先数据索引(排序) |
||||
|
// console.log('获取拖拽改变数据索引后,拖动前的索引的元素 :' + |
||||
|
// this.colors[evt.oldIndex]) |
||||
|
// console.log('获取拖拽改变数据索引后,被拖拽的元素 :' + |
||||
|
// this.colors[evt.newIndex]) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.preview-content{ |
||||
|
width: 630px !important; |
||||
|
min-height: calc(100vh - 312px); |
||||
|
padding: 20px 15px 20px 0 !important; |
||||
|
margin-top: 0 !important; |
||||
|
border-radius: 4px; |
||||
|
background-color: #02255F; |
||||
|
::v-deep .el-input__inner{ |
||||
|
width: 100%; |
||||
|
} |
||||
|
::v-deep .el-textarea__inner{ |
||||
|
width: 100%; |
||||
|
color: #3A99FD; |
||||
|
background: #021941; |
||||
|
border: none; |
||||
|
&::placeholder{ |
||||
|
color: #3A99FD !important; |
||||
|
} |
||||
|
&::-webkit-input-placeholder{ |
||||
|
color: #3A99FD !important; |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-input__prefix{ |
||||
|
text-align: right; |
||||
|
right: 5px !important; |
||||
|
} |
||||
|
.input-popover { |
||||
|
::v-deep .el-input__suffix{ |
||||
|
right: 10px; |
||||
|
} |
||||
|
} |
||||
|
::v-deep .el-date-editor{ |
||||
|
.el-input__inner{ |
||||
|
padding-left: 15px; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
// 去除element ui 中el-input type=“number“的上下箭头 |
||||
|
::v-deep input::-webkit-outer-spin-button, |
||||
|
::v-deep input::-webkit-inner-spin-button { |
||||
|
-webkit-appearance: none !important; |
||||
|
} |
||||
|
::v-deep input[type='number'] { |
||||
|
-moz-appearance: textfield !important; |
||||
|
} |
||||
|
.dragg-item{ |
||||
|
cursor: move; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,103 @@ |
|||||
|
<template> |
||||
|
<div class="des-form"> |
||||
|
<el-row :gutter="10"> |
||||
|
<el-form ref="form" :model="form" :rules="rules" size="small" label-width="75px"> |
||||
|
<el-col :span="15"> |
||||
|
<el-form-item label="字段类型" prop="fieldCnName"> |
||||
|
<el-select v-model="form.isDataType" placeholder="" :disabled="isDisabled"> |
||||
|
<!-- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> --> |
||||
|
<el-option label="区域二" value="beijing" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="字段长度" prop="fieldName"> |
||||
|
<el-input v-model="form.fieldName" placeholder="" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="著录形式" prop="isDataType"> |
||||
|
<el-select v-model="form.isDataType" placeholder="" :disabled="isDisabled"> |
||||
|
<!-- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> --> |
||||
|
<el-option label="区域二" value="beijing" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="对应字典" prop="isColumnLength"> |
||||
|
<el-select v-model="form.isDataType" placeholder="" :disabled="isDisabled"> |
||||
|
<!-- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> --> |
||||
|
<el-option label="区域二" value="beijing" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="显示长度" prop="isDefaultValue"> |
||||
|
<el-input v-model="form.isDefaultValue" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="默认值" prop="isDefaultValue"> |
||||
|
<el-input v-model="form.isDefaultValue" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>自动补零</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
<el-col :span="9"> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>显示一整行</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>输入字段</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>必填字段</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>自动生成</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>自动加一</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="checkbox-item"> |
||||
|
<span>值不重复</span> |
||||
|
<el-checkbox v-model="form.type" label="" name="type" :disabled="isDisabled" /> |
||||
|
</el-form-item> |
||||
|
<el-form-item class="input-num" label="位数" prop="num"> |
||||
|
<el-input v-model="form.num" :disabled="isDisabled" /> |
||||
|
<span>位</span> |
||||
|
</el-form-item> |
||||
|
</el-col> |
||||
|
</el-form> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'SettingForm', |
||||
|
components: {}, |
||||
|
props: { |
||||
|
isDisabled: { |
||||
|
type: Boolean, |
||||
|
required: true |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
form: {}, |
||||
|
rules: {} |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods: { |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
.des-form{ |
||||
|
width: 496px; |
||||
|
padding: 20px 38px 20px 20px; |
||||
|
margin-top: 30px; |
||||
|
border-radius: 4px; |
||||
|
background-color: #02255F; |
||||
|
} |
||||
|
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue