Files
vpUni/.svn/pristine/da/da41483e3de788a8551f2db07547e4251df7ac96.svn-base
2026-03-09 16:39:03 +08:00

327 lines
6.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="feedback-page">
<!-- 沉浸式状态栏 -->
<view v-if="!isZFB" class="status-bar"></view>
<!-- 顶部导航 -->
<view v-if="!isZFB" class="nav-bar">
<image class="back-icon" src="/static/icons/back.svg" @click="goBack" mode="aspectFit" />
<text class="nav-title">意见反馈</text>
<view class="nav-placeholder"></view>
</view>
<!-- 主要内容区域 -->
<view class="content">
<!-- 反馈类型 -->
<view class="feedback-type-card">
<view class="card-title">
<text class="ri-edit-line title-icon"></text>
<text class="title-text">反馈类型</text>
</view>
<view class="type-list">
<view v-for="(type, index) in feedbackTypes" :key="index" class="type-item"
:class="{ active: selectedType === index }" @click="selectType(index)">
<text class="type-text">{{ type }}</text>
<text v-if="selectedType === index" class="ri-checkbox-circle-fill type-check"></text>
</view>
</view>
</view>
<!-- 反馈内容 -->
<view class="feedback-content-card">
<view class="card-title">
<text class="ri-message-2-line title-icon"></text>
<text class="title-text">反馈内容</text>
</view>
<textarea class="feedback-textarea" v-model="feedbackContent"
placeholder="请详细描述您遇到的问题或建议,我们会认真对待每一条反馈..." maxlength="500" />
<view class="textarea-footer">
<text class="char-count">{{ feedbackContent.length }}/500</text>
</view>
</view>
<!-- 提交按钮 -->
<view class="submit-section">
<button class="submit-btn" @click="submitFeedback">
<text class="btn-text">提交反馈</text>
</button>
</view>
<!-- 温馨提示 -->
<view class="tips-box">
<view class="tips-header">
<text class="ri-error-warning-line tips-icon"></text>
<text class="tips-title">温馨提示</text>
</view>
<view class="tips-content">
<text class="tips-item">• 我们会认真对待每一条反馈,并尽快处理</text>
<text class="tips-item">• 如需紧急处理,建议直接拨打客服电话</text>
<text class="tips-item">• 提交反馈后我们会在1-3个工作日内回复</text>
</view>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
import {
ref
} from 'vue'
import {
Service
} from "@/Service/Service"
import {
inject
} from 'vue';
const isZFB = inject('isZFB');
// 反馈类型
const feedbackTypes = [
'功能建议',
'问题反馈',
'投诉建议',
'其他'
]
// 选中的反馈类型
const selectedType = ref(0)
// 反馈内容
const feedbackContent = ref('')
// 返回
const goBack = () => {
Service.GoPageBack()
}
// 选择反馈类型
const selectType = (index) => {
selectedType.value = index
}
// 提交反馈
const submitFeedback = () => {
if (!feedbackContent.value.trim()) {
uni.showToast({
title: '请输入反馈内容',
icon: 'none'
})
return
}
// 模拟提交
uni.showLoading({
title: '提交中...'
})
setTimeout(() => {
uni.hideLoading()
uni.showToast({
title: '提交成功',
icon: 'success'
})
// 清空表单
feedbackContent.value = ''
selectedType.value = 0
}, 1500)
}
</script>
<style lang="scss" scoped>
.feedback-page {
min-height: 100vh;
background: #F5F5F5;
display: flex;
flex-direction: column;
}
/* 状态栏 */
.status-bar {
background: linear-gradient(135deg, #FF6B00, #FF9500);
height: var(--status-bar-height);
width: 100%;
}
/* 导航栏 */
.nav-bar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 60rpx 24rpx 20rpx 24rpx;
background: linear-gradient(135deg, #FF6B00, #FF9500);
}
.back-icon {
width: 48rpx;
height: 48rpx;
padding: 8rpx;
}
.nav-title {
font-size: 36rpx;
font-weight: 600;
color: #FFFFFF;
}
.nav-placeholder {
width: 48rpx;
}
/* 内容区域 */
.content {
flex: 1;
padding: 32rpx 24rpx;
}
/* 反馈类型卡片 */
.feedback-type-card {
background: #FFFFFF;
border-radius: 24rpx;
padding: 32rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
margin-bottom: 20rpx;
}
.card-title {
display: flex;
align-items: center;
gap: 12rpx;
margin-bottom: 20rpx;
}
.title-icon {
font-size: 32rpx;
color: #FF6B00;
}
.title-text {
font-size: 28rpx;
font-weight: 600;
color: #222222;
}
.type-list {
display: flex;
flex-direction: column;
gap: 12rpx;
}
.type-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 24rpx 20rpx;
background: #F5F5F5;
border-radius: 12rpx;
border: 2rpx solid transparent;
}
.type-item.active {
background: #FFF4E6;
border-color: #FF6B00;
}
.type-text {
font-size: 26rpx;
color: #222222;
}
.type-check {
font-size: 32rpx;
color: #FF6B00;
}
/* 反馈内容卡片 */
.feedback-content-card {
background: #FFFFFF;
border-radius: 24rpx;
padding: 32rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
margin-bottom: 20rpx;
}
.feedback-textarea {
width: 100%;
min-height: 200rpx;
padding: 20rpx;
background: #F5F5F5;
border-radius: 12rpx;
font-size: 26rpx;
color: #222222;
line-height: 1.6;
}
.textarea-footer {
display: flex;
justify-content: flex-end;
margin-top: 12rpx;
}
.char-count {
font-size: 22rpx;
color: #999999;
}
/* 提交按钮 */
.submit-section {
margin-bottom: 20rpx;
}
.submit-btn {
width: 100%;
height: 88rpx;
background: linear-gradient(135deg, #FF6B00, #FF9500);
border-radius: 44rpx;
display: flex;
align-items: center;
justify-content: center;
border: none;
box-shadow: 0 4rpx 16rpx rgba(255, 107, 0, 0.3);
}
.btn-text {
font-size: 32rpx;
font-weight: 600;
color: #FFFFFF;
}
/* 温馨提示 */
.tips-box {
background: #FFF9F0;
border-radius: 16rpx;
padding: 24rpx;
border-left: 4rpx solid #FF9800;
}
.tips-header {
display: flex;
align-items: center;
gap: 8rpx;
margin-bottom: 16rpx;
}
.tips-icon {
font-size: 28rpx;
color: #FF9800;
}
.tips-title {
font-size: 26rpx;
font-weight: 600;
color: #FF9800;
}
.tips-content {
display: flex;
flex-direction: column;
gap: 12rpx;
}
.tips-item {
font-size: 22rpx;
color: #666666;
line-height: 1.6;
}
</style>