feat: 添加发布计划页面UI完成

This commit is contained in:
“DaisyWu” 2025-01-17 10:52:47 +08:00
parent e58a2a1b21
commit 4a6c7475bf
3 changed files with 284 additions and 1 deletions

View File

@ -0,0 +1,281 @@
<route lang="json5" type="page">
{
layout: 'default',
style: {
navigationStyle: 'custom'
}
}
</route>
<template>
<view class="h-[calc(100vh-0px)] flex flex-col">
<TopNavigation title="添加发布计划"></TopNavigation>
<scroll-view class="flex-1 box-border" scroll-y>
<view class="plan-form">
<!-- 计划名称 -->
<view class="form-item">
<view class="form-label">
<text class="required">*</text>
<text>计划名称</text>
</view>
<input
type="text"
v-model="formData.name"
placeholder="智慧屏202501171038843"
class="form-input"
/>
</view>
<!-- 计划描述 -->
<view class="form-item">
<view class="form-label">计划描述</view>
<input
type="text"
v-model="formData.description"
placeholder="请输入"
class="form-input"
/>
</view>
<!-- 播放规则 -->
<view class="form-item">
<view class="form-label">
<text class="required">*</text>
<text>播放规则</text>
</view>
<view class="form-value" @click="handleSelectRule">
<text>每天循环播放</text>
<text class="arrow">></text>
</view>
</view>
<!-- 播放时间与内容 -->
<view class="form-section">
<view class="section-header">
<text class="required">*</text>
<text>播放时间与内容</text>
</view>
<view class="time-content-card">
<view class="time-row">
<text class="label">时段</text>
<text class="value">00:00 23:59</text>
<text class="action-icon"></text>
<text class="delete-icon">🗑</text>
</view>
<view class="content-row">
<text class="label">内容</text>
<text class="value ellipsis">智慧屏节目2024...</text>
</view>
</view>
<view class="add-time-btn" @click="handleAddTime">
<text class="plus-icon">+</text>
<text>添加时段</text>
</view>
</view>
<!-- 关联设备 -->
<view class="form-item">
<view class="form-label">
<text class="required">*</text>
<text>关联设备</text>
</view>
<view class="form-value" @click="handleSelectDevice">
<text class="placeholder">请选择</text>
<text class="arrow">></text>
</view>
</view>
</view>
</scroll-view>
<!-- 底部按钮 -->
<view class="footer">
<button class="submit-btn" @click="handleSubmit">保存并发布</button>
</view>
</view>
</template>
<script setup lang="ts">
import { ref } from 'vue'
//
const formData = ref({
name: '',
description: '',
rule: '每天循环播放',
timeSlots: [],
devices: []
})
//
const handleSelectRule = () => {
//
}
//
const handleAddTime = () => {
//
}
//
const handleSelectDevice = () => {
//
}
//
const handleSubmit = () => {
//
}
</script>
<style lang="scss" scoped>
page {
background-color: #f5f5f5;
}
.plan-form {
margin: 16px;
}
.form-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px;
margin-bottom: 12px;
background: #fff;
border-radius: 8px;
}
.form-label {
display: flex;
align-items: center;
font-size: 15px;
color: #333;
.required {
margin-right: 4px;
color: #ff4d4f;
}
}
.form-input {
flex: 1;
font-size: 14px;
color: #333;
text-align: right;
}
.form-value {
display: flex;
align-items: center;
font-size: 14px;
color: #333;
.placeholder {
color: #999;
}
.arrow {
margin-left: 8px;
color: #ccc;
}
}
.form-section {
padding: 16px;
margin-bottom: 12px;
background: #fff;
border-radius: 8px;
.section-header {
display: flex;
align-items: center;
margin-bottom: 16px;
font-size: 15px;
color: #333;
.required {
margin-right: 4px;
color: #ff4d4f;
}
}
}
.time-content-card {
padding: 12px;
margin-bottom: 12px;
background: #f5f7fa;
border-radius: 4px;
.time-row,
.content-row {
display: flex;
align-items: center;
margin-bottom: 8px;
&:last-child {
margin-bottom: 0;
}
.label {
width: 40px;
font-size: 14px;
color: #666;
}
.value {
flex: 1;
margin: 0 8px;
font-size: 14px;
color: #333;
}
.action-icon,
.delete-icon {
padding: 4px;
color: #999;
}
}
}
.add-time-btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
color: #4080ff;
.plus-icon {
margin-right: 4px;
}
}
.footer {
position: fixed;
right: 0;
bottom: 0;
left: 0;
padding: 16px;
background: #fff;
box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.05);
.submit-btn {
width: 100%;
height: 40px;
font-size: 14px;
line-height: 40px;
color: #fff;
background: #4080ff;
border: none;
border-radius: 4px;
}
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
</style>

View File

@ -100,6 +100,9 @@
const handlePublish = () => {
//
uni.navigateTo({
url: '/pages/info-publish/add-release-plan'
})
}
</script>

View File

@ -64,7 +64,6 @@
.device-tabs {
display: flex;
padding: 4px;
margin: 16px;
background: #fff;
border-radius: 8px;