vr-uniapp/src/components/model-title/model-title-styles.vue

140 lines
5.5 KiB
Vue
Raw Normal View History

<template>
2024-08-29 07:23:52 +00:00
<div class="w h">
<el-form :model="form" label-width="80">
2024-08-29 07:23:52 +00:00
<card-container>
<div class="mb-12">标题设置</div>
2024-09-25 08:38:26 +00:00
<template v-if="!isEmpty(content.icon_class)">
<el-form-item label="左侧图标">
<div class="flex-col w gap-10">
<el-form-item label="颜色" label-width="40" class="form-item-child-label">
<color-picker v-model="form.icon_color" default-color="#999"></color-picker>
</el-form-item>
2024-09-28 06:40:00 +00:00
<el-form-item label="大小" label-width="40" class="form-item-child-label">
<slider v-model="form.icon_size" :max="100"></slider>
</el-form-item>
2024-09-25 08:38:26 +00:00
</div>
</el-form-item>
</template>
2024-11-06 10:38:00 +00:00
<template v-if="!isEmpty(content.img_src)">
<el-form-item label="图片高度">
<slider v-model="form.img_height" :max="500"></slider>
</el-form-item>
</template>
2024-10-30 06:19:30 +00:00
<el-form-item label="主标题">
<div class="flex-col gap-10 w">
2024-10-30 06:19:30 +00:00
<color-picker v-model="form.title_color" default-color="#000000"></color-picker>
<el-radio-group v-model="form.title_weight">
2024-09-25 08:38:26 +00:00
<el-radio value="500">加粗</el-radio>
<el-radio value="normal">正常</el-radio>
<el-radio value="italic">倾斜</el-radio>
</el-radio-group>
<el-form-item label="字号" label-width="40" class="mb-0 w">
2024-10-30 06:19:30 +00:00
<slider v-model="form.title_size" :max="100"></slider>
2024-09-25 08:38:26 +00:00
</el-form-item>
2024-10-30 06:19:30 +00:00
</div>
</el-form-item>
<template v-if="!isEmpty(content.subtitle)">
<el-form-item label="副标题">
<div class="flex-col gap-10 w">
2024-10-30 06:19:30 +00:00
<color-picker v-model="form.subtitle_color" default-color="#000000"></color-picker>
<el-radio-group v-model="form.subtitle_weight">
<el-radio value="500">加粗</el-radio>
<el-radio value="normal">正常</el-radio>
<el-radio value="italic">倾斜</el-radio>
</el-radio-group>
<el-form-item label="字号" label-width="40" class="mb-0 w">
<slider v-model="form.subtitle_size" :max="100"></slider>
</el-form-item>
</div>
2024-09-25 08:38:26 +00:00
</el-form-item>
2024-10-30 06:19:30 +00:00
<el-form-item label="标题同行">
<el-switch v-model="form.title_line" active-value="1" inactive-value="0" />
</el-form-item>
</template>
</card-container>
2024-08-29 07:23:52 +00:00
<div class="bg-f5 divider-line" />
<card-container>
<div class="mb-12">关键字设置</div>
<el-form-item label="文字颜色">
<color-picker v-model="form.keyword_color" default-color="#000000"></color-picker>
</el-form-item>
<el-form-item label="文字大小">
<slider v-model="form.keyword_size" :max="100"></slider>
</el-form-item>
2024-11-06 09:27:00 +00:00
<el-form-item label="间距">
<slider v-model="form.keyword_spacing" :min="0" :max="50"></slider>
</el-form-item>
</card-container>
2024-08-29 07:23:52 +00:00
<div class="bg-f5 divider-line" />
<card-container>
<div class="mb-12">更多设置</div>
<el-form-item label="按钮颜色">
<color-picker v-model="form.right_color" default-color="#999"></color-picker>
</el-form-item>
<el-form-item label="按钮文字">
<slider v-model="form.right_size" :max="100"></slider>
</el-form-item>
</card-container>
</el-form>
2024-08-29 07:23:52 +00:00
<div class="bg-f5 divider-line" />
<common-styles :value="form.common_style" @update:value="common_styles_update" />
</div>
</template>
<script setup lang="ts">
2024-09-25 08:38:26 +00:00
import { isEmpty } from "lodash";
const props = defineProps({
value: {
type: Object,
default: () => {},
2024-09-25 08:38:26 +00:00
},
content: {
type: Object,
default: () => {},
}
});
const state = reactive({
2024-09-25 08:38:26 +00:00
form: props.value,
});
// 如果需要解构确保使用toRefs
const { form } = toRefs(state);
// 通用样式处理
const common_styles_update = (val: Object) => {
form.value.common_style = val;
};
</script>
<style lang="scss" scoped>
.topic {
:deep(.el-form-item__content) {
align-items: flex-start;
flex-direction: column;
}
}
.connect-line {
width: 0.1rem;
height: 1.6rem;
background: #d8d8d8;
position: relative;
left: 1rem;
// 合并before和after重复代码
&::before,
&::after {
position: absolute;
left: -0.2rem;
content: '';
position: absolute;
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
background: #ddd;
}
&::before {
top: -0.25rem;
}
&::after {
bottom: -0.25rem;
}
}
</style>