Commit 022e49be authored by 郭志伟's avatar 郭志伟

Merge branch 'feat/titleColor' into 'master'

Feat/title color

See merge request !27
parents 637a0a85 fc870e39
<template> <template>
<div>
<div class="color-selector-gradient" v-if="gradient" :class="{ active: showToColor }">
<div class="color-selector"> <div class="color-selector">
<Input class="color-selector-input" v-model="color" placeholder="请输入" @input="change"></Input> <Input class="color-selector-input" v-model="color" placeholder="请输入" @input="change"></Input>
<ColorPicker placement="bottom-end" v-model="color" alpha @on-active-change="change($event)" @on-change="change($event)" /> <ColorPicker placement="bottom-end" v-model="color" :alpha="alpha" @on-active-change="change($event)" @on-change="change($event)" />
</div>
<div class="color-selector-switch" @click="showToColor = !showToColor">
<Icon type="ios-arrow-forward" />
</div>
<div class="color-selector" v-if="showToColor">
<Input class="color-selector-input" v-model="toColor" placeholder="请输入" @input="change"></Input>
<ColorPicker placement="bottom-end" v-model="toColor" :alpha="alpha" @on-active-change="change($event, 'to')" @on-change="change($event, 'to')" />
</div>
</div>
<div class="color-selector" v-else>
<Input class="color-selector-input" v-model="color" placeholder="请输入" @input="change"></Input>
<ColorPicker placement="bottom-end" v-model="color" :alpha="alpha" @on-active-change="change($event)" @on-change="change($event)" />
</div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
props: { props: {
value: String, value: {
type: [String, Array],
default: ''
},
gradient: Boolean,
alpha: {
type: Boolean,
default: true
}
}, },
data() { data() {
return { return {
showToColor: false,
color: this.value || '', color: this.value || '',
toColor: '',
} }
}, },
created() {
console.log(this.color);
},
watch: { watch: {
value(val) { value(val) {
if (Array.isArray(val)) {
this.color = val[0];
this.toColor = val[1];
this.showToColor = true;
} else {
this.color = val; this.color = val;
} }
}, },
showToColor(val) {
if (val && this.toColor) {
this.$emit('input', [this.color, this.toColor]);
} else {
this.$emit('input', this.color);
}
}
},
methods: { methods: {
change(val) { change(val, type) {
console.log('color', val); if (type === 'to') {
this.$emit('input', [this.color, this.toColor]);
} else {
this.$emit('input', val); this.$emit('input', val);
} }
} }
} }
}
</script> </script>
<style lang="less"> <style lang="less">
.color-selector { .color-selector {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
&-gradient {
position: relative;
.color-selector {
padding-left: 28px;
}
&.active {
.color-selector-switch {
position: relative;
top: 0;
&::before {
display: block;
}
.ivu-icon {
transform: rotate(90deg);
position: relative;
}
}
}
}
&-switch {
position: absolute;
top: 5px;
left: 0;
.ivu-icon {
position: absolute;
z-index: 2;
font-size: 16px;
width: 20px;
height: 20px;
line-height: 21px;
text-align: center;
margin-right: 5px;
cursor: pointer;
background-color: #f5f5f5;
}
&::before {
position: absolute;
z-index: 1;
display: none;
content: ' ';
top: 0;
bottom: 0;
left: 10px;
margin: auto;
height: 65px;
width: 16px;
border-color: #e8e8e8;
border-width: 1px 0 1px 1px;
border-style: solid;
}
}
&-input { &-input {
width: 100px !important; width: 100px !important;
flex-basis: 100px !important; flex-basis: 100px !important;
......
...@@ -10,7 +10,7 @@ import Number from '../DynamicForm/component/Number/index.vue'; ...@@ -10,7 +10,7 @@ import Number from '../DynamicForm/component/Number/index.vue';
import FormList from '../DynamicForm/component/FormList/index.vue'; import FormList from '../DynamicForm/component/FormList/index.vue';
import { resizeDiv, getStyle } from '@/service/utils.service'; import { resizeDiv, getStyle } from '@/service/utils.service';
@Component({ components: { Upload, ColorSelector, BaseSelect, Textarea, Number, FormList }, name: 'DynamicForm' }) @Component({ components: { Upload, ColorSelector, BaseSelect, Textarea, Number, FormList }, name: 'DynamicPageForm' })
export default class DynamicPageForm extends Mixins(ContextMenuMixin) { export default class DynamicPageForm extends Mixins(ContextMenuMixin) {
@Getter('pageData') pageData; @Getter('pageData') pageData;
...@@ -31,6 +31,15 @@ export default class DynamicPageForm extends Mixins(ContextMenuMixin) { ...@@ -31,6 +31,15 @@ export default class DynamicPageForm extends Mixins(ContextMenuMixin) {
]; ];
propsSchame: object[] = [ propsSchame: object[] = [
{
key: 'titleBgColor',
name: '标题栏 背景色',
type: 'ColorSelector',
props: {
gradient: true,
alpha: false
}
},
{ {
key: 'showPageBottomTip', key: 'showPageBottomTip',
name: '底部提示', name: '底部提示',
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<h3>基础属性</h3> <h3>基础属性</h3>
<template v-for="(item, index) in propsSchame"> <template v-for="(item, index) in propsSchame">
<FormItem class="Df-component-formitem" :label="item.name" > <FormItem class="Df-component-formitem" :label="item.name" >
<component :is="item.type" :options="item.options" v-model="propsForm[item.key]" :formControl="item.formControl" /> <component :is="item.type" :options="item.options" v-bind="item.props" v-model="propsForm[item.key]" :formControl="item.formControl" />
</FormItem> </FormItem>
</template> </template>
</Form> </Form>
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<h3>基础样式</h3> <h3>基础样式</h3>
<template v-for="(item, index) in commonStyleSchame"> <template v-for="(item, index) in commonStyleSchame">
<FormItem class="Df-component-formitem" :label="item.name" > <FormItem class="Df-component-formitem" :label="item.name" >
<component :is="item.type" :options="item.options" v-model="commonStyleForm[item.key]" /> <component :is="item.type" :options="item.options" v-bind="item.props" v-model="commonStyleForm[item.key]" />
</FormItem> </FormItem>
</template> </template>
</Form> </Form>
......
...@@ -79,9 +79,10 @@ export const defaultState = { ...@@ -79,9 +79,10 @@ export const defaultState = {
page: { page: {
commonStyle: { commonStyle: {
backgroundColor: '#f7f8fa', backgroundColor: '#f7f8fa',
backgroundImage: '' backgroundImage: '',
}, },
props: { props: {
titleBgColor: '#fff',
showPageBottomTip: true, showPageBottomTip: true,
pageBottomTxt: '没有更多啦~', pageBottomTxt: '没有更多啦~',
pageBottomColor: '#fff', pageBottomColor: '#fff',
......
...@@ -8,7 +8,7 @@ const apollo = require('@qg/apollo-nodejs'); ...@@ -8,7 +8,7 @@ const apollo = require('@qg/apollo-nodejs');
const npm = require("npm"); const npm = require("npm");
npm.load(() => { npm.load(() => {
apollo.load({ apollo.load({
appId: 'quantum-block-h5', appId: 'quantum-blocks',
configPath: path.resolve(__dirname, '../config'), configPath: path.resolve(__dirname, '../config'),
}).then(() => { }).then(() => {
const { api, qiniu } = require(path.resolve('./config/apollo.json')); const { api, qiniu } = require(path.resolve('./config/apollo.json'));
......
...@@ -7,7 +7,7 @@ const apollo = require('@qg/apollo-nodejs'); ...@@ -7,7 +7,7 @@ const apollo = require('@qg/apollo-nodejs');
const npm = require("npm"); const npm = require("npm");
npm.load(() => { npm.load(() => {
apollo.load({ apollo.load({
appId: 'quantum-block-h5', appId: 'quantum-blocks',
configPath: path.resolve(__dirname, '../config'), configPath: path.resolve(__dirname, '../config'),
}).then(() => { }).then(() => {
const { api, qiniu } = require(path.resolve('./config/apollo.json')); const { api, qiniu } = require(path.resolve('./config/apollo.json'));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment