feat: 新增更多服务弹窗
This commit is contained in:
@@ -19,36 +19,41 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref } from "vue";
|
||||
import { ref } from "vue";
|
||||
import { currentClientType, ClientType } from "@/constant/base";
|
||||
|
||||
const itemList = ref([
|
||||
{
|
||||
icon: "",
|
||||
title: "快速预定",
|
||||
type: "Command.quickBooking",
|
||||
type: "quickBooking",
|
||||
},
|
||||
{
|
||||
icon: "",
|
||||
title: "探索发现",
|
||||
type: "Command.discovery",
|
||||
type: "discovery",
|
||||
},
|
||||
{
|
||||
icon: "",
|
||||
title: "呼叫服务",
|
||||
type: "Command.callService",
|
||||
type: "callService",
|
||||
},
|
||||
{
|
||||
icon: "https://oss.nianxx.cn/mp/static/version_101/home/more.png",
|
||||
title: "更多",
|
||||
type: "Command.more",
|
||||
type: "more",
|
||||
},
|
||||
]);
|
||||
|
||||
const emits = defineEmits(["replySent"]);
|
||||
|
||||
const sendReply = (item) => {
|
||||
emits("replySent", item); // 向父组件传递数据
|
||||
if (item.type === "more") {
|
||||
uni.$emit("SHOW_MORE_POPUP");
|
||||
return;
|
||||
}
|
||||
|
||||
emits("replySent", item);
|
||||
};
|
||||
|
||||
// onMounted(() => {
|
||||
|
||||
99
src/pages/index/components/module/MoreService/index.vue
Normal file
99
src/pages/index/components/module/MoreService/index.vue
Normal file
@@ -0,0 +1,99 @@
|
||||
<template>
|
||||
<uni-popup ref="popup" type="bottom" :safe-area="false">
|
||||
<view class="popup-content border-box pt-12 pl-12 pr-12">
|
||||
<view class="header flex flex-items-center pb-12">
|
||||
<view class="title flex-full font-size-17 color-000 font-500"
|
||||
>更多服务</view
|
||||
>
|
||||
<uni-icons type="close" size="20" color="#CACFD8" @click="close" />
|
||||
</view>
|
||||
|
||||
<view class="list bg-white border-box pl-20 pr-20">
|
||||
<view
|
||||
class="item border-box border-bottom pt-20 pb-20"
|
||||
v-for="(item, index) in list"
|
||||
:key="index"
|
||||
@click="close"
|
||||
>
|
||||
<view class="flex flex-items-center flex-justify-center">
|
||||
<image v-if="item.icon" class="left" :src="item.icon" />
|
||||
<view class="center flex-full">
|
||||
<view class="font-size-16 color-000 line-height-24 font-500">
|
||||
{{ item.title }}
|
||||
</view>
|
||||
<view class="font-size-12 color-A3A3A3 line-height-16">
|
||||
{{ item.content }}
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
class="right border-box font-size-12 color-white line-height-16"
|
||||
>
|
||||
{{ item.btnText }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
|
||||
const popup = ref(null);
|
||||
|
||||
const list = ref([
|
||||
{
|
||||
icon: "https://oss.nianxx.cn/mp/static/version_101/home/ksyd.png",
|
||||
title: "快速预定",
|
||||
content: "预定门票、房间、餐食",
|
||||
btnText: "去预定",
|
||||
type: "quickBooking",
|
||||
},
|
||||
{
|
||||
icon: "https://oss.nianxx.cn/mp/static/version_101/home/tsfx.png",
|
||||
title: "探索发现",
|
||||
content: "发现景点、活动、特色内容",
|
||||
btnText: "去探索",
|
||||
type: "discovery",
|
||||
},
|
||||
{
|
||||
icon: "https://oss.nianxx.cn/mp/static/version_101/home/mddd.png",
|
||||
title: "我的订单",
|
||||
content: "查看门票、住宿、餐饮等订单",
|
||||
btnText: "去查看",
|
||||
type: "myOrder",
|
||||
},
|
||||
{
|
||||
icon: "https://oss.nianxx.cn/mp/static/version_101/home/wdgd.png",
|
||||
title: "我的工单",
|
||||
content: "查看服务工单、进度与处理情况",
|
||||
btnText: "去查看",
|
||||
type: "myWorkOrder",
|
||||
},
|
||||
{
|
||||
icon: "https://oss.nianxx.cn/mp/static/version_101/home/fkyj.png",
|
||||
title: "反馈意见",
|
||||
content: "提交使用问题、建议与需求",
|
||||
btnText: "去反馈",
|
||||
type: "feedback",
|
||||
},
|
||||
]);
|
||||
|
||||
const open = () => {
|
||||
popup.value && popup.value.open();
|
||||
};
|
||||
|
||||
const close = () => {
|
||||
popup.value && popup.value.close();
|
||||
};
|
||||
|
||||
// 接收更多服务
|
||||
uni.$on("SHOW_MORE_POPUP", () => {
|
||||
open();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "./styles/index.scss";
|
||||
</style>
|
||||
@@ -0,0 +1,29 @@
|
||||
.popup-content {
|
||||
background-color: #f5f7fa;
|
||||
border-radius: 15px 15px 0 0;
|
||||
padding-bottom: Max(env(safe-area-inset-bottom), 12px) !important;
|
||||
}
|
||||
|
||||
.list {
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
.item {
|
||||
gap: 20px;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.left {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.right {
|
||||
background-color: #2d91ff;
|
||||
border-radius: 5px;
|
||||
padding: 6px;
|
||||
}
|
||||
@@ -11,6 +11,9 @@
|
||||
@close="handleCalendarClose"
|
||||
@select="handleDateSelect"
|
||||
/>
|
||||
|
||||
<!-- 更多服务 -->
|
||||
<MoreService />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
@@ -20,6 +23,7 @@ import { getUrlParams } from "@/utils/UrlParams";
|
||||
import { useAppStore } from "@/store";
|
||||
import ChatMainList from "./components/chat/ChatMainList/index.vue";
|
||||
import Calender from "@/components/Calender/index.vue";
|
||||
import MoreService from "./components/module/MoreService/index.vue";
|
||||
|
||||
const appStore = useAppStore();
|
||||
|
||||
|
||||
@@ -2,3 +2,7 @@
|
||||
.border {
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.border-bottom {
|
||||
border-bottom: 1px solid #e5e8ee;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,10 @@
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.color-A3A3A3 {
|
||||
color: #a3a3a3;
|
||||
}
|
||||
|
||||
.color-525866 {
|
||||
color: #525866;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
// 行高
|
||||
.line-height-16 {
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.line-height-17 {
|
||||
line-height: 17px;
|
||||
}
|
||||
@@ -18,3 +22,7 @@
|
||||
.line-height-22 {
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.line-height-24 {
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user