Compare commits
12 Commits
4cdff7a594
...
585a0582b8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
585a0582b8 | ||
|
|
5208900166 | ||
|
|
5aa8b42618 | ||
|
|
aa836ca7c4 | ||
|
|
6cee73a135 | ||
|
|
392def8686 | ||
|
|
ae547f7f81 | ||
|
|
cd98772122 | ||
|
|
9f23854ad5 | ||
|
|
0b66462d16 | ||
|
|
d33ad9a9ce | ||
|
|
55fd7c7ee6 |
@ -1,80 +0,0 @@
|
||||
.image-swiper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.swiper-box {
|
||||
overflow: hidden;
|
||||
// 高度和圆角通过内联样式动态设置
|
||||
}
|
||||
|
||||
.swiper-item image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.custom-indicator {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: 8px;
|
||||
z-index: 10;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
border-radius: 50px;
|
||||
padding: 3px 8px;
|
||||
font-size: 8px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.thumbnail-box {
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
right: 12px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.thumbnail-scroll {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.thumbnail-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.thumbnail-item {
|
||||
flex-shrink: 0;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&.active {
|
||||
image {
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.thumbnail-item image {
|
||||
width: 48px;
|
||||
height: 38px;
|
||||
border-radius: 4px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid transparent;
|
||||
transition: all 0.3s ease;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.thumbnail-item text {
|
||||
color: #fff;
|
||||
font-size: 8px;
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
transition: all 0.3s ease;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 48px;
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
// 小程序特有相关: 同时更改manifest.json和 project.config.json文件中的appid;
|
||||
// 所有用户端的配置
|
||||
export const CLIENT_CONFIGS = {
|
||||
// 智念用户端
|
||||
zhinian: {
|
||||
clientId: '2',
|
||||
appId: 'wx5e79df5996572539'
|
||||
},
|
||||
// 朵花用户端
|
||||
duohua: {
|
||||
clientId: '2',
|
||||
appId: 'wx23f86d809ae80259'
|
||||
},
|
||||
// 天沐用户端
|
||||
tianmu: {
|
||||
clientId: '4',
|
||||
appId: 'wx0be424e1d22065a9'
|
||||
}
|
||||
};
|
||||
|
||||
// 获取当前用户端配置
|
||||
const getCurrentConfig = () => {
|
||||
return CLIENT_CONFIGS.zhinian;
|
||||
};
|
||||
|
||||
export const clientId = getCurrentConfig().clientId;
|
||||
export const appId = getCurrentConfig().appId;
|
||||
|
||||
41
package.json
@ -40,33 +40,38 @@
|
||||
"build:quickapp-webview-union": "uni build -p quickapp-webview-union"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dcloudio/uni-app": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-app-plus": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-components": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-h5": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-alipay": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-baidu": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-jd": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-kuaishou": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-lark": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-qq": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-toutiao": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-weixin": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-mp-xhs": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-quickapp-webview": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-app": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-app-harmony": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-app-plus": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-components": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-h5": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-alipay": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-baidu": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-harmony": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-jd": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-kuaishou": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-lark": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-qq": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-toutiao": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-weixin": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-mp-xhs": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-quickapp-webview": "3.0.0-4070620250821001",
|
||||
"glob": "^11.0.3",
|
||||
"md5-hash": "^1.0.1",
|
||||
"pinia": "^3.0.3",
|
||||
"pinia-plugin-unistorage": "^0.1.2",
|
||||
"vue": "^3.4.21",
|
||||
"vue-i18n": "^9.1.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dcloudio/types": "^3.4.8",
|
||||
"@dcloudio/uni-automator": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-cli-shared": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-stacktracey": "3.0.0-4000720240327002",
|
||||
"@dcloudio/vite-plugin-uni": "3.0.0-4000720240327002",
|
||||
"@dcloudio/uni-automator": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-cli-shared": "3.0.0-4070620250821001",
|
||||
"@dcloudio/uni-stacktracey": "3.0.0-4070620250821001",
|
||||
"@dcloudio/vite-plugin-uni": "3.0.0-4070620250821001",
|
||||
"@vue/runtime-core": "^3.4.21",
|
||||
"@vue/tsconfig": "^0.1.3",
|
||||
"sass": "^1.93.0",
|
||||
"vite": "5.2.8"
|
||||
}
|
||||
}
|
||||
|
||||
66
pages.json
@ -1,66 +0,0 @@
|
||||
{
|
||||
"pages": [
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/login/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/chat/ChatMainList",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"app-plus": {
|
||||
"softinputMode": "adjustPan",
|
||||
"bounce": "none",
|
||||
"titleNView": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/chat/ChatQuickAccess",
|
||||
"style": {
|
||||
"navigationBarTitleText": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/order/list",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/order/detail",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/goods/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/webview/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"navigationBarTitleColor": "#000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
"navigationBarTextstyle": "black",
|
||||
"navigationBarTitleText": "",
|
||||
"navigationBarBackgroundcolor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
},
|
||||
"uniIdRouter": {}
|
||||
}
|
||||
@ -1,35 +0,0 @@
|
||||
<template>
|
||||
<view class="chat-other">
|
||||
<text>{{ text }}</text>
|
||||
<slot></slot>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { defineProps } from "vue";
|
||||
defineProps({
|
||||
text: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.chat-other {
|
||||
width: 100%;
|
||||
margin: 6px 0;
|
||||
padding: 0 12px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-width: 100%; // ✅ 限制最大宽度
|
||||
overflow-x: hidden; // ✅ 防止横向撑开
|
||||
|
||||
text {
|
||||
font-family: PingFang SC, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"appid": "wx5e79df5996572539",
|
||||
"appid": "wx0be424e1d22065a9",
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "3.8.10",
|
||||
"packOptions": {
|
||||
|
||||
49
readme.md
@ -1,49 +0,0 @@
|
||||
|
||||
# vue3版本!!!
|
||||
vue2版本已经上线,欢迎下载使用。
|
||||
[https://ext.dcloud.net.cn/plugin?id=13864](https://ext.dcloud.net.cn/plugin?id=13864)
|
||||
|
||||
## uniapp markdown渲染解析.md语法及代码高亮
|
||||
> **组件名:uaMarkdown**
|
||||
> 代码块: `<ua-markdown>`
|
||||
|
||||
|
||||
uaMarkdown组件是基于uniapp+vue3自定义解析markdown语法结构插件、支持代码块高亮,编译兼容H5+小程序端+App端。
|
||||
|
||||
|
||||
### 引入方式
|
||||
|
||||
本组件符合[easycom](https://uniapp.dcloud.io/collocation/pages?id=easycom)规范,只需将本组件`ua-markdown`放在components目录,在页面`template`中即可直接使用。
|
||||
|
||||
|
||||
### 基本用法
|
||||
|
||||
**示例**
|
||||
|
||||
- 基础用法
|
||||
|
||||
```html
|
||||
const mdvalue = '### uniapp markdwon'
|
||||
<ua-markdown :source="mdvalue" />
|
||||
```
|
||||
|
||||
- 去掉代码块行号
|
||||
|
||||
```html
|
||||
<ua-markdown :source="xxx" :showLine="false" />
|
||||
```
|
||||
|
||||
|
||||
### API
|
||||
|
||||
### uaMarkdown Props
|
||||
|
||||
|属性名|类型|默认值|说明|
|
||||
|:-:|:-:|:-:|:-:|
|
||||
|source|String|-| 渲染解析内容 |
|
||||
|showLine|Boolean|true| 是否显示代码块行号 |
|
||||
|
||||
|
||||
### 💝最后
|
||||
|
||||
开发不易,希望各位小伙伴们多多支持下哈~~ ☕️☕️
|
||||
@ -1,26 +0,0 @@
|
||||
import request from "../base/request";
|
||||
|
||||
/// 主页数据
|
||||
function mainPageData(sceneId) {
|
||||
const args = { sceneId : sceneId}
|
||||
return request.post('/hotelBiz/mainScene/mainPageData', args);
|
||||
}
|
||||
|
||||
|
||||
/// 快速预订组件
|
||||
function quickBookingComponent(selectedData) {
|
||||
const args = { selectedData: selectedData }
|
||||
return request.post('/hotelBiz/mainScene/quickBookingComponent', args);
|
||||
}
|
||||
|
||||
/// 探索发现卡片组件
|
||||
function discoveryCradComponent() {
|
||||
return request.get('/hotelBiz/mainScene/discoveryComponent', {});
|
||||
}
|
||||
|
||||
|
||||
export {
|
||||
mainPageData,
|
||||
quickBookingComponent,
|
||||
discoveryCradComponent
|
||||
}
|
||||
@ -15,8 +15,6 @@ onHide(() => {
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@import "@/static/fonts/iconfont.css";
|
||||
|
||||
/* 添加全局样式 */
|
||||
page,
|
||||
body,
|
||||
@ -35,24 +33,4 @@ body,
|
||||
.mb12 {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
// 重置按钮样式
|
||||
.reset-btn {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 1000;
|
||||
background: none;
|
||||
border: none;
|
||||
outline: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
&::after {
|
||||
border: none;
|
||||
content: " ";
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
@ -25,5 +25,5 @@ const props = defineProps({
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
@ -474,5 +474,5 @@ onBeforeUnmount(() => {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// 引入样式文件
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -40,5 +40,5 @@ const onChange = () => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -14,5 +14,5 @@ defineProps({
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 844 B After Width: | Height: | Size: 844 B |
@ -67,7 +67,11 @@
|
||||
<button class="order-button-secondary" @click="viewWorkOrder">
|
||||
查看工单
|
||||
</button>
|
||||
<button v-if="!isMarkCompleted" class="order-button-primary" @click="markCompleted">
|
||||
<button
|
||||
v-if="!isMarkCompleted"
|
||||
class="order-button-primary"
|
||||
@click="markCompleted"
|
||||
>
|
||||
已完成
|
||||
</button>
|
||||
</view>
|
||||
@ -86,59 +90,61 @@
|
||||
import { ref, onMounted, nextTick } from "vue";
|
||||
import { SCROLL_TO_BOTTOM } from "@/constant/constant";
|
||||
|
||||
|
||||
import { createWorkOrder, workOrderTypeListForBiz } from "@/request/api/OrderApi";
|
||||
const workOrderTypeId = ref('')
|
||||
const workOrderTypeName = ref('')
|
||||
const roomId = ref('')
|
||||
import {
|
||||
createWorkOrder,
|
||||
workOrderTypeListForBiz,
|
||||
} from "@/request/api/OrderApi";
|
||||
const workOrderTypeId = ref("");
|
||||
const workOrderTypeName = ref("");
|
||||
const roomId = ref("");
|
||||
const contactName = ref("");
|
||||
const contactPhone = ref("");
|
||||
const isCallSuccess = ref(false); // 呼叫成功状态
|
||||
const workOrderId = ref(0); // 工单ID
|
||||
const workOrderTypeList = ref([])
|
||||
const workOrderTypeListSelectData = ref([])
|
||||
const isMarkCompleted = ref(false)
|
||||
const workOrderTypeList = ref([]);
|
||||
const workOrderTypeListSelectData = ref([]);
|
||||
const isMarkCompleted = ref(false);
|
||||
|
||||
const changeWorkOrderType = (index) => {
|
||||
if (index < 0 || index >= workOrderTypeListSelectData.value.length) {
|
||||
return;
|
||||
}
|
||||
const item = workOrderTypeList.value[index]
|
||||
console.log("item:", item)
|
||||
workOrderTypeId.value = item.id
|
||||
workOrderTypeName.value = item.workOrderTypeName
|
||||
}
|
||||
const item = workOrderTypeList.value[index];
|
||||
console.log("item:", item);
|
||||
workOrderTypeId.value = item.id;
|
||||
workOrderTypeName.value = item.workOrderTypeName;
|
||||
};
|
||||
|
||||
const handleCall = async () => {
|
||||
// 验证输入
|
||||
if (!roomId.value.trim()) {
|
||||
uni.showToast({
|
||||
title: '请填写房间号',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
title: "请填写房间号",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (!contactName.value.trim()) {
|
||||
uni.showToast({
|
||||
title: '请填写联系人',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
title: "请填写联系人",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (!contactPhone.value.trim()) {
|
||||
uni.showToast({
|
||||
title: '请填写联系电话',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
title: "请填写联系电话",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
sendCreateWorkOrder()
|
||||
sendCreateWorkOrder();
|
||||
};
|
||||
|
||||
/// 创建工单
|
||||
@ -159,52 +165,52 @@ const sendCreateWorkOrder = async () => {
|
||||
isCallSuccess.value = true;
|
||||
|
||||
uni.showToast({
|
||||
title: '工单创建成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
title: "工单创建成功",
|
||||
icon: "success",
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message || '创建工单失败',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
title: res.message || "创建工单失败",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('创建工单失败:', error);
|
||||
console.error("创建工单失败:", error);
|
||||
uni.showToast({
|
||||
title: '网络错误,请重试',
|
||||
icon: 'none',
|
||||
duration: 2000
|
||||
title: "网络错误,请重试",
|
||||
icon: "none",
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/// 获取工单类型
|
||||
const getWorkOrderType = async () => {
|
||||
const res = await workOrderTypeListForBiz()
|
||||
const res = await workOrderTypeListForBiz();
|
||||
if (res.code === 0) {
|
||||
workOrderTypeList.value = res.data
|
||||
workOrderTypeList.value = res.data;
|
||||
workOrderTypeList.value.forEach((item, index) => {
|
||||
workOrderTypeListSelectData.value.push({
|
||||
value: index,
|
||||
text: item.workOrderTypeName,
|
||||
})
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
if (workOrderTypeList.value.length > 0) {
|
||||
workOrderTypeId.value = workOrderTypeList.value[0].id
|
||||
workOrderTypeName.value = workOrderTypeList.value[0].workOrderTypeName
|
||||
workOrderTypeId.value = workOrderTypeList.value[0].id;
|
||||
workOrderTypeName.value = workOrderTypeList.value[0].workOrderTypeName;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 查看工单
|
||||
const viewWorkOrder = () => {
|
||||
console.log("查看工单:", workOrderId.value);
|
||||
// 这里可以跳转到工单详情页面
|
||||
uni.navigateTo({
|
||||
url: `/pages/order/list?id=${workOrderId.value}`
|
||||
url: `/pages-order/order/list?id=${workOrderId.value}`,
|
||||
});
|
||||
};
|
||||
|
||||
@ -212,19 +218,19 @@ const viewWorkOrder = () => {
|
||||
const markCompleted = () => {
|
||||
console.log("标记工单已完成:", workOrderId.value);
|
||||
uni.showModal({
|
||||
title: '确认完成',
|
||||
content: '确认标记此工单为已完成吗?',
|
||||
title: "确认完成",
|
||||
content: "确认标记此工单为已完成吗?",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
isMarkCompleted.value = true
|
||||
isMarkCompleted.value = true;
|
||||
// 这里可以调用API标记工单完成
|
||||
uni.showToast({
|
||||
title: '工单已完成',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
title: "工单已完成",
|
||||
icon: "success",
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@ -236,15 +242,15 @@ const makePhoneCall = () => {
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
getWorkOrderType()
|
||||
getWorkOrderType();
|
||||
nextTick(() => {
|
||||
setTimeout(() => {
|
||||
uni.$emit(SCROLL_TO_BOTTOM, true)
|
||||
}, 200)
|
||||
uni.$emit(SCROLL_TO_BOTTOM, true);
|
||||
}, 200);
|
||||
});
|
||||
})
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -3,5 +3,5 @@
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 844 B After Width: | Height: | Size: 844 B |
@ -122,7 +122,7 @@ const viewWorkOrder = () => {
|
||||
console.log("查看工单:", workOrderId.value);
|
||||
// 这里可以跳转到工单详情页面
|
||||
uni.navigateTo({
|
||||
url: `/pages/order/list?id=${workOrderId.value}`,
|
||||
url: `/pages-order/order/list?id=${workOrderId.value}`,
|
||||
});
|
||||
};
|
||||
|
||||
@ -136,5 +136,5 @@ onMounted(() => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 764 B |
@ -175,5 +175,5 @@ defineExpose({
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -58,49 +58,5 @@ const props = defineProps({
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@font-face {
|
||||
font-family: znicons;
|
||||
src: url("@/static/fonts/znicons.ttf");
|
||||
}
|
||||
|
||||
// 使用须知样式
|
||||
.use-notice {
|
||||
margin: 16px 0;
|
||||
}
|
||||
|
||||
.use-notice-content {
|
||||
.module-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
padding: 12px 0;
|
||||
|
||||
.module-icon {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin-right: 8px;
|
||||
flex-shrink: 0;
|
||||
|
||||
.module-title {
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
word-wrap: break-word;
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.module-desc {
|
||||
flex: 1;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
.border-bottom {
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
}
|
||||
@use './styles/index.scss';
|
||||
</style>
|
||||
45
src/components/GoodDetail/styles/index.scss
Normal file
@ -0,0 +1,45 @@
|
||||
@font-face {
|
||||
font-family: znicons;
|
||||
src: url("@/static/fonts/znicons.ttf");
|
||||
}
|
||||
|
||||
// 使用须知样式
|
||||
.use-notice {
|
||||
margin: 16px 0;
|
||||
}
|
||||
|
||||
.use-notice-content {
|
||||
.module-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
flex-direction: column;
|
||||
padding: 12px 0;
|
||||
|
||||
.module-icon {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin-right: 8px;
|
||||
flex-shrink: 0;
|
||||
|
||||
.module-title {
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
word-wrap: break-word;
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.module-desc {
|
||||
flex: 1;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
line-height: 1.5;
|
||||
margin-top: 4px;
|
||||
}
|
||||
}
|
||||
.border-bottom {
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
@ -14,7 +14,11 @@
|
||||
v-for="(item, index) in thumbnails"
|
||||
:key="index"
|
||||
>
|
||||
<image :src="item.photoUrl" mode="aspectFill"></image>
|
||||
<image
|
||||
class="swiper-item-image"
|
||||
:src="item.photoUrl"
|
||||
mode="aspectFill"
|
||||
></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
|
||||
@ -43,7 +47,7 @@
|
||||
:id="`thumbnail-${index}`"
|
||||
@click="handleThumbnailClick(index)"
|
||||
>
|
||||
<image :src="thumb.photoUrl" mode="aspectFill"></image>
|
||||
<image class="thumbnail-image" :src="thumb.photoUrl" mode="aspectFill"></image>
|
||||
<text>{{ thumb.photoName }}</text>
|
||||
</view>
|
||||
</view>
|
||||
@ -155,5 +159,5 @@ const handleSwiperChange = (e) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
80
src/components/ImageSwiper/styles/index.scss
Normal file
@ -0,0 +1,80 @@
|
||||
.image-swiper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.swiper-box {
|
||||
overflow: hidden;
|
||||
// 高度和圆角通过内联样式动态设置
|
||||
}
|
||||
|
||||
.swiper-item .swiper-item-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.custom-indicator {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
right: 8px;
|
||||
z-index: 10;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
border-radius: 50px;
|
||||
padding: 3px 8px;
|
||||
font-size: 8px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.thumbnail-box {
|
||||
position: absolute;
|
||||
left: 12px;
|
||||
right: 12px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.thumbnail-scroll {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.thumbnail-list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.thumbnail-item {
|
||||
flex-shrink: 0;
|
||||
text-align: center;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&.active {
|
||||
.thumbnail-image {
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.thumbnail-item .thumbnail-image {
|
||||
width: 48px;
|
||||
height: 38px;
|
||||
border-radius: 4px;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid transparent;
|
||||
transition: all 0.3s ease;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.thumbnail-item text {
|
||||
color: #fff;
|
||||
font-size: 8px;
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
transition: all 0.3s ease;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 48px;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
@ -48,5 +48,5 @@ const openMap = () => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -42,5 +42,5 @@ const openMap = () => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
@ -15,5 +15,5 @@ defineProps({
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import './styles/index.scss';
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -6,7 +6,6 @@
|
||||
|
||||
.module-title {
|
||||
font-size: 18px;
|
||||
font-family: PingFang SC, PingFang SC;
|
||||
color: #000;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 917 B After Width: | Height: | Size: 917 B |
@ -48,5 +48,5 @@ const orderStatusText = computed(() => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -75,5 +75,5 @@ const handleOpenPrivacyContract = () => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import './styles/index.scss'
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
@ -17,5 +17,5 @@ defineProps({
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
@ -7,5 +7,5 @@
|
||||
<script setup></script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 494 B After Width: | Height: | Size: 494 B |
@ -36,5 +36,5 @@ const handleClick = (type) => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
@ -59,5 +59,5 @@ const increase = () => {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@ -25,5 +25,5 @@ defineProps({
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "./styles/index.scss";
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
@ -7,13 +7,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const tags = [
|
||||
'门票套餐',
|
||||
'民俗活动',
|
||||
'车程路况'
|
||||
];
|
||||
const tags = ["门票套餐", "民俗活动", "车程路况"];
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@import './styles/index.scss';
|
||||
<style scoped lang="scss">
|
||||
@use "./styles/index.scss";
|
||||
</style>
|
||||