Browse Source

著录界面修改

master
xuhuajiao 3 years ago
parent
commit
22d8bde665
  1. 3
      src/assets/styles/variables.scss
  2. 88
      src/assets/styles/yxk-admin.scss
  3. 4
      src/views/category/descriptionPreview/form.json
  4. 296
      src/views/category/descriptionPreview/index.vue
  5. 135
      src/views/category/descriptionPreview/module/PreviewForm.vue
  6. 103
      src/views/category/descriptionPreview/module/SettingForm.vue

3
src/assets/styles/variables.scss

@ -27,6 +27,8 @@ $mainContainerBg: #021941;
$mainContainerBorder: 1px solid #113D72;
$inputBorder: #339CFF;
$desPreviewColor: #3A99FD;
:export {
menuText: $menuText;
@ -42,4 +44,5 @@ $inputBorder: #339CFF;
mainContainerBorder: $mainContainerBorder;
mainContainerBg: $mainContainerBg;
inputBorder: $inputBorder;
desPreviewColor: $desPreviewColor;
}

88
src/assets/styles/yxk-admin.scss

@ -197,7 +197,7 @@
margin-bottom: 20px;
.el-button{
margin-left: 0;
background-color: #3A99FD;
background-color: $desPreviewColor;
}
}
@ -570,12 +570,9 @@
}
.el-form{
.el-form-item__label{
line-height: 36px;
color: $subMenuActiveText;
}
.el-input__inner{
height: 36px;
line-height: 36px;
color: #fff;
border: 1px solid $subMenuActiveText;
background-color: transparent !important;
@ -625,11 +622,24 @@
padding: 8px 28px;
}
.el-button--primary{
background-color: #3A99FD;
background-color: $desPreviewColor;
}
}
}
.el-form{
.el-form-item__label{
line-height: 36px;
}
.el-input__inner{
height: 36px;
line-height: 36px;
}
.el-select {
height: 36px;
}
}
// el-tree 最终节点不显示箭头
.is-leaf::before {
color: transparent;
@ -729,4 +739,70 @@
background: url(~@/assets/images/avatar.png) no-repeat #fff;
background-size: cover;
overflow: hidden;
}
}
// 著录界面表单
.des-form{
.el-form-item__label{
font-weight: normal;
color: $desPreviewColor;
}
.el-input__inner{
width: 200px;
color: $desPreviewColor;
background: #021941 !important;
border: none;
&::placeholder{
color: $desPreviewColor !important;
}
&::-webkit-input-placeholder{
color: $desPreviewColor !important;
}
}
.el-input__icon{
color: $desPreviewColor !important;
}
.checkbox-item{
height: 36px;
line-height: 36px;
text-align: right;
.el-form-item__content{
margin-left: 0 !important;
}
.el-checkbox__input.is-disabled .el-checkbox__inner{
background-color: transparent;
border-color: $subMenuActiveText;
&::after{
border-color: $desPreviewColor;
}
}
span{
// margin-right: 10px;
color: $desPreviewColor;
}
}
.input-num{
display: flex;
justify-content: flex-end;
.el-input__inner{
width: 50px;
}
.el-form-item__content{
display: flex;
justify-content: flex-start;
margin-left: 0 !important;
.el-input{
width: 60px;
}
}
span{
color: $desPreviewColor;
line-height: 36px;
}
}
}

4
src/views/category/descriptionPreview/form.json

@ -75,7 +75,7 @@
"fieldName": "th",
"fieldCnName": "题号",
"isInputClass": "textarea",
"isDisplayWidth": 516,
"isDisplayWidth": 510,
"isFullRow": 1,
"isRequired": 0
},
@ -174,7 +174,7 @@
"fieldName": "bz",
"fieldCnName": "备注",
"isInputClass": "text",
"isDisplayWidth": 516,
"isDisplayWidth": 510,
"isFullRow": 1,
"isRequired": 0
}]

296
src/views/category/descriptionPreview/index.vue

