diff --git a/.env b/.env
index e974190..490e653 100644
--- a/.env
+++ b/.env
@@ -1,7 +1,7 @@
# ******************** start 开发环境 start ********************
-# VITE_APP_DEV_SERVICE =http://localhost:48080/app-api
-VITE_APP_DEV_SERVICE =http://123.156.228.134:48080/app-api
+VITE_APP_DEV_SERVICE =http://localhost:48080/app-api
+# VITE_APP_DEV_SERVICE =http://123.156.228.134:48080/app-api
# ******************** end 开发环境 end ********************
diff --git a/src/App.vue b/src/App.vue
index d9ad0b8..aa74039 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -16,8 +16,10 @@ onHide(() => {
@import "@/sheep/scss/global.scss";
@import url(@/uni_modules/tm-ui/css/remixicon.min.css);
+
$theme-green: #06be36;
$theme-blue: #0094ff;
+$theme-gray: #999;
.botder_btn {
border: 1px solid #999;
diff --git a/src/pages.json b/src/pages.json
index a350897..3ecde96 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -87,6 +87,39 @@
}
]
},
+ {
+ "root": "pages/boxes",
+ "pages": [
+ {
+ "path": "apply",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
+ },
+ {
+ "path": "detail",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
+ },
+ {
+ "path": "list",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
+ },
+ {
+ "path": "apply-list",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
+ }
+ ]
+ },
{
"root": "pages/merchant",
"pages": [
@@ -126,6 +159,25 @@
}
]
},
+ {
+ "root": "pages/refund",
+ "pages": [
+ {
+ "path": "apply",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
+ },
+ {
+ "path": "history",
+ "style": {
+ "navigationBarTitleText": "",
+ "disableScroll": true
+ }
+ }
+ ]
+ },
{
"root": "pages/wallet",
"pages": [
diff --git a/src/pages/apply/foreign-items.vue b/src/pages/apply/foreign-items.vue
index e35d08a..17c6731 100644
--- a/src/pages/apply/foreign-items.vue
+++ b/src/pages/apply/foreign-items.vue
@@ -26,7 +26,9 @@ onLoad((options: any) => {
}
});
onShow(() => {
-
+ if (pageRef.value) {
+ pageRef.value.reload(false)
+ }
})
diff --git a/src/pages/boxes/apply-list.vue b/src/pages/boxes/apply-list.vue
new file mode 100644
index 0000000..52eb4e2
--- /dev/null
+++ b/src/pages/boxes/apply-list.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ v.boxesName }}
+
+ 预约成功
+ 预约失败
+ 取消预约
+
+
+
+ 预约时间
+
+ {{ v.bookingDate }} {{ hooks.useTime(v.startTime, "{h}:{i}") }} ~ {{
+ hooks.useTime(v.endTime, "{h}:{i}")
+ }}
+
+
+
+ 提交时间
+
+ {{ hooks.useTime(v.createTime, "") }}
+
+
+
+
+ 取消预约
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/boxes/apply.vue b/src/pages/boxes/apply.vue
new file mode 100644
index 0000000..bddeac2
--- /dev/null
+++ b/src/pages/boxes/apply.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 时间段
+
+
+ {{ v.bxDate }}
+ {{ v.hour }}
+
+
+
+
+ 提交
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/boxes/detail.vue b/src/pages/boxes/detail.vue
new file mode 100644
index 0000000..27cca19
--- /dev/null
+++ b/src/pages/boxes/detail.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ¥{{ state.detail.price }}
+
+ 可容纳{{ state.detail.capacity }}
+
+
+ {{ state.detail.name }}
+
+
+
+
+ 详情
+
+
+
+
+
+ 预定
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/boxes/list.vue b/src/pages/boxes/list.vue
new file mode 100644
index 0000000..bb94ddd
--- /dev/null
+++ b/src/pages/boxes/list.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ v.name }}
+
+
+ ¥{{ v.price }}
+
+
+
+ 可容纳{{ v.capacity }}人
+
+
+
+ {{ hooks.useEnum("boxesBxStatusEnum", v.status.toString()) }}
+
+
+ {{ hooks.useEnum("boxesBxStatusEnum", v.status) }}
+
+
+ {{ hooks.useEnum("boxesBxStatusEnum", v.status) }}
+
+
+
+
+ {{ v.address }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/merchant/components/product-row.vue b/src/pages/merchant/components/product-row.vue
index 23630a5..32eaef0 100644
--- a/src/pages/merchant/components/product-row.vue
+++ b/src/pages/merchant/components/product-row.vue
@@ -65,7 +65,8 @@ const remove = () => {
-
@@ -101,4 +102,8 @@ const remove = () => {
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/pages/merchant/detail.vue b/src/pages/merchant/detail.vue
index 7a0bac0..41e5422 100644
--- a/src/pages/merchant/detail.vue
+++ b/src/pages/merchant/detail.vue
@@ -50,7 +50,6 @@ const getDetail = async () => {
const getShopCar = async () => {
const _pa = { merchantId: state.detailId }
const { data } = await foodApi.getShopCar(_pa)
- console.log(data, "data");
state.carList = data ?? []
state.totPrice = state.carList
@@ -149,7 +148,7 @@ const doVisibleCar = async () => {
state.showCarDialog = true
}
-const doPay = async () => {
+const submitPay = async () => {
try {
if (isEmpty(state.carList)) {
uni.showToast({ title: '请至少购买一件商品', icon: "none" })
@@ -171,6 +170,18 @@ const doPay = async () => {
}
}
+const doPay = async () => {
+ uni.showModal({
+ title: '提示',
+ content: '是否确定购买',
+ confirmColor: '#0094ff',
+ success: async (res) => {
+ if (!res.confirm) return
+ submitPay()
+ }
+ })
+}
+
const getHeight = () => {
const rpx = 480
return `calc(100vh - ${uni.upx2px(rpx)}px)`
@@ -239,7 +250,8 @@ const doFood = () => {
联系食堂
-
+
diff --git a/src/pages/merchant/food.vue b/src/pages/merchant/food.vue
index 1508353..611f7a1 100644
--- a/src/pages/merchant/food.vue
+++ b/src/pages/merchant/food.vue
@@ -107,7 +107,7 @@ const doProduct = (v: any) => {
-
diff --git a/src/pages/order/detail.vue b/src/pages/order/detail.vue
index 7a22b1d..f9d6516 100644
--- a/src/pages/order/detail.vue
+++ b/src/pages/order/detail.vue
@@ -4,7 +4,7 @@ import { onLoad, onShow } from "@dcloudio/uni-app";
import { isEmpty } from "radash"
import { hooks, constant, router } from "@@/index"
-import { orderApi } from "@@/api"
+import { orderApi, refundApi } from "@@/api"
const data = {
@@ -12,6 +12,7 @@ const data = {
const state = reactive({
detailId: null,
detail: {},
+ refundDetail: {},
shopCarList: [],
})
@@ -30,6 +31,9 @@ const getDetail = async () => {
const _pa = { id: state.detailId };
const { data } = await orderApi.detail(_pa)
state.detail = data
+ if (state.detail.orderStatus == 10) {
+ getRefundDetail()
+ }
}
const getShopCarList = async () => {
@@ -39,6 +43,30 @@ const getShopCarList = async () => {
state.shopCarList = data
}
+const getRefundDetail = async () => {
+ if (isEmpty(state.detailId)) return
+ const _pa = { id: state.detailId };
+ const { data } = await refundApi.get(_pa)
+ state.refundDetail = data
+}
+
+const doCancelRefund = async () => {
+ uni.showModal({
+ title: '提示',
+ content: '是否确定取消申请退款',
+ confirmColor: '#0094ff',
+ success: async (res) => {
+ if (!res.confirm) return
+ uni.showLoading({ title: '取消中...', mask: false });
+ const _pa = { id: state.refundDetail.id }
+ const data = refundApi.cancel(_pa)
+ uni.hideLoading()
+ uni.showToast({ title: '取消成功', icon: "none" });
+ router.jump("/pages/tabbar/order", {}, 2)
+ }
+ })
+}
+
@@ -89,7 +117,7 @@ const getShopCarList = async () => {
-
+
{{ v.productName }}
¥ {{ hooks.useMoney(v.productPrice) }}
@@ -110,6 +138,52 @@ const getShopCarList = async () => {
+
+
+
+
+
+ 退款申请待商家处理
+
+
+ {{ hooks.useTime(state.refundDetail.updateTime, "") }}
+
+
+
+
+
+ 退款金额
+ ¥{{ hooks.useMoney(state.refundDetail.refundPrice) }}
+
+
+
+ 服务单号:
+ {{ state.refundDetail.no }}
+
+
+ 申请时间:
+ {{ hooks.useTime(state.refundDetail.createTime, "") }}
+
+
+ 售后类型:
+ {{ state.refundDetail.applyReason }}
+
+
+ 相关描述:
+ {{ state.refundDetail.applyDescription }}
+
+
+
+
+
+
+
+ 取消申请
+
+
diff --git a/src/pages/refund/apply.vue b/src/pages/refund/apply.vue
new file mode 100644
index 0000000..b92e356
--- /dev/null
+++ b/src/pages/refund/apply.vue
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ v.productName }}
+ ¥ {{ hooks.useMoney(v.productPrice) }}
+ x {{ v.productCount }}
+
+
+
+ ¥ {{ hooks.useMoney(v.totalPrice) }}
+
+
+
+
+ 实付款
+
+ ¥
+ {{ hooks.useMoney(state.detail.practicalTotalPrice) }}
+
+
+
+
+
+ 售后类型
+
+
+
+
+
+
+
+ 退款金额
+ ¥{{ hooks.useMoney(state.detail.practicalTotalPrice) }}
+
+
+
+
+ 申请原因
+
+ {{ applyForm.reasonStr || '请选择申请原因' }}
+
+
+
+
+
+
+ 相关描述
+
+
+
+
+
+
+
+ 提交申请
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/refund/history.vue b/src/pages/refund/history.vue
new file mode 100644
index 0000000..4d827d4
--- /dev/null
+++ b/src/pages/refund/history.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+ {{ v.content }}
+
+
+ {{ hooks.useTime(v.updateTime, "") }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/pages/tabbar/my.vue b/src/pages/tabbar/my.vue
index d7b1b6a..2206265 100644
--- a/src/pages/tabbar/my.vue
+++ b/src/pages/tabbar/my.vue
@@ -9,6 +9,7 @@ import { merchantApi, userApi, walletApi } from "@@/api"
const data = {
serviceList: [
{ text: '钱包管理', icon: '/static/icon/service_3.png', router: '/pages/wallet/list' },
+ { text: '包厢预定', icon: '/static/icon/service_4.png', router: '/pages/boxes/apply-list' },
// { text: '车牌管理', icon: '/static/icon/service_2.png', router: '/pages/user/diff-price' },
{ text: '外来人员就餐', icon: '/static/icon/service_1.png', router: '/pages/apply/foreign-list' },
{ text: '跨单位就餐', icon: '/static/icon/service_1.png', router: '/pages/apply/stride-list' },
diff --git a/src/pages/tabbar/order.vue b/src/pages/tabbar/order.vue
index aa25474..13b6509 100644
--- a/src/pages/tabbar/order.vue
+++ b/src/pages/tabbar/order.vue
@@ -12,7 +12,7 @@ const data = {
{ id: null, name: '全部', disabled: false },
{ id: 1, name: '未支付', disabled: false },
{ id: 5, name: '待核销', disabled: false },
- { id: 10, name: '已退款', disabled: false },
+ { id: 10, name: '售后中', disabled: false },
{ id: 15, name: '已核销', disabled: false },
]
}
@@ -51,6 +51,8 @@ const doAppraise = () => {
}
const doRefund = (v: any) => {
+ router.jump("/pages/refund/apply", { id: v.id })
+ return
uni.showModal({
title: '提示',
content: '是否确定退款',
@@ -70,7 +72,7 @@ const doRefund = (v: any) => {
uni.hideLoading()
}
}
- });
+ })
}
@@ -100,7 +102,7 @@ const doRefund = (v: any) => {
未支付
待核销
- 已退款
+ 售后中
已核销
diff --git a/src/sheep/api/boxes.ts b/src/sheep/api/boxes.ts
new file mode 100644
index 0000000..606f141
--- /dev/null
+++ b/src/sheep/api/boxes.ts
@@ -0,0 +1,58 @@
+import request from "@/sheep/utils/request";
+
+export default {
+ page: (params: any) =>
+ request({
+ url: "boxes/info/api/page",
+ method: "GET",
+ params,
+ custom: {
+ showLoading: false,
+ },
+ }),
+ detail: (params: any) =>
+ request({
+ url: "boxes/info/api/getInfo",
+ method: "GET",
+ params,
+ custom: {
+ showLoading: false,
+ },
+ }),
+ apply: (data: any) =>
+ request({
+ url: "boxes/info/api/create",
+ method: "POST",
+ data,
+ custom: {
+ showLoading: false,
+ },
+ }),
+ cancel: (data: any) =>
+ request({
+ url: "boxes/info/api/cancel",
+ method: "GET",
+ data,
+ custom: {
+ showLoading: false,
+ },
+ }),
+ get: (data: any) =>
+ request({
+ url: "boxes/info/api/get",
+ method: "GET",
+ data,
+ custom: {
+ showLoading: false,
+ },
+ }),
+ MyBookingPage: (data: any) =>
+ request({
+ url: "boxes/info/api/getMyBookingPage",
+ method: "GET",
+ data,
+ custom: {
+ showLoading: false,
+ },
+ }),
+};
diff --git a/src/sheep/api/common.ts b/src/sheep/api/common.ts
index 8c60b54..28c11b5 100644
--- a/src/sheep/api/common.ts
+++ b/src/sheep/api/common.ts
@@ -1,3 +1,13 @@
import request from "@/sheep/utils/request";
-export default {};
+export default {
+ setting: (params: any) =>
+ request({
+ url: "pay/setting/get",
+ method: "GET",
+ params,
+ custom: {
+ showLoading: false,
+ },
+ }),
+};
diff --git a/src/sheep/api/index.ts b/src/sheep/api/index.ts
index a36c3e0..42acaf0 100644
--- a/src/sheep/api/index.ts
+++ b/src/sheep/api/index.ts
@@ -1,5 +1,7 @@
export { default as applyApi } from "./apply";
+export { default as boxesApi } from "./boxes";
+
export { default as commonApi } from "./common";
export { default as foodApi } from "./food";
@@ -12,6 +14,8 @@ export { default as payApi } from "./pay";
export { default as productApi } from "./product";
+export { default as refundApi } from "./refund";
+
export { default as userApi } from "./user";
export { default as walletApi } from "./wallet";
diff --git a/src/sheep/api/refund.ts b/src/sheep/api/refund.ts
new file mode 100644
index 0000000..59da91e
--- /dev/null
+++ b/src/sheep/api/refund.ts
@@ -0,0 +1,32 @@
+import request from "@/sheep/utils/request";
+
+export default {
+ create: (data: any) => {
+ return request({
+ url: "/hardware/trade-after-sale/create",
+ method: "POST",
+ data,
+ });
+ },
+ get: (params: any) => {
+ return request({
+ url: "/hardware/trade-after-sale/get-by-order-id",
+ method: "GET",
+ params,
+ });
+ },
+ history: (params: any) => {
+ return request({
+ url: "/hardware/trade-after-sale/history",
+ method: "GET",
+ params,
+ });
+ },
+ cancel: (params: any) => {
+ return request({
+ url: "/hardware/trade-after-sale/cancel",
+ method: "GET",
+ params,
+ });
+ },
+};
diff --git a/src/sheep/components/crud/crud-layout/crud-layout.vue b/src/sheep/components/crud/crud-layout/crud-layout.vue
index 68d9a90..ce46af3 100644
--- a/src/sheep/components/crud/crud-layout/crud-layout.vue
+++ b/src/sheep/components/crud/crud-layout/crud-layout.vue
@@ -155,7 +155,9 @@ page {
// background: #ecf4f9;
}
- &_bottom {}
+ &_bottom {
+ box-shadow: 0 8rpx 40rpx rgba(0, 0, 0, 0.1);
+ }
}
&_foot {}
diff --git a/src/sheep/components/other/custom-waterfalls-flow/custom-waterfalls-flow.vue b/src/sheep/components/other/custom-waterfalls-flow/custom-waterfalls-flow.vue
index a22e2a6..27b8eec 100644
--- a/src/sheep/components/other/custom-waterfalls-flow/custom-waterfalls-flow.vue
+++ b/src/sheep/components/other/custom-waterfalls-flow/custom-waterfalls-flow.vue
@@ -43,7 +43,7 @@
+ /* #ifdef APP-NVUE */
+ width: 750rpx;
+ /* #endif */
+ flex-direction: row;
+ height: 80rpx;
+}
+.z-tabs-scroll-view-conatiner {
+ flex: 1;
+ position: relative;
+ /* #ifndef APP-NVUE */
+ display: flex;
+ height: 100%;
+ width: 100%;
+ /* #endif */
+ flex-direction: row;
+}
+
+/* #ifndef APP-NVUE */
+.z-tabs-scroll-view ::-webkit-scrollbar {
+ display: none;
+ -webkit-appearance: none;
+ width: 0 !important;
+ height: 0 !important;
+ background: transparent;
+}
+
+/* #endif */
+
+.z-tabs-scroll-view {
+ flex-direction: row;
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ /* #ifndef APP-NVUE */
+ width: 100%;
+ height: 100%;
+ /* #endif */
+ flex: 1;
+}
+
+.z-tabs-list-container {
+ position: relative;
+ /* #ifndef APP-NVUE */
+ height: 100%;
+ /* #endif */
+}
+
+.z-tabs-list,
+.z-tabs-list-container {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+}
+
+.z-tabs-item {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 0px 20rpx;
+}
+
+.z-tabs-item-title-container {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+}
+
+.z-tabs-item-title {
+ display: inline-block;
+ width: 100%;
+ font-size: 28rpx;
+}
+
+.z-tabs-item-title-disabled {
+ /* #ifndef APP-NVUE */
+ cursor: not-allowed;
+ /* #endif */
+}
+
+.z-tabs-item-badge {
+ margin-left: 8rpx;
+ background-color: #ec5b56;
+ color: white;
+ font-size: 22rpx;
+ border-radius: 100px;
+ padding: 0rpx 10rpx;
+}
+
+.z-tabs-bottom {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+}
+
+.z-tabs-bottom-dot {
+ border-radius: 100px;
+}
+
+.z-tabs-left,
+.z-tabs-right {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ flex-direction: row;
+ align-items: center;
+}
+
diff --git a/src/sheep/constant/service-enum.ts b/src/sheep/constant/service-enum.ts
index 10d6e0e..7c62f1c 100644
--- a/src/sheep/constant/service-enum.ts
+++ b/src/sheep/constant/service-enum.ts
@@ -22,8 +22,15 @@ const hardwarePayTypeEnum = {
7: "线上订餐二维码支付",
};
+const boxesBxStatusEnum = {
+ "0": "今日空闲",
+ "1": "今日部分空闲",
+ "2": "今日已满",
+};
+
export default {
hardwareOrderStatusEnum,
hardwareOrderTypeEnum,
hardwarePayTypeEnum,
+ boxesBxStatusEnum,
};
diff --git a/src/static/icon/service_4.png b/src/static/icon/service_4.png
new file mode 100644
index 0000000..261355f
Binary files /dev/null and b/src/static/icon/service_4.png differ
diff --git a/src/uni_modules/tm-ui/components/tm-picker-date/tm-picker-date.vue b/src/uni_modules/tm-ui/components/tm-picker-date/tm-picker-date.vue
index b4dfce0..b4e923d 100644
--- a/src/uni_modules/tm-ui/components/tm-picker-date/tm-picker-date.vue
+++ b/src/uni_modules/tm-ui/components/tm-picker-date/tm-picker-date.vue
@@ -1,5 +1,5 @@
-
\ No newline at end of file