Files
YGChatCS/src/components/Feedback/index.vue

146 lines
4.1 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-EEF8FF"
>
<text class="font-size-18 font-500 color-171717 text-left ml-12">
{{ isCallSuccess ? "反馈已创建" : "反馈意见" }}
</text>
<image
class="header-icon"
src="https://oss.nianxx.cn/mp/static/version_101/home/feedback.png"
/>
</view>
<view v-if="!isCallSuccess" class="order-content border-box p-12">
<view
class="bg-F5F7FA border-box flex flex-items-center p-12 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-12 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-button flex flex-items-center flex-justify-center"
@click="handleCall"
>
立即提交
</view>
</view>
<view v-else class="border-box left flex-full p-12">
<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-12 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 { createWorkOrder } from "@/request/api/OrderApi";
const workOrderTypeId = ref("");
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",
duration: 2000,
});
return;
}
if (!contactText.value.trim()) {
uni.showToast({
title: "请填写意见内容",
icon: "none",
duration: 2000,
});
return;
}
sendCreateWorkOrder();
};
/// 创建工单
const sendCreateWorkOrder = async () => {
try {
const res = await createWorkOrder({
contactName: contactText.value,
contactPhone: contactPhone.value,
workOrderTypeId: workOrderTypeId.value,
});
if (res.code === 0) {
// 设置成功状态
isCallSuccess.value = true;
uni.showToast({
title: "反馈意见成功",
icon: "success",
duration: 2000,
});
} else {
uni.showToast({
title: res.message || "反馈意见失败",
icon: "none",
duration: 2000,
});
}
} catch (error) {
console.error("反馈意见失败:", error);
uni.showToast({
title: "网络错误,请重试",
icon: "none",
duration: 2000,
});
}
};
onMounted(() => {
nextTick(() => {
setTimeout(() => {
uni.$emit(SCROLL_TO_BOTTOM, true);
}, 200);
});
});
</script>
<style scoped lang="scss">
@import "./styles/index.scss";
</style>