@ -12,143 +12,83 @@
</li>
</ul>
<div class="des-title">
<p>隐藏字段 <i class="el-icon-arrow-down" /></p>
<p @click="isCollaspeHiddenFields = !isCollaspeHiddenFields">隐藏字段 <i :class="['el-icon-arrow-down', isCollaspeHiddenFields ?'el-icon-arrow-down':'arrow-up']" /></p>
</div>
<ul class="des-fields">
<li v-for="(item,index) in showFields" v-show="index>13" :key="index">
<el-tooltip class="item" effect="dark" :content="item.fieldCnName" :enterable="false" placement="top">
<p>{{ item.fieldCnName }}</p>
</el-tooltip>
</li>
</ul>
<!-- 收起展开 -->
<el-collapse-transition>
<ul v-show="isCollaspeHiddenFields" class="des-fields">
<li v-for="(item,index) in showFields" v-show="index>13" :key="index">
<el-tooltip class="item" effect="dark" :content="item.fieldCnName" :enterable="false" placement="top">
<p>{{ item.fieldCnName }}</p>
</el-tooltip>
</li>
</ul>
</el-collapse-transition>
<div class="des-set-btn">
<el-button type="primary" icon="el-icon-edit">修改</el-button>
<el-button class="des-set-sort" type="primary" icon="iconfont icon-paixu-fanbai">排序</el-button>
</div>
<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>
<!-- <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 />
</el-form-item>
<el-form-item label="著录形式" prop="isDataType">
<el-select v-model="form.isDataType" placeholder="" disabled>
<!-- <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>
<!-- <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 />
</el-form-item>
<el-form-item label="默认值" prop="isDefaultValue">
<el-input v-model="form.isDefaultValue" disabled />
</el-form-item>
<el-form-item class="checkbox-item">
<span>自动补零</span>
<el-checkbox v-model="form.type" label="" name="type" disabled />
</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 />
</el-form-item>
<el-form-item class="checkbox-item">
<span>输入字段</span>
<el-checkbox v-model="form.type" label="" name="type" disabled />
</el-form-item>
<el-form-item class="checkbox-item">
<span>必填字段</span>
<el-checkbox v-model="form.type" label="" name="type" disabled />
</el-form-item>
<el-form-item class="checkbox-item">
<span>自动生成</span>
<el-checkbox v-model="form.type" label="" name="type" disabled />
</el-form-item>
<el-form-item class="checkbox-item">
<span>自动加一</span>
<el-checkbox v-model="form.type" label="" name="type" disabled />
</el-form-item>
<el-form-item class="checkbox-item">
<span>值不重复</span>
<el-checkbox v-model="form.type" label="" name="type" disabled />
</el-form-item>
<el-form-item class="input-num" label="位数" prop="num">
<el-input v-model="form.num" disabled />
<span></span>
</el-form-item>
</el-col>
</el-form>
</el-row>
<el-button type="primary" icon="el-icon-edit" @click="settingFormVisible = true">修改</el-button>
<el-button class="des-set-sort" type="primary" icon="iconfont icon-paixu-fanbai" @click="previewFormVisible = true">排序</el-button>
</div>
<SettingForm :is-disabled="true" />
</div>
<div class="des-preview-right">
<div class="des-title">
<p>界面预览效果</p>
</div>
<div class="preview-content des-form">
<el-row :gutter="4">
<el-form label-width="100px">
<el-col v-for="(item,index) in formPreviewData" :key="index" :span="item.isFullRow ? 24 : 12">
<el-form-item :label="item.fieldCnName" prop="fieldCnName">
<!-- select -->
<el-select v-if="item.isInputClass === 'select'" v-model="item.fieldName" placeholder="" :style="{ width: item.isDisplayWidth+'px'}">
<el-option label="区域二" value="beijing" />
</el-select>
<!-- text -->
<el-input v-if="item.isInputClass === 'text'" v-model="item.fieldName" :style="{ width: item.isDisplayWidth+'px'}" />
<!-- number -->
<el-input v-if="item.isInputClass === 'number'" v-model="item.fieldName" type="number" :style="{ width: item.isDisplayWidth+'px'}" />
<!-- date -->
<el-date-picker v-if="item.isInputClass === 'date'" v-model="item.fieldName" type="date" align="right" format="yyyy 年 MM 月 dd 日" placeholder="" :style="{ width: item.isDisplayWidth+'px'}" />
<!-- popover -->
<el-input v-if="item.isInputClass === 'popover'" v-model="item.fieldName" class="input-popover" :style="{ width: item.isDisplayWidth+'px'}">
<i slot="suffix" class="el-input__icon iconfont icon-weibiaoti-2" />
</el-input>
<!-- textarea -->
<el-input v-if="item.isInputClass === 'textarea'" v-model="item.fieldName" type="textarea" rows="3" :style="{ width: item.isDisplayWidth+'px'}" />
</el-form-item>
</el-col>
</el-form>
</el-row>
</div>
<PreviewForm :is-disabled="false" />
</div>
<!-- 修改字段 -->
<el-dialog :visible="settingFormVisible" :before-close="handleClose" :close-on-click-modal="false" title="修改字段">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<SettingForm :is-disabled="false" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="settingFormVisible = false">保存</el-button>
</div>
</div>
</el-dialog>
<!-- 界面字段预览排序 -->
<el-dialog class="preview-dialog" :visible="previewFormVisible" :before-close="handleClose" :close-on-click-modal="false" title="修改排序">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<i class="drag-tip">提示请通过拖动鼠标来调整当前顺序</i>
<PreviewForm :is-disabled="true" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="previewFormVisible = false">保存</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import data from './data.json'
import formData from './form.json'
import PreviewForm from './module/PreviewForm'
import SettingForm from './module/SettingForm'
export default {
name: 'DescriptionPreview',
components: {},
components: { PreviewForm, SettingForm },
data() {
return {
showFields: [],
form: {},
rules: {},
formPreviewData: [],
value1: ''
isCollaspeHiddenFields: true,
settingFormVisible: false,
previewFormVisible: false
}
},
mounted() {
this.showFields = data
this.formPreviewData = formData
},
methods: {
handleClose(done) {
this.settingFormVisible = false
this.previewFormVisible = false
done()
}
}
}
</script>
@ -161,12 +101,9 @@ export default {
.des-preview-right{
height: calc(100vh - 274px);
padding-right: 10px;
// overflow:hidden;
overflow-y: auto;
}
.des-preview-left{
// width: 510px;
flex: 1;
}
.des-title{
@ -192,6 +129,10 @@ export default {
margin-left: 6px;
background-image: none;
-webkit-text-fill-color: #fff;
transition: all ease-in .5s;
&.arrow-up{
transform:rotate(180deg);
}
}
}
&::before{
@ -249,109 +190,52 @@ export default {
}
}
.des-form{
width: 496px;
padding: 20px 38px 20px 20px;
margin-top: 30px;
border-radius: 4px;
background-color: #02255F;
::v-deep .el-form-item__label{
font-weight: normal;
line-height: 36px;
color: #3A99FD;
}
::v-deep .el-input__inner{
width: 200px;
height: 36px;
line-height: 36px;
color: #3A99FD;
background: #021941;
border: none;
&::placeholder{
color: #3A99FD !important;
}
&::-webkit-input-placeholder{
color: #3A99FD !important;
}
}
::v-deep .el-input__icon{
color: #3A99FD;
}
.checkbox-item{
height: 36px;
line-height: 36px;
text-align: right;
::v-deep .el-form-item__content{
margin-left: 0 !important;
}
::v-deep .el-checkbox__input.is-disabled .el-checkbox__inner{
background-color: transparent;
border-color: #339CFF;
&::after{
border-color: #3A99FD;
}
}
span{
margin-right: 10px;
color: #3A99FD;
}
}
.input-num{
display: flex;
justify-content: flex-end;
::v-deep .el-input__inner{
width: 50px;
}
::v-deep .el-form-item__content{
display: flex;
justify-content: flex-start;
margin-left: 0 !important;
.el-input{
width: 60px;
}
}
span{
color: #3A99FD;
line-height: 36px;
}
}
}
.des-preview-right{
width: 658px;
margin-left: 20px;
.preview-content{
width: 630px;
min-height: calc(100vh - 312px);
padding: 20px 15px 20px 0;
}
.setting-dialog{
.des-form{
width: 100%;
margin-top: 0;
border-radius: 4px;
background-color: #02255F;
padding: 20px 38px 0 20px;
background-color: transparent;
::v-deep .el-select,
::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 .input-num{
.el-input{
margin-right: 10px;
}
}
::v-deep .el-input__prefix{
text-align: right;
right: 5px !important;
}
.input-popover {
::v-deep .el-input__suffix{
right: 10px;
}
}
.preview-dialog{
::v-deep .el-dialog{
width: 680px;
.preview-content{
max-height: calc(100vh - 330px);
overflow: hidden;
overflow-y: auto;
.el-textarea__inner{
border: 1px solid #339cff;
background-color: transparent;
}
}
.el-dialog__header{
width: 420px;
}
}
}
.drag-tip{
display: block;
padding-left: 20px;
padding-bottom: 10px;
font-style: normal;
font-weight: bold;
color: #fff;
}
}
</style>

135
src/views/category/descriptionPreview/module/PreviewForm.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>

103
src/views/category/descriptionPreview/module/SettingForm.vue

@ -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>
Loading…
Cancel
Save