123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411 |
- <template>
- <div>
- <el-form-item
- :label-width="labelWidth"
- label="边框"
- >
- <el-input
- v-model="title"
- clearable
- read-only
- placeholder="请选择边框"
- @focus="init"
- >
- <template slot="append">
- <el-button
- size="small"
- type="primary"
- @click="init"
- >
- 选择
- </el-button>
- </template>
- </el-input>
- <BorderSelect
- v-model="config.type"
- ref="BorderSelect"
- />
- </el-form-item>
- <el-form-item
- :label-width="labelWidth"
- label="上边距"
- >
- <el-input-number
- v-model="config.padding[0]"
- class="bs-el-input-number"
- :min="0"
- :step="1"
- />
- </el-form-item>
- <el-form-item
- :label-width="labelWidth"
- label="右边距"
- >
- <el-input-number
- v-model="config.padding[1]"
- class="bs-el-input-number"
- :min="0"
- :step="1"
- />
- </el-form-item>
- <el-form-item
- :label-width="labelWidth"
- label="下边距"
- >
- <el-input-number
- v-model="config.padding[2]"
- class="bs-el-input-number"
- :min="0"
- :step="1"
- />
- </el-form-item>
- <el-form-item
- :label-width="labelWidth"
- label="左边距"
- >
- <el-input-number
- v-model="config.padding[3]"
- class="bs-el-input-number"
- :min="0"
- :step="1"
- />
- </el-form-item>
- <div v-if="config.type">
- <el-form-item
- :label-width="labelWidth"
- label="是否显示标题"
- v-if="config.type!='GcBorder16'"
- >
- <el-switch
- v-model="config.isTitle"
- class="bs-el-switch"
- :active-value="true"
- :inactive-value="false"
- />
- </el-form-item>
- <el-form-item
- v-if="config.isTitle&&config.type!='GcBorder11'"
- :label-width="labelWidth"
- label="标题高度"
- >
- <el-input-number
- v-model="config.titleHeight"
- class="bs-el-input-number"
- :min="0"
- :step="1"
- />
- </el-form-item>
- <el-form-item
- v-if="config.isTitle&&config.type!='GcBorder11'"
- :label-width="labelWidth"
- label="标题字体大小"
- >
- <el-input-number
- v-model="config.fontSize"
- class="bs-el-input-number"
- :min="0"
- :step="1"
- />
- </el-form-item>
- <el-form-item
- v-if="config.isTitle&&config.type!='GcBorder11'"
- :label-width="labelWidth"
- label="标题颜色"
- >
- <el-color-picker
- v-model="config.fontColor"
- popper-class="bs-el-color-picker"
- class="bs-el-color-picker"
- show-alpha
- />
- </el-form-item>
- <!-- <el-form-item
- v-if="config.type=='GcBorder15'"
- :label-width="labelWidth"
- label="外侧边框线宽度"
- >
- <el-input-number
- v-model="borderWidth"
- class="bs-el-input-number"
- :step="1"
- :min="0"
- :max="100000"
- />
- </el-form-item> -->
- <div
- v-for="(setting, settingIndex) in list.setting"
- :key="settingIndex+1"
- >
- <el-form-item
- :label="setting.type=== 'padding' ? '' : setting.label"
- :label-width="labelWidth"
- >
- <el-input
- v-if="setting.type === 'input'"
- v-model="config[setting.field]"
- :placeholder="`请输入${setting.label}`"
- clearable
- />
- <el-input
- v-model="config[setting.field]"
- v-else-if="setting.type === 'background'"
- clearable
- placeholder="请选择图片"
- >
- <template slot="append">
- <el-button
- size="small"
- type="primary"
- @click="initCard"
- >
- 选择
- </el-button>
- </template>
- </el-input>
- <el-select
- v-else-if="setting.type === 'select'"
- v-model="config[setting.field]"
- popper-class="bs-el-select"
- class="bs-el-select"
- :placeholder="`请选择${setting.label}`"
- :multiple="setting.multiple"
- clearable
- >
- <el-option
- v-for="(opt, optIndex) in setting.options"
- :key="optIndex"
- :label="opt.label"
- :value="opt.value"
- />
- </el-select>
- <template v-else-if="setting.type === 'colorSelect'">
- <color-select
- v-model="colorScheme"
- @update="updateColorScheme"
- />
- <div
- style="
- display: flex;
- align-items: center;
- flex-wrap: wrap;
- "
- class="color-picker-box"
- >
- <el-color-picker
- v-for="(colorItem, colorItemIndex) in colors"
- :key="colorItemIndex"
- v-model="setting.value[colorItemIndex]"
- popper-class="bs-el-color-picker"
- show-alpha
- class="start-color"
- />
- <span
- class="el-icon-circle-plus-outline"
- style="color: #007aff; font-size: 20px"
- @click="addColor"
- />
- <span
- v-if="colors.length"
- class="el-icon-remove-outline"
- style="color: #ea0b30; font-size: 20px"
- @click="delColor()"
- />
- </div>
- </template>
- <el-color-picker
- v-else-if="setting.type === 'colorPicker'"
- v-model="config[setting.field]"
- popper-class="bs-el-color-picker"
- class="bs-el-color-picker"
- show-alpha
- />
- <BorderColorSetting
- v-else-if="setting.type === 'gradual'"
- v-model="config[setting.field]"
- />
- <el-input-number
- v-else-if="setting.type === 'inputNumber'"
- v-model="config[setting.field]"
- class="bs-el-input-number"
- :step="setting.step || 1"
- :min="setting.min || 0"
- :max="setting.max || 100000"
- />
- <el-radio-group
- v-else-if="setting.type === 'radio'"
- v-model="config[setting.field]"
- class="bs-el-radio-group"
- >
- <template v-for="(opt, optIndex) in setting.options">
- <el-radio-button
- :key="optIndex"
- :label="opt.value"
- >
- {{ opt.label }}
- </el-radio-button>
- </template>
- </el-radio-group>
- <el-switch
- v-else-if="setting.type === 'switch'"
- v-model="config[setting.field]"
- class="bs-el-switch"
- :active-value="setting.active"
- :inactive-value="setting.inactive"
- />
- <el-slider
- v-else-if="setting.type === 'slider'"
- v-model="config[setting.field]"
- :min="0"
- :max="1"
- :step="0.01"
- />
- <PaddingSetting
- v-else-if="setting.type === 'padding'"
- v-model="config[setting.field]"
- />
- </el-form-item>
- </div>
- <SourceDialog ref="SourceDialog" @getImg='changeImg' />
- </div>
- </div>
- </template>
- <script>
- import _ from 'lodash'
- import plotList from 'data-room-ui/BorderComponents/settingList.js'
- import BorderColorSetting from 'data-room-ui/BigScreenDesign/RightSetting/BorderColorSetting/index.vue'
- import ColorSelect from 'data-room-ui/ColorMultipleSelect/index.vue'
- import BorderSelect from 'data-room-ui/BorderSelect/index.vue'
- import SourceDialog from '../SourceDialog/index.vue'
- export default {
- name: '',
- components: {
- BorderSelect,
- ColorSelect,
- BorderColorSetting,
- SourceDialog
- },
- props: {
- bigTitle:{
- type: String,
- default: ''
- },
- config: {
- type: Object,
- default: () => ({
- type: '',
- titleHeight: 0,
- fontSize: 0,
- h: 0,
- })
- },
- labelWidth: {
- type: String,
- default: '100px'
- }
- },
- watch:{
- // borderWidth:{
- // handler (val) {
- // this.config.borderWidth=val
- // }
- // },
- 'config.type':{
- handler (val) {
- this.config.isTitle=this.list.isTitle
- plotList[Symbol.iterator]=function*(){
- let keys=Object.keys(plotList)
- for(let k of keys){
- yield [k,plotList[k]]
- }
- }
- for(let [key,value] of plotList){
- if(value.padding&&val==value.type){
- this.config.padding=[...value.padding]
- }
- if(value.type==this.config.type){
- value.setting.forEach((item)=>{
- this.$set(this.config,item.field,item.value)
- })
- }
- }
- }
- },
- },
- computed:{
- title:{
- set(){
- this.config.type=''
- this.config.padding=[16,16,16,16]
- },
- get(){
- plotList[Symbol.iterator]=function*(){
- let keys=Object.keys(plotList)
- for(let k of keys){
- yield [k,plotList[k]]
- }
- }
- let name
- for(let [key,value] of plotList){
- if(value.type==this.config.type){
- name=value.name
- }
- }
- return name
- }
- },
- list(){
- plotList[Symbol.iterator]=function*(){
- let keys=Object.keys(plotList)
- for(let k of keys){
- yield [k,plotList[k]]
- }
- }
- let obj={}
- for(let [key,value] of plotList){
- if(value.type==this.config.type){
- obj={setting:value.setting,isTitle:value.isTitle}
- }
- }
- return obj
- }
- },
- data () {
- return {
- // borderWidth:0
- }
- },
- mounted () {
- // if(this.config.borderWidth){
- // this.borderWidth=this.config.borderWidth
- // }
- },
- methods: {
- changeImg(val){
- console.log(val)
- this.$set(this.config,'imgUrl',val.url)
- },
- init(){
- this.$refs.BorderSelect.init()
- },
- initCard(){
- this.$refs.SourceDialog.init()
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- ::v-deep .el-color-picker__trigger {
- border-color: var(--bs-el-border);
- }
- ::v-deep .el-input--suffix .el-input__inner{
- padding-right: 10px !important;
- }
- .color-picker-box{
- ::v-deep .el-color-picker__trigger {
- width: 27px!important;
- }
- }
- </style>
|