Files
YGChatCS/src/components/Feedback/index.vue
duanshuwen 79b101978a style: replace legacy padding classes with inline pixel values
Remove the unused padding.scss stylesheet and its import from the main SCSS entrypoint. Update all legacy padding utility class names across every Vue component to use inline pixel-based utility classes (such as replacing `pl-12` with `pl-[12px]`). Also clean up extraneous whitespace and line breaks in component templates for improved readability.
2026-07-24 16:36:44 +08:00

113 lines
3.7 KiB
Vue

<template>
<view class="create-service-order">
<view class="w-full bg-white border-box border-ff overflow-hidden rounded-20">
<view class="border-box order-header w-vw flex flex-items-center flex-justify-between bg-[#F0F8F3]">
<text class="font-size-18 font-500 color-171717 text-left ml-[12px]">
{{ isCallSuccess ? "反馈已创建" : "反馈意见" }}
</text>
<image class="header-icon" src="https://oss.nianxx.cn/mp/static/version_101/home/feedback.png" />
</view>
<view v-if="!isCallSuccess" class="border-box p-[12px]">
<view
class="bg-[#f5f7fa] border-box flex flex-items-center p-[12px] rounded-10 font-size-14 color-171717 mb-12">
<text class="font-500 line-height-22 mr-20">联系电话</text>
<input placeholder="请填写联系电话" v-model="contactPhone" />
</view>
<view class="bg-[#f5f7fa] border-box p-[12px] rounded-10 font-size-14 font-500 color-171717 mb-12">
<view class="font-500 line-height-22 mb-12">意见内容</view>
<textarea class="h-80" placeholder="请输入反馈意见" placeholder-class="font-size-14 font-400" maxlength="100"
v-model="contactText" />
</view>
<view
class="btn rounded-50 color-white bg-gradient-to-r from-[#0CCD58] to-[#4de4ff] flex flex-items-center flex-justify-center"
@click="handleCall">
立即提交
</view>
</view>
<view v-else class="border-box left flex-full p-[12px]">
<view class="font-size-12 color-525866 line-height-20 mb-4">联系方式: {{ contactPhone }}</view>
<view class="font-size-12 color-525866 line-height-20 ellipsis-2">意见内容: {{ contactText }}</view>
</view>
<view class="footer-help flex flex-items-center pl-[12px] mb-12">
<image class="help-icon mr-4" src="./images/icon_volume.png" />
<text class="font-size-12 font-500 color-FA7319">
{{ appName }}收到您的意见将第一时间为您处理!
</text>
</view>
</view>
</view>
</template>
<script setup>
import { ref, onMounted, nextTick, computed } from "vue";
import { SCROLL_TO_BOTTOM } from "@/constant/constant";
import { getCurrentConfig } from "@/constant/base";
import { submitFeedback } from "@/request/api/FeedbackApi";
const contactPhone = ref("");
const contactText = ref("");
const isCallSuccess = ref(false); // 呼叫成功状态
const appName = computed(() => getCurrentConfig().name);
const handleCall = async () => {
if (!contactPhone.value.trim()) {
uni.showToast({ title: "请填写联系电话", icon: "none" });
return;
}
if (!contactText.value.trim()) {
uni.showToast({ title: "请填写意见内容", icon: "none" });
return;
}
sendFeedback();
};
/// 提交反馈意见
const sendFeedback = async () => {
try {
const res = await submitFeedback({
userPhone: contactPhone.value,
content: contactText.value,
});
if (res.code === 0) {
// 设置成功状态
isCallSuccess.value = true;
uni.showToast({
title: "反馈意见成功",
icon: "success",
});
} else {
uni.showToast({
title: res.message || "反馈意见失败",
icon: "none",
});
}
} catch (error) {
console.error("反馈意见失败:", error);
uni.showToast({
title: "网络错误,请重试",
icon: "none",
});
}
};
onMounted(() => {
nextTick(() => {
setTimeout(() => {
uni.$emit(SCROLL_TO_BOTTOM, true);
}, 200);
});
});
</script>
<style scoped lang="scss">
@import "./styles/index.scss";
</style>