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"
|
"build:quickapp-webview-union": "uni build -p quickapp-webview-union"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dcloudio/uni-app": "3.0.0-4000720240327002",
|
"@dcloudio/uni-app": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-app-plus": "3.0.0-4000720240327002",
|
"@dcloudio/uni-app-harmony": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-components": "3.0.0-4000720240327002",
|
"@dcloudio/uni-app-plus": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-h5": "3.0.0-4000720240327002",
|
"@dcloudio/uni-components": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-alipay": "3.0.0-4000720240327002",
|
"@dcloudio/uni-h5": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-baidu": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-alipay": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-jd": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-baidu": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-kuaishou": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-harmony": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-lark": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-jd": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-qq": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-kuaishou": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-toutiao": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-lark": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-weixin": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-qq": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-mp-xhs": "3.0.0-4000720240327002",
|
"@dcloudio/uni-mp-toutiao": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-quickapp-webview": "3.0.0-4000720240327002",
|
"@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",
|
"md5-hash": "^1.0.1",
|
||||||
|
"pinia": "^3.0.3",
|
||||||
"pinia-plugin-unistorage": "^0.1.2",
|
"pinia-plugin-unistorage": "^0.1.2",
|
||||||
"vue": "^3.4.21",
|
"vue": "^3.4.21",
|
||||||
"vue-i18n": "^9.1.9"
|
"vue-i18n": "^9.1.9"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@dcloudio/types": "^3.4.8",
|
"@dcloudio/types": "^3.4.8",
|
||||||
"@dcloudio/uni-automator": "3.0.0-4000720240327002",
|
"@dcloudio/uni-automator": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-cli-shared": "3.0.0-4000720240327002",
|
"@dcloudio/uni-cli-shared": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/uni-stacktracey": "3.0.0-4000720240327002",
|
"@dcloudio/uni-stacktracey": "3.0.0-4070620250821001",
|
||||||
"@dcloudio/vite-plugin-uni": "3.0.0-4000720240327002",
|
"@dcloudio/vite-plugin-uni": "3.0.0-4070620250821001",
|
||||||
"@vue/runtime-core": "^3.4.21",
|
"@vue/runtime-core": "^3.4.21",
|
||||||
"@vue/tsconfig": "^0.1.3",
|
"@vue/tsconfig": "^0.1.3",
|
||||||
|
"sass": "^1.93.0",
|
||||||
"vite": "5.2.8"
|
"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",
|
"compileType": "miniprogram",
|
||||||
"libVersion": "3.8.10",
|
"libVersion": "3.8.10",
|
||||||
"packOptions": {
|
"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>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import "@/static/fonts/iconfont.css";
|
|
||||||
|
|
||||||
/* 添加全局样式 */
|
/* 添加全局样式 */
|
||||||
page,
|
page,
|
||||||
body,
|
body,
|
||||||
@ -35,24 +33,4 @@ body,
|
|||||||
.mb12 {
|
.mb12 {
|
||||||
margin-bottom: 12px;
|
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>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
@ -25,5 +25,5 @@ const props = defineProps({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
@ -474,5 +474,5 @@ onBeforeUnmount(() => {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
// 引入样式文件
|
// 引入样式文件
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -40,5 +40,5 @@ const onChange = () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@ -14,5 +14,5 @@ defineProps({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</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 class="order-button-secondary" @click="viewWorkOrder">
|
||||||
查看工单
|
查看工单
|
||||||
</button>
|
</button>
|
||||||
<button v-if="!isMarkCompleted" class="order-button-primary" @click="markCompleted">
|
<button
|
||||||
|
v-if="!isMarkCompleted"
|
||||||
|
class="order-button-primary"
|
||||||
|
@click="markCompleted"
|
||||||
|
>
|
||||||
已完成
|
已完成
|
||||||
</button>
|
</button>
|
||||||
</view>
|
</view>
|
||||||
@ -86,59 +90,61 @@
|
|||||||
import { ref, onMounted, nextTick } from "vue";
|
import { ref, onMounted, nextTick } from "vue";
|
||||||
import { SCROLL_TO_BOTTOM } from "@/constant/constant";
|
import { SCROLL_TO_BOTTOM } from "@/constant/constant";
|
||||||
|
|
||||||
|
import {
|
||||||
import { createWorkOrder, workOrderTypeListForBiz } from "@/request/api/OrderApi";
|
createWorkOrder,
|
||||||
const workOrderTypeId = ref('')
|
workOrderTypeListForBiz,
|
||||||
const workOrderTypeName = ref('')
|
} from "@/request/api/OrderApi";
|
||||||
const roomId = ref('')
|
const workOrderTypeId = ref("");
|
||||||
|
const workOrderTypeName = ref("");
|
||||||
|
const roomId = ref("");
|
||||||
const contactName = ref("");
|
const contactName = ref("");
|
||||||
const contactPhone = ref("");
|
const contactPhone = ref("");
|
||||||
const isCallSuccess = ref(false); // 呼叫成功状态
|
const isCallSuccess = ref(false); // 呼叫成功状态
|
||||||
const workOrderId = ref(0); // 工单ID
|
const workOrderId = ref(0); // 工单ID
|
||||||
const workOrderTypeList = ref([])
|
const workOrderTypeList = ref([]);
|
||||||
const workOrderTypeListSelectData = ref([])
|
const workOrderTypeListSelectData = ref([]);
|
||||||
const isMarkCompleted = ref(false)
|
const isMarkCompleted = ref(false);
|
||||||
|
|
||||||
const changeWorkOrderType = (index) => {
|
const changeWorkOrderType = (index) => {
|
||||||
if (index < 0 || index >= workOrderTypeListSelectData.value.length) {
|
if (index < 0 || index >= workOrderTypeListSelectData.value.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const item = workOrderTypeList.value[index]
|
const item = workOrderTypeList.value[index];
|
||||||
console.log("item:", item)
|
console.log("item:", item);
|
||||||
workOrderTypeId.value = item.id
|
workOrderTypeId.value = item.id;
|
||||||
workOrderTypeName.value = item.workOrderTypeName
|
workOrderTypeName.value = item.workOrderTypeName;
|
||||||
}
|
};
|
||||||
|
|
||||||
const handleCall = async () => {
|
const handleCall = async () => {
|
||||||
// 验证输入
|
// 验证输入
|
||||||
if (!roomId.value.trim()) {
|
if (!roomId.value.trim()) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '请填写房间号',
|
title: "请填写房间号",
|
||||||
icon: 'none',
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!contactName.value.trim()) {
|
if (!contactName.value.trim()) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '请填写联系人',
|
title: "请填写联系人",
|
||||||
icon: 'none',
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!contactPhone.value.trim()) {
|
if (!contactPhone.value.trim()) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '请填写联系电话',
|
title: "请填写联系电话",
|
||||||
icon: 'none',
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendCreateWorkOrder()
|
sendCreateWorkOrder();
|
||||||
};
|
};
|
||||||
|
|
||||||
/// 创建工单
|
/// 创建工单
|
||||||
@ -159,52 +165,52 @@ const sendCreateWorkOrder = async () => {
|
|||||||
isCallSuccess.value = true;
|
isCallSuccess.value = true;
|
||||||
|
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '工单创建成功',
|
title: "工单创建成功",
|
||||||
icon: 'success',
|
icon: "success",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: res.message || '创建工单失败',
|
title: res.message || "创建工单失败",
|
||||||
icon: 'none',
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('创建工单失败:', error);
|
console.error("创建工单失败:", error);
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '网络错误,请重试',
|
title: "网络错误,请重试",
|
||||||
icon: 'none',
|
icon: "none",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
/// 获取工单类型
|
/// 获取工单类型
|
||||||
const getWorkOrderType = async () => {
|
const getWorkOrderType = async () => {
|
||||||
const res = await workOrderTypeListForBiz()
|
const res = await workOrderTypeListForBiz();
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
workOrderTypeList.value = res.data
|
workOrderTypeList.value = res.data;
|
||||||
workOrderTypeList.value.forEach((item, index) => {
|
workOrderTypeList.value.forEach((item, index) => {
|
||||||
workOrderTypeListSelectData.value.push({
|
workOrderTypeListSelectData.value.push({
|
||||||
value: index,
|
value: index,
|
||||||
text: item.workOrderTypeName,
|
text: item.workOrderTypeName,
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
|
|
||||||
if (workOrderTypeList.value.length > 0) {
|
if (workOrderTypeList.value.length > 0) {
|
||||||
workOrderTypeId.value = workOrderTypeList.value[0].id
|
workOrderTypeId.value = workOrderTypeList.value[0].id;
|
||||||
workOrderTypeName.value = workOrderTypeList.value[0].workOrderTypeName
|
workOrderTypeName.value = workOrderTypeList.value[0].workOrderTypeName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
// 查看工单
|
// 查看工单
|
||||||
const viewWorkOrder = () => {
|
const viewWorkOrder = () => {
|
||||||
console.log("查看工单:", workOrderId.value);
|
console.log("查看工单:", workOrderId.value);
|
||||||
// 这里可以跳转到工单详情页面
|
// 这里可以跳转到工单详情页面
|
||||||
uni.navigateTo({
|
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 = () => {
|
const markCompleted = () => {
|
||||||
console.log("标记工单已完成:", workOrderId.value);
|
console.log("标记工单已完成:", workOrderId.value);
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '确认完成',
|
title: "确认完成",
|
||||||
content: '确认标记此工单为已完成吗?',
|
content: "确认标记此工单为已完成吗?",
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
isMarkCompleted.value = true
|
isMarkCompleted.value = true;
|
||||||
// 这里可以调用API标记工单完成
|
// 这里可以调用API标记工单完成
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '工单已完成',
|
title: "工单已完成",
|
||||||
icon: 'success',
|
icon: "success",
|
||||||
duration: 2000
|
duration: 2000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -236,15 +242,15 @@ const makePhoneCall = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getWorkOrderType()
|
getWorkOrderType();
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
uni.$emit(SCROLL_TO_BOTTOM, true)
|
uni.$emit(SCROLL_TO_BOTTOM, true);
|
||||||
}, 200)
|
}, 200);
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -3,5 +3,5 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 844 B After Width: | Height: | Size: 844 B |
@ -122,7 +122,7 @@ const viewWorkOrder = () => {
|
|||||||
console.log("查看工单:", workOrderId.value);
|
console.log("查看工单:", workOrderId.value);
|
||||||
// 这里可以跳转到工单详情页面
|
// 这里可以跳转到工单详情页面
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: `/pages/order/list?id=${workOrderId.value}`,
|
url: `/pages-order/order/list?id=${workOrderId.value}`,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -136,5 +136,5 @@ onMounted(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</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>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -58,49 +58,5 @@ const props = defineProps({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@font-face {
|
@use './styles/index.scss';
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</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"
|
v-for="(item, index) in thumbnails"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<image :src="item.photoUrl" mode="aspectFill"></image>
|
<image
|
||||||
|
class="swiper-item-image"
|
||||||
|
:src="item.photoUrl"
|
||||||
|
mode="aspectFill"
|
||||||
|
></image>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
|
|
||||||
@ -43,7 +47,7 @@
|
|||||||
:id="`thumbnail-${index}`"
|
:id="`thumbnail-${index}`"
|
||||||
@click="handleThumbnailClick(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>
|
<text>{{ thumb.photoName }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -155,5 +159,5 @@ const handleSwiperChange = (e) => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</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>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -42,5 +42,5 @@ const openMap = () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</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>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import './styles/index.scss';
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
.module-title {
|
.module-title {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-family: PingFang SC, PingFang SC;
|
|
||||||
color: #000;
|
color: #000;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 1;
|
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>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -75,5 +75,5 @@ const handleOpenPrivacyContract = () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import './styles/index.scss'
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
@ -17,5 +17,5 @@ defineProps({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
@ -7,5 +7,5 @@
|
|||||||
<script setup></script>
|
<script setup></script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</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>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
@ -59,5 +59,5 @@ const increase = () => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
@ -25,5 +25,5 @@ defineProps({
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@import "./styles/index.scss";
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
@ -7,13 +7,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
const tags = [
|
const tags = ["门票套餐", "民俗活动", "车程路况"];
|
||||||
'门票套餐',
|
|
||||||
'民俗活动',
|
|
||||||
'车程路况'
|
|
||||||
];
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped lang="scss">
|
||||||
@import './styles/index.scss';
|
@use "./styles/index.scss";
|
||||||
</style>
|
</style>
|
||||||