emcp/frontend/src/views/lightSetting/index.vue
2026-05-18 12:39:57 +08:00

161 lines
3.8 KiB
Vue

<script setup lang="ts">
import { ref, reactive, watch } from 'vue'
import type { FormInstance } from 'element-plus'
const formRef = ref<FormInstance>()
// 表单数据
const form = reactive({
sleepTime: 180, // 息屏时间(秒)
brightness: 80 // 屏幕亮度(百分比)
})
// 提交保存
const handleSave = async () => {
if (!formRef.value) return
await formRef.value.validate((valid) => {
if (valid) {
console.log('灯光设置数据:', form)
// 这里写接口提交逻辑
alert('灯光设置保存成功!')
}
})
}
</script>
<template>
<div class="light-container">
<div class="light-container-content">
<div class="title">
<span class="title-line"></span>
灯光设置
</div>
<el-form ref="formRef" :model="form" label-width="100px" class="light-form">
<el-form-item label="息屏时间设置" prop="sleepTime">
<el-input v-model.number="form.sleepTime" type="number" min="0">
<template #suffix>
<span class="unit"></span>
</template>
</el-input>
</el-form-item>
<el-form-item label="屏幕亮度" prop="brightness">
<div class="slider-wrap">
<el-slider v-model="form.brightness" :min="0" :max="100" :step="1" style="width: 100%;" />
<span class="brightness-value">{{ form.brightness }}%</span>
</div>
</el-form-item>
</el-form>
</div>
<el-button type="primary" class="save-btn" @click="handleSave">
保存
</el-button>
</div>
</template>
<style scoped lang="scss">
.light-container {
width: 100%;
height: 100%;
padding: 20px;
.light-container-content {
width: 100%;
height: calc(100vh - 230px);
background-color: #ffffff;
padding: 20px 50px;
border-radius: 4px;
box-shadow: 0px 0px 10px rgba(219, 225, 236, 1);
}
.title {
font-size: 18px;
font-weight: 700;
color: #303133;
margin-bottom: 24px;
display: flex;
align-items: center;
.title-line {
display: inline-block;
width: 4px;
height: 14px;
background-color: #409eff;
margin-right: 8px;
font-weight: 700;
}
}
.light-form {
max-width: 600px;
margin-bottom: 24px;
.slider-wrap {
display: flex;
align-items: center;
gap: 16px;
width: 100%;
.brightness-value {
font-size: 16px;
color: #363636;
min-width: 40px;
}
}
.unit {
color: #909399;
}
}
.save-btn {
background-color: #0099ff;
width: 150px;
height: 40px;
font-size: 14px;
margin-top: 30px;
}
}
:deep(.el-form-item--label-right .el-form-item__label) {
text-align: left;
justify-content: flex-start;
color: #787878;
}
:deep(.el-input__inner) {
color: #363636;
min-height: 40px;
}
:deep(.el-slider__bar) {
background-color: #409eff;
}
:deep(.el-slider__button) {
border-color: #409eff;
}
:deep(.el-form-item__label) {
line-height: 40px !important;
}
:deep(.el-slider) {
height: 40px !important;
}
:deep(.el-slider__bar) {
height: 8px !important;
}
:deep(.el-slider__button) {
border-color: #ffffff;
border-width: 3px;
box-shadow: 0px 0px 5px rgb(0, 0, 0, 0.35);
background-color: #0099ff;
}
:deep(.el-slider__runway) {
height: 8px !important;
}
</style>