Initial commit
@@ -0,0 +1,8 @@
|
||||
NODE_ENV = development
|
||||
VITE_APP_API_BASE_URL = 'https://test-pet-house.ifish7.com/pet-house'
|
||||
# https://pet-house.ifish7.com
|
||||
# https://test-pet-house.ifish7.com/pet-house
|
||||
# 是否在打包时生成 sourcemap
|
||||
VITE_BUILD_SOURCEMAP = true
|
||||
# 是否在打包时删除 console 代码
|
||||
VITE_BUILD_DROP_CONSOLE = false
|
||||
@@ -0,0 +1,8 @@
|
||||
NODE_ENV = production
|
||||
VITE_APP_API_BASE_URL = 'https://test-pet-house.ifish7.com/pet-house'
|
||||
# https://pet-house.ifish7.com/pet-house
|
||||
# https://test-pet-house.ifish7.com/pet-house
|
||||
# 是否在打包时生成 sourcemap
|
||||
VITE_BUILD_SOURCEMAP = 'false'
|
||||
# 是否在打包时删除 console 代码
|
||||
VITE_BUILD_DROP_CONSOLE = 'true'
|
||||
@@ -0,0 +1,25 @@
|
||||
module.exports = {
|
||||
root: true, // 停止向上查找父级目录中的配置文件
|
||||
env: {
|
||||
browser: true,
|
||||
es2021: true,
|
||||
node: true,
|
||||
},
|
||||
extends: [
|
||||
'eslint:recommended',
|
||||
'plugin:vue/vue3-essential',
|
||||
'plugin:prettier/recommended',
|
||||
'prettier', // eslint-config-prettier 的缩写
|
||||
],
|
||||
parser: 'vue-eslint-parser', // 指定要使用的解析器
|
||||
// 给解析器传入一些其他的配置参数
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest', // 支持的es版本
|
||||
parser: '@typescript-eslint/parser',
|
||||
sourceType: 'module', // 模块类型,默认为script,我们设置为module
|
||||
},
|
||||
plugins: ['vue', 'prettier'], // eslint-plugin- 可以省略
|
||||
rules: {
|
||||
'vue/multi-word-component-names': 'off'
|
||||
},
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
*.local
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
@@ -0,0 +1,16 @@
|
||||
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
|
||||
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
|
||||
"version": "0.0",
|
||||
"configurations": [{
|
||||
"default" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"mp-weixin" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"type" : "uniCloud"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
module.exports = {
|
||||
printWidth: 100,
|
||||
tabWidth: 2,
|
||||
useTabs: true, // 是否使用tab进行缩进,默认为false
|
||||
singleQuote: true, // 是否使用单引号代替双引号,默认为false
|
||||
semi: false, // 行尾是否使用分号,默认为true
|
||||
arrowParens: 'always',
|
||||
endOfLine: 'auto',
|
||||
vueIndentScriptAndStyle: true,
|
||||
htmlWhitespaceSensitivity: 'strict',
|
||||
};
|
||||
@@ -0,0 +1,103 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
export {}
|
||||
declare global {
|
||||
const EffectScope: typeof import('vue')['EffectScope']
|
||||
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
|
||||
const computed: typeof import('vue')['computed']
|
||||
const createApp: typeof import('vue')['createApp']
|
||||
const createPinia: typeof import('pinia')['createPinia']
|
||||
const customRef: typeof import('vue')['customRef']
|
||||
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||
const defineComponent: typeof import('vue')['defineComponent']
|
||||
const defineStore: typeof import('pinia')['defineStore']
|
||||
const effectScope: typeof import('vue')['effectScope']
|
||||
const getActivePinia: typeof import('pinia')['getActivePinia']
|
||||
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||
const h: typeof import('vue')['h']
|
||||
const inject: typeof import('vue')['inject']
|
||||
const isProxy: typeof import('vue')['isProxy']
|
||||
const isReactive: typeof import('vue')['isReactive']
|
||||
const isReadonly: typeof import('vue')['isReadonly']
|
||||
const isRef: typeof import('vue')['isRef']
|
||||
const mapActions: typeof import('pinia')['mapActions']
|
||||
const mapGetters: typeof import('pinia')['mapGetters']
|
||||
const mapState: typeof import('pinia')['mapState']
|
||||
const mapStores: typeof import('pinia')['mapStores']
|
||||
const mapWritableState: typeof import('pinia')['mapWritableState']
|
||||
const markRaw: typeof import('vue')['markRaw']
|
||||
const nextTick: typeof import('vue')['nextTick']
|
||||
const onActivated: typeof import('vue')['onActivated']
|
||||
const onAddToFavorites: typeof import('@dcloudio/uni-app')['onAddToFavorites']
|
||||
const onBackPress: typeof import('@dcloudio/uni-app')['onBackPress']
|
||||
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
||||
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
||||
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||
const onError: typeof import('@dcloudio/uni-app')['onError']
|
||||
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||
const onHide: typeof import('@dcloudio/uni-app')['onHide']
|
||||
const onLaunch: typeof import('@dcloudio/uni-app')['onLaunch']
|
||||
const onLoad: typeof import('@dcloudio/uni-app')['onLoad']
|
||||
const onMounted: typeof import('vue')['onMounted']
|
||||
const onNavigationBarButtonTap: typeof import('@dcloudio/uni-app')['onNavigationBarButtonTap']
|
||||
const onNavigationBarSearchInputChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputChanged']
|
||||
const onNavigationBarSearchInputClicked: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputClicked']
|
||||
const onNavigationBarSearchInputConfirmed: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputConfirmed']
|
||||
const onNavigationBarSearchInputFocusChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputFocusChanged']
|
||||
const onPageNotFound: typeof import('@dcloudio/uni-app')['onPageNotFound']
|
||||
const onPageScroll: typeof import('@dcloudio/uni-app')['onPageScroll']
|
||||
const onPullDownRefresh: typeof import('@dcloudio/uni-app')['onPullDownRefresh']
|
||||
const onReachBottom: typeof import('@dcloudio/uni-app')['onReachBottom']
|
||||
const onReady: typeof import('@dcloudio/uni-app')['onReady']
|
||||
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
||||
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
||||
const onResize: typeof import('@dcloudio/uni-app')['onResize']
|
||||
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
||||
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
||||
const onShareAppMessage: typeof import('@dcloudio/uni-app')['onShareAppMessage']
|
||||
const onShareTimeline: typeof import('@dcloudio/uni-app')['onShareTimeline']
|
||||
const onShow: typeof import('@dcloudio/uni-app')['onShow']
|
||||
const onTabItemTap: typeof import('@dcloudio/uni-app')['onTabItemTap']
|
||||
const onThemeChange: typeof import('@dcloudio/uni-app')['onThemeChange']
|
||||
const onUnhandledRejection: typeof import('@dcloudio/uni-app')['onUnhandledRejection']
|
||||
const onUnload: typeof import('@dcloudio/uni-app')['onUnload']
|
||||
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||
const onUpdated: typeof import('vue')['onUpdated']
|
||||
const provide: typeof import('vue')['provide']
|
||||
const reactive: typeof import('vue')['reactive']
|
||||
const readonly: typeof import('vue')['readonly']
|
||||
const ref: typeof import('vue')['ref']
|
||||
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||
const setActivePinia: typeof import('pinia')['setActivePinia']
|
||||
const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
|
||||
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||
const shallowRef: typeof import('vue')['shallowRef']
|
||||
const storeToRefs: typeof import('pinia')['storeToRefs']
|
||||
const toRaw: typeof import('vue')['toRaw']
|
||||
const toRef: typeof import('vue')['toRef']
|
||||
const toRefs: typeof import('vue')['toRefs']
|
||||
const toValue: typeof import('vue')['toValue']
|
||||
const triggerRef: typeof import('vue')['triggerRef']
|
||||
const unref: typeof import('vue')['unref']
|
||||
const useAttrs: typeof import('vue')['useAttrs']
|
||||
const useCssModule: typeof import('vue')['useCssModule']
|
||||
const useCssVars: typeof import('vue')['useCssVars']
|
||||
const useSlots: typeof import('vue')['useSlots']
|
||||
const useToast: typeof import('nutui-uniapp/composables')['useToast']
|
||||
const watch: typeof import('vue')['watch']
|
||||
const watchEffect: typeof import('vue')['watchEffect']
|
||||
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
||||
}
|
||||
// for type re-export
|
||||
declare global {
|
||||
// @ts-ignore
|
||||
export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
|
||||
import('vue')
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by vite-plugin-uni-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
import '@vue/runtime-core'
|
||||
|
||||
export {}
|
||||
|
||||
declare module '@vue/runtime-core' {
|
||||
export interface GlobalComponents {
|
||||
Carebox: typeof import('./src/components/carebox/index.vue')['default']
|
||||
CouponItem: typeof import('./src/components/couponItem/index.vue')['default']
|
||||
Gender: typeof import('./src/components/gender/index.vue')['default']
|
||||
HasListCareBox: typeof import('./src/components/hasListCareBox/index.vue')['default']
|
||||
HeaderBox: typeof import('./src/components/headerBox/index.vue')['default']
|
||||
Largebox: typeof import('./src/components/largebox/index.vue')['default']
|
||||
NutButton: typeof import('nutui-uniapp/components/button/button.vue')['default']
|
||||
NutCell: typeof import('nutui-uniapp/components/cell/cell.vue')['default']
|
||||
NutCellGroup: typeof import('nutui-uniapp/components/cellgroup/cellgroup.vue')['default']
|
||||
NutCheckbox: typeof import('nutui-uniapp/components/checkbox/checkbox.vue')['default']
|
||||
NutDatePicker: typeof import('nutui-uniapp/components/datepicker/datepicker.vue')['default']
|
||||
NutForm: typeof import('nutui-uniapp/components/form/form.vue')['default']
|
||||
NutFormItem: typeof import('nutui-uniapp/components/formitem/formitem.vue')['default']
|
||||
NutInput: typeof import('nutui-uniapp/components/input/input.vue')['default']
|
||||
NutNavbar: typeof import('nutui-uniapp/components/navbar/navbar.vue')['default']
|
||||
NutPicker: typeof import('nutui-uniapp/components/picker/picker.vue')['default']
|
||||
NutPopup: typeof import('nutui-uniapp/components/popup/popup.vue')['default']
|
||||
NutRadio: typeof import('nutui-uniapp/components/radio/radio.vue')['default']
|
||||
NutRadioGroup: typeof import('nutui-uniapp/components/radiogroup/radiogroup.vue')['default']
|
||||
NutRate: typeof import('nutui-uniapp/components/rate/rate.vue')['default']
|
||||
NutSafeArea: typeof import('nutui-uniapp/components/safearea/safearea.vue')['default']
|
||||
NutStep: typeof import('nutui-uniapp/components/step/step.vue')['default']
|
||||
NutSteps: typeof import('nutui-uniapp/components/steps/steps.vue')['default']
|
||||
NutSwiper: typeof import('nutui-uniapp/components/swiper/swiper.vue')['default']
|
||||
NutSwiperItem: typeof import('nutui-uniapp/components/swiperitem/swiperitem.vue')['default']
|
||||
NutTabPane: typeof import('nutui-uniapp/components/tabpane/tabpane.vue')['default']
|
||||
NutTabs: typeof import('nutui-uniapp/components/tabs/tabs.vue')['default']
|
||||
NutTextarea: typeof import('nutui-uniapp/components/textarea/textarea.vue')['default']
|
||||
OrderItem: typeof import('./src/components/orderItem/index.vue')['default']
|
||||
PetHeaderChoose: typeof import('./src/components/petHeaderChoose/index.vue')['default']
|
||||
PetSmallBox: typeof import('./src/components/petSmallBox/index.vue')['default']
|
||||
PricePopup: typeof import('./src/components/pricePopup/index.vue')['default']
|
||||
SmallCardBox: typeof import('./src/components/smallCardBox/index.vue')['default']
|
||||
Timepopup: typeof import('./src/components/timepopup/index.vue')['default']
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import globals from "globals";
|
||||
import pluginJs from "@eslint/js";
|
||||
import pluginVue from "eslint-plugin-vue";
|
||||
|
||||
|
||||
export default [
|
||||
{languageOptions: { globals: globals.browser }},
|
||||
pluginJs.configs.recommended,
|
||||
...pluginVue.configs["flat/essential"],
|
||||
];
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><!--app-html--></div>
|
||||
<script type="module" src="/src/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"name": "uni-preset-vue",
|
||||
"version": "0.0.0",
|
||||
"scripts": {
|
||||
"dev:app": "uni -p app --mode development",
|
||||
"dev:app-android": "uni -p app-android --mode development",
|
||||
"dev:app-ios": "uni -p app-ios --mode development",
|
||||
"dev:custom": "uni -p --mode development",
|
||||
"dev:h5": "uni --mode development",
|
||||
"dev:h5:ssr": "uni --ssr --mode development",
|
||||
"dev:mp-alipay": "uni -p mp-alipay --mode development",
|
||||
"dev:mp-baidu": "uni -p mp-baidu --mode development",
|
||||
"dev:mp-jd": "uni -p mp-jd --mode development",
|
||||
"dev:mp-kuaishou": "uni -p mp-kuaishou --mode development",
|
||||
"dev:mp-lark": "uni -p mp-lark --mode development",
|
||||
"dev:mp-qq": "uni -p mp-qq --mode development",
|
||||
"dev:mp-toutiao": "uni -p mp-toutiao --mode development",
|
||||
"dev:mp-weixin": "uni -p mp-weixin --mode development",
|
||||
"dev:mp-xhs": "uni -p mp-xhs --mode development",
|
||||
"dev:quickapp-webview": "uni -p quickapp-webview --mode development",
|
||||
"dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei --mode development",
|
||||
"dev:quickapp-webview-union": "uni -p quickapp-webview-union --mode development",
|
||||
"build:app": "uni build -p app --mode production",
|
||||
"build:app-android": "uni build -p app-android --mode production",
|
||||
"build:app-ios": "uni build -p app-ios --mode production",
|
||||
"build:custom": "uni build -p --mode production",
|
||||
"build:h5": "uni build --mode production",
|
||||
"build:h5:ssr": "uni build --ssr --mode production",
|
||||
"build:mp-alipay": "uni build -p mp-alipay --mode production",
|
||||
"build:mp-baidu": "uni build -p mp-baidu --mode production",
|
||||
"build:mp-jd": "uni build -p mp-jd --mode production",
|
||||
"build:mp-kuaishou": "uni build -p mp-kuaishou --mode production",
|
||||
"build:mp-lark": "uni build -p mp-lark --mode production",
|
||||
"build:mp-qq": "uni build -p mp-qq --mode production",
|
||||
"build:mp-toutiao": "uni build -p mp-toutiao --mode production",
|
||||
"build:mp-weixin": "uni build -p mp-weixin --mode production",
|
||||
"build:mp-xhs": "uni build -p mp-xhs --mode production",
|
||||
"build:quickapp-webview": "uni build -p quickapp-webview --mode production",
|
||||
"build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei --mode production",
|
||||
"build:quickapp-webview-union": "uni build -p quickapp-webview-union --mode production",
|
||||
"lint": "eslint --ext .js,.vue,.ts src --fix"
|
||||
},
|
||||
"dependencies": {
|
||||
"@dcloudio/uni-app": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-app-plus": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-components": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-h5": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-alipay": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-baidu": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-jd": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-kuaishou": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-lark": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-qq": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-toutiao": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-weixin": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-mp-xhs": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-quickapp-webview": "3.0.0-4000820240401001",
|
||||
"moment": "^2.30.1",
|
||||
"nutui-uniapp": "^1.7.7",
|
||||
"pinia": "2.0.35",
|
||||
"vue": "^3.4.21",
|
||||
"vue-i18n": "^9.12.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@dcloudio/types": "^3.4.8",
|
||||
"@dcloudio/uni-automator": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-cli-shared": "3.0.0-4000820240401001",
|
||||
"@dcloudio/uni-stacktracey": "3.0.0-4000820240401001",
|
||||
"@dcloudio/vite-plugin-uni": "3.0.0-4000820240401001",
|
||||
"@eslint/js": "^9.0.0",
|
||||
"@uni-helper/vite-plugin-uni-components": "^0.0.9",
|
||||
"@vue/runtime-core": "^3.4.21",
|
||||
"eslint": "^9.0.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-prettier": "^5.1.3",
|
||||
"eslint-plugin-vue": "^9.24.1",
|
||||
"globals": "^15.0.0",
|
||||
"prettier": "^3.2.5",
|
||||
"sass": "^1.75.0",
|
||||
"vite": "4.3.5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
/// <reference types='@dcloudio/types' />
|
||||
import 'vue'
|
||||
|
||||
declare module '@vue/runtime-core' {
|
||||
type Hooks = App.AppInstance & Page.PageInstance;
|
||||
|
||||
interface ComponentCustomOptions extends Hooks {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
<script setup>
|
||||
import { useUserInfo } from '@/store'
|
||||
// import { getuser, getUserInfo } from '@/api/UserService.js'
|
||||
// const userInfo = useUserInfo()
|
||||
import eventBus from './utils/eventBus'
|
||||
|
||||
// function loginUser(data) {
|
||||
// getuser(data).then((res) => {
|
||||
// if (res.code == 200) {
|
||||
// userInfo.$patch({ token: res.data.token, uid: res.data.uid, role: res.data.role })
|
||||
// if (res.data.role != 1) {
|
||||
// uni.switchTab({
|
||||
// url: `/pages/carepage/index`,
|
||||
// success: () => {
|
||||
// wx.eventBus.post({
|
||||
// params: {
|
||||
// tips: '触发更新'
|
||||
// },
|
||||
// event: 'change'
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// console.log(userInfo.token, userInfo.uid, 'patch')
|
||||
// // uni.hideLoading();
|
||||
// }
|
||||
// return getUserInfo()
|
||||
// }).then(res => {
|
||||
// if (res.code == 200) {
|
||||
// userInfo.setuserPets(res.data.userPets)
|
||||
// userInfo.setheadImgUrl(res.data.headImgUrl)
|
||||
// userInfo.setrole_amount_nickName(0, res.data.amount, res.data.nickName)
|
||||
// console.log(userInfo.getuserPets, 'appgetuserPets')
|
||||
// wx.eventBus.post({
|
||||
// params: {
|
||||
// tips: '触发更新'
|
||||
// },
|
||||
// event: 'first_init'
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|
||||
onLaunch(() => {
|
||||
// 挂载eventbus
|
||||
wx.eventBus = eventBus
|
||||
console.log('App Launch')
|
||||
// 验证是否有登陆参数
|
||||
// console.log(userInfo.token, userInfo.uid, '是否有登陆数据')
|
||||
// 进行获取用户信息逻辑
|
||||
// if (userInfo.token != 0 && userInfo.uid != 0 && userInfo.role != 1) {
|
||||
// console.log('没有登陆的逻辑')
|
||||
// wx.switchTab({
|
||||
// url: `/pages/carepage/index`,
|
||||
// success: () => {
|
||||
// console.log('没有登陆的逻辑1')
|
||||
// wx.eventBus.post({
|
||||
// params: {
|
||||
// tips: '触发更新'
|
||||
// },
|
||||
// event: 'change'
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// // 没有登陆的逻辑
|
||||
// if (userInfo.token == 0 && userInfo.uid == 0) {
|
||||
// console.log('进行获取用户信息逻辑')
|
||||
// uni.login({
|
||||
// success: (res) => {
|
||||
// if (res.code) {
|
||||
// var data = {
|
||||
// code: res.code
|
||||
// }
|
||||
// loginUser(data)
|
||||
// }
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
})
|
||||
onShow(() => {
|
||||
console.log('App Show')
|
||||
})
|
||||
onHide(() => {
|
||||
console.log('App Hide')
|
||||
})
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@import "nutui-uniapp/styles/index.scss";
|
||||
|
||||
view {
|
||||
--nut-navbar-title-font: 34rpx;
|
||||
--nut-navbar-title-font-weight: 500;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,41 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
// 登陆
|
||||
export function getuser(data) {
|
||||
return request({
|
||||
url: '/auth/login',
|
||||
data,
|
||||
method: "post"
|
||||
})
|
||||
}
|
||||
|
||||
// 获取用户信息
|
||||
export function getUserInfo() {
|
||||
return request({
|
||||
url: '/auth/getUserInfo',
|
||||
method: "post"
|
||||
})
|
||||
}
|
||||
|
||||
// 修改用户信息
|
||||
export function updateUserInfo(data) {
|
||||
return request({
|
||||
url: '/auth/updateUserInfo',
|
||||
method: "post",
|
||||
data
|
||||
})
|
||||
}
|
||||
// },
|
||||
// logout() {
|
||||
// return request({
|
||||
// url: `${requestPort.users}/user/logout/3`,
|
||||
// method: 'post',
|
||||
// });
|
||||
// },
|
||||
// logoff(data) {
|
||||
// return request({
|
||||
// url: `${requestPort.users}/user/logoff`,
|
||||
// method: 'post',
|
||||
// data,
|
||||
// });
|
||||
// }
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
import request from '@/utils/request';
|
||||
//地址列表
|
||||
export function serviceAddrLists(data) {
|
||||
return request({
|
||||
url: `/service/serviceAddrList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function serviceAddOrEdit(data) {
|
||||
return request({
|
||||
url: `/service/serviceAddOrEdit`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function serviceAreaAddrList(data) {
|
||||
return request({
|
||||
url: `/service/serviceAreaAddrList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /service/serviceCarLocationUpload
|
||||
export function serviceCarLocationUpload(data){
|
||||
return request({
|
||||
url: `/service/serviceCarLocationUpload`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /service/serviceCarLocationList
|
||||
export function serviceCarLocationList(data){
|
||||
return request({
|
||||
url: `/service/serviceCarLocationList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import request from '@/utils/request';
|
||||
//地址列表
|
||||
export function getCouponsList() {
|
||||
return request({
|
||||
url: `/coupons/getCouponsList`,
|
||||
method: 'post'
|
||||
});
|
||||
}
|
||||
|
||||
// /coupons/getUserCouponsList
|
||||
export function getUserCouponsList(data) {
|
||||
return request({
|
||||
url: `/coupons/getUserCouponsList`,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// /coupons/drawCoupons
|
||||
export function drawCoupons(data) {
|
||||
return request({
|
||||
url: `/coupons/drawCoupons`,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import request from '@/utils/request';
|
||||
// import { requestPort } from '@/utils/requestPort';
|
||||
//宠物列表
|
||||
export function getGoodsList(data) {
|
||||
return request({
|
||||
url: `/goods/goodsList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /order/orderServiceTime
|
||||
export function orderServiceTime(data) {
|
||||
return request({
|
||||
url: `/order/orderServiceTime`,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// /order/orderCreate
|
||||
export function orderCreate(data) {
|
||||
return request({
|
||||
url: `/order/orderCreate`,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
|
||||
// /order/orderCreatePreCheck
|
||||
export function orderCreatePreCheck(data) {
|
||||
return request({
|
||||
url: '/order/orderCreatePreCheck',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
|
||||
import request from '@/utils/request';
|
||||
//订单列表
|
||||
export function orderList(data) {
|
||||
return request({
|
||||
url: `/order/orderList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//可预约时间
|
||||
export function orderServiceTime(data) {
|
||||
return request({
|
||||
url: `/order/orderServiceTime`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//详情
|
||||
export function orderDetail(data) {
|
||||
return request({
|
||||
url: `/order/orderDetail`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//创建
|
||||
export function orderCreate(data) {
|
||||
return request({
|
||||
url: `/order/orderCreate`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /car/carServiceOrderList
|
||||
export function carServiceOrderList(data) {
|
||||
return request({
|
||||
url: `/car/carServiceOrderList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /car/carServiceProcess
|
||||
export function carServiceProcess(data){
|
||||
return request({
|
||||
url: `/car/carServiceProcess`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /order/orderGoodsUpdate
|
||||
export function orderGoodsUpdate(data){
|
||||
return request({
|
||||
url: `/order/orderGoodsUpdate`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
// /order/orderCancel
|
||||
export function orderCancel(data){
|
||||
return request({
|
||||
url: '/order/orderCancel',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// /order/orderMarkRecord
|
||||
export function orderMarkRecord(data){
|
||||
return request({
|
||||
url: '/order/orderMarkRecord',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// /order/orderMarkRecordInfo
|
||||
export function orderMarkRecordInfo(data){
|
||||
return request({
|
||||
url: '/order/orderMarkRecordInfo',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
import request from '@/utils/request';
|
||||
//充值
|
||||
export function toPay(data) {
|
||||
return request({
|
||||
url: `/pay/toPay`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
//获取充值档位
|
||||
export function rechargeInfoList(data) {
|
||||
return request({
|
||||
url: `/pay/rechargeInfoList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function getPayoff(){
|
||||
return request({
|
||||
url: '/system/getPayoff',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
import request from '@/utils/request';
|
||||
// import { requestPort } from '@/utils/requestPort';
|
||||
//宠物列表
|
||||
export function petList(data) {
|
||||
return request({
|
||||
url: `/pet/petList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//宠物信息
|
||||
export function petInfo(data) {
|
||||
return request({
|
||||
url: `/pet/petInfo`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//宠物基础信息列表
|
||||
export function petTypeList(data) {
|
||||
return request({
|
||||
url: `/pet/petTypeList`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//宠物添加/修改
|
||||
export function petAddOrEdit(data) {
|
||||
return request({
|
||||
url: `/pet/petAddOrEdit`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//删除宠物
|
||||
export function delPet(data) {
|
||||
return request({
|
||||
url: `/pet/delPet`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
|
||||
import request from '@/utils/request';
|
||||
//banner
|
||||
export function systemBanners(data) {
|
||||
return request({
|
||||
url: `/system/systemBanners`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
//系统配置
|
||||
export function systemConfigInfo(data) {
|
||||
return request({
|
||||
url: `/system/systemConfigInfo`,
|
||||
method: 'post',
|
||||
data,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
// 主色调
|
||||
$primary-color: #FFCD35;
|
||||
$primary-color-end: #FFDE5E;
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 980 B |
|
After Width: | Height: | Size: 975 B |
|
After Width: | Height: | Size: 609 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 339 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 896 B |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 586 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
@@ -0,0 +1,109 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<view class="care_box">
|
||||
<!-- 添加按钮 -->
|
||||
<view class="box_img">
|
||||
<img src="../../static/images/catgroup.png" alt="" srcset="" class="img_icon">
|
||||
|
||||
</view>
|
||||
<view class="box_content">
|
||||
<view class="con_title">
|
||||
添加我的宠物
|
||||
</view>
|
||||
<view class="con_sub">
|
||||
<view class="sub_item">
|
||||
补充品种
|
||||
</view>
|
||||
<view>
|
||||
补充生日
|
||||
</view>
|
||||
</view>
|
||||
<view class="con_content">
|
||||
<!-- <view>
|
||||
上次洗护:-
|
||||
</view> -->
|
||||
<view>
|
||||
上次洗护时间:-
|
||||
</view>
|
||||
</view>
|
||||
<nut-button size="small">添加宠物</nut-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// page {
|
||||
// --nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
// --nut-button-small-height: 60rpx;
|
||||
// --nut-button-small-line-height: 60rpx;
|
||||
// --nut-button-border-width: 0rpx;
|
||||
// --nut-button-small-font-size: 28rpx;
|
||||
// --nut-button-default-color: #312D22;
|
||||
// }
|
||||
|
||||
.care_box {
|
||||
--nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
--nut-button-small-height: 60rpx;
|
||||
--nut-button-small-line-height: 60rpx;
|
||||
--nut-button-border-width: 0rpx;
|
||||
--nut-button-small-font-size: 28rpx;
|
||||
--nut-button-default-color: #312D22;
|
||||
width: 702rpx;
|
||||
// height: 278rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
border: 1rpx solid #FFCD35;
|
||||
box-sizing: border-box;
|
||||
padding: 24rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
|
||||
.box_img {
|
||||
height: 96rpx;
|
||||
width: 96rpx;
|
||||
margin-right: 12rpx;
|
||||
border-radius: 50%;
|
||||
|
||||
.img_icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.box_content {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
|
||||
.con_title {
|
||||
font-size: $uni-font-size-title;
|
||||
color: $uni-text-color;
|
||||
font-weight: 500;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.con_sub {
|
||||
font-size: $uni-font-size-base;
|
||||
color: $uni-text-color-grey;
|
||||
margin-bottom: 10rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
|
||||
.sub_item {
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.con_content {
|
||||
font-size: $uni-font-size-base;
|
||||
color: $uni-text-color;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,279 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<view class="couponitem_box">
|
||||
<view class="lastExpireTime" v-if="lastExpireTime">
|
||||
{{ '最后到期时间:' + lastExpireTime }}
|
||||
</view>
|
||||
<view class="cou_box_left" :class="{ cou_box_left_disabled: props.type == '1' || props.type == '2' }">
|
||||
<view class="left_layout" v-if="props.detail.periodType ==
|
||||
2" :class="{ left_layout_disabled: props.type == '1' || props.type == '2' }">
|
||||
{{ props.detail.periodType == 1 || props.detail.periodType === 0 ? '' : props.detail.periodType == 2 ||
|
||||
props.detail.periodType ==
|
||||
3 ? props.detail.periodInfo[0] : '' }}
|
||||
</view>
|
||||
<view class="left_center" :class="{ left_center_disabled: props.type == '1' || props.type == '2' }">
|
||||
<text class="center_num">{{ parseInt(props.detail.discount) / 10 }}</text>
|
||||
<text class="center_text">折</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="cou_box_right">
|
||||
<view class="cou_content">
|
||||
<view class="content_title" :class="{ content_title_disabled: props.type == '1' || props.type == '2' }">
|
||||
{{ props.detail.name }}
|
||||
</view>
|
||||
<view class="content_text">
|
||||
来源:{{ props.detail.source }}
|
||||
</view>
|
||||
<view class="content_text">
|
||||
{{ showtime }}
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<!-- 领取 -->
|
||||
<!-- v-if="props.type == '4'" -->
|
||||
<view class="content_button" @click="handleReceive" v-if="props.type == '4'"
|
||||
:class="{ content_button_disable: props.detail.receiverStatus === 1 }">
|
||||
{{ props.detail.receiverStatus === 1 ? '已领取' : '免费领取' }}
|
||||
</view>
|
||||
<!-- 未使用 -->
|
||||
<view class="content_button content_button_one" @click="handleReceive"
|
||||
v-if="props.type == '0' && props.couponShowType == '0'">
|
||||
|
||||
</view>
|
||||
<!-- 收银台跳转 -->
|
||||
<view class="content_button content_button_one" @click="handleReceive"
|
||||
v-if="props.type == '0' && props.couponShowType == '1'">
|
||||
<nut-checkbox v-model="value" text-position="left" icon-size="20"
|
||||
:disabled="isdisable || props.detail.isChoose || props.detail.canUse" @change="onChange"></nut-checkbox>
|
||||
</view>
|
||||
<!-- 已过期 -->
|
||||
<view class="content_button content_button_one" @click="handleReceive" v-if="props.type == '1'">
|
||||
<img src="../../assets/images/已使用.png" alt="">
|
||||
</view>
|
||||
<!-- 已使用 -->
|
||||
<view class="content_button content_button_one" @click="handleReceive" v-if="props.type == '2'">
|
||||
<img src="../../assets/images/已过期.png" alt="">
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const props = defineProps({
|
||||
detail: {
|
||||
type: Object, // 接收的参数类型
|
||||
default: {}, //默认值
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: '4'
|
||||
},
|
||||
couponShowType: {
|
||||
type: String,
|
||||
default: '0'
|
||||
}
|
||||
})
|
||||
|
||||
const value = ref(false)
|
||||
const showtime = ref()
|
||||
const lastExpireTime = ref()
|
||||
|
||||
function hasConsecutiveWeekdays(weekdays) {
|
||||
const weekDays = ['1', '2', '3', '4', '5', '6', '7'];
|
||||
const indices = new Map(weekdays.map(day => [day, weekDays.indexOf(day)]));
|
||||
|
||||
for (let day of weekdays) {
|
||||
const index = indices.get(day);
|
||||
// 检查前一天或后一天是否连续
|
||||
if (indices.has(weekDays[(index + 1) % 7]) || indices.has(weekDays[(index - 1 + 7) % 7])) {
|
||||
return true; // 存在连续的星期
|
||||
}
|
||||
}
|
||||
return false; // 没有连续的星期
|
||||
}
|
||||
const list = ['未知', '周一', '周二', '周三', '周四', '周五', '周六', '周日']
|
||||
const emit = defineEmits(['Receive', 'couponlistchoose'])
|
||||
const isdisable = ref(false)
|
||||
function handleReceive() {
|
||||
if (props.detail.receiverStatus === 1) {
|
||||
return
|
||||
}
|
||||
emit('Receive', { id: props.detail.id })
|
||||
}
|
||||
function onChange() {
|
||||
if (value.value) {
|
||||
emit('couponlistchoose', { id: props.detail.id })
|
||||
} else {
|
||||
emit('couponlistchoose')
|
||||
}
|
||||
}
|
||||
|
||||
watch(() => props.detail, async (newv, oldv) => {
|
||||
console.log(newv, props.couponShowType, props.type, 'showtimeshowtimeshowtime')
|
||||
lastExpireTime.value = newv.lastExpireTime
|
||||
if (newv.periodType == 1) {
|
||||
let time = new Date()
|
||||
let nowTime = time.getDay()
|
||||
if (newv.periodInfo && newv.periodInfo.indexOf(nowTime + '') == -1) {
|
||||
isdisable.value = true
|
||||
}
|
||||
if (newv.periodInfo && hasConsecutiveWeekdays(newv.periodInfo)) {
|
||||
showtime.value = list[parseInt(newv.periodInfo[0])] + '至' + list[parseInt(newv.periodInfo[newv.periodInfo.length - 1])] + '可用'
|
||||
} else if (newv.periodInfo && newv.periodInfo.length == 1) {
|
||||
showtime.value = list[parseInt(newv.periodInfo[0])]
|
||||
} else {
|
||||
for (let i in newv.periodInfo) {
|
||||
showtime.value += list[parseInt(newv.periodInfo[i])] + '、'
|
||||
}
|
||||
showtime.value += '可用'
|
||||
}
|
||||
} else if (newv.periodType == 2 || newv.periodType == 3) {
|
||||
showtime.value = newv.periodInfo[0] + '前可用'
|
||||
let time = new Date(newv.periodInfo[0]).getTime()
|
||||
let nowDate = new Date().getDate()
|
||||
if (nowDate - time < 0) {
|
||||
isdisable.value = false
|
||||
}
|
||||
// if(newv.periodInfo.indexOf(nowTime + '') == -1){
|
||||
// isdisable.value = true
|
||||
// }
|
||||
}
|
||||
}, { immediate: true })
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.couponitem_box {
|
||||
margin: 24rpx 24rpx 0rpx 24rpx;
|
||||
width: 702rpx;
|
||||
height: 176rpx;
|
||||
border-radius: 16rpx;
|
||||
background: #FFF;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
.lastExpireTime {
|
||||
position: absolute;
|
||||
bottom: 5rpx;
|
||||
left: 216rpx;
|
||||
color: #999;
|
||||
font-size: $uni-font-size-sm;
|
||||
}
|
||||
|
||||
.cou_box_left {
|
||||
width: 192rpx;
|
||||
height: 176rpx;
|
||||
background: #FFF4F2;
|
||||
position: absolute;
|
||||
left: 0rpx;
|
||||
top: 0rpx;
|
||||
|
||||
.left_layout {
|
||||
color: #F23C17;
|
||||
font-size: 24rpx;
|
||||
width: 160rpx;
|
||||
height: 40rpx;
|
||||
background: linear-gradient(90deg, #FFE0DA, rgba(255, 224, 218, 0.00)100%);
|
||||
}
|
||||
|
||||
.left_layout_disabled {
|
||||
color: #666;
|
||||
background: linear-gradient(90deg, #E9E9E9, rgba(233, 233, 233, 0.00)100%);
|
||||
}
|
||||
|
||||
.left_center {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: #F23C17;
|
||||
|
||||
.center_num {
|
||||
font-size: 80rpx;
|
||||
font-weight: 600;
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.center_text {
|
||||
font-size: $uni-font-size-base;
|
||||
}
|
||||
}
|
||||
|
||||
.left_center_disabled {
|
||||
color: #666;
|
||||
background: #F7F7F7;
|
||||
}
|
||||
}
|
||||
|
||||
.cou_box_left_disabled {
|
||||
color: #666;
|
||||
background: #F7F7F7;
|
||||
}
|
||||
|
||||
.cou_box_right {
|
||||
position: absolute;
|
||||
right: 0rpx;
|
||||
top: 0rpx;
|
||||
width: 510rpx;
|
||||
height: 176rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
|
||||
.cou_content {
|
||||
width: 320rpx;
|
||||
height: 176rpx;
|
||||
padding: 24rpx;
|
||||
padding-bottom: 36rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
justify-content: space-between;
|
||||
|
||||
.content_title {
|
||||
font-size: $uni-font-size-title;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.content_title_disabled {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.content_text {
|
||||
color: #999;
|
||||
font-size: $uni-font-size-sm;
|
||||
}
|
||||
}
|
||||
|
||||
.content_button {
|
||||
width: 160rpx;
|
||||
height: 64rpx;
|
||||
border-radius: 32rpx;
|
||||
color: #fff;
|
||||
background: linear-gradient(90deg, #EC754D, #F23C17);
|
||||
font-size: $uni-font-size-base;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.content_button_disable {
|
||||
|
||||
opacity: 0.3;
|
||||
background: linear-gradient(90deg, #EC754D, #F23C17);
|
||||
}
|
||||
|
||||
.content_button_one {
|
||||
height: 176rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #fff;
|
||||
|
||||
image {
|
||||
height: 148rpx;
|
||||
width: 148rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,44 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<view class="gender_box">
|
||||
<img src="../../static/images/Group6147.png" alt="" srcset="" v-if="gender === 0" class="img_icon">
|
||||
<img src="../../static/images/Group6146.png" alt="" srcset="" v-else class="img_icon">
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
const props = defineProps({
|
||||
gender: {
|
||||
type: Number, // 接收的参数类型
|
||||
default: 0, //默认值
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// page {
|
||||
// --nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
// --nut-button-small-height: 60rpx;
|
||||
// --nut-button-small-line-height: 60rpx;
|
||||
// --nut-button-border-width: 0rpx;
|
||||
// --nut-button-small-font-size: 28rpx;
|
||||
// --nut-button-default-color: #312D22;
|
||||
// }
|
||||
|
||||
.gender_box {
|
||||
--nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
--nut-button-small-height: 60rpx;
|
||||
--nut-button-small-line-height: 60rpx;
|
||||
--nut-button-border-width: 0rpx;
|
||||
--nut-button-small-font-size: 28rpx;
|
||||
--nut-button-default-color: #312D22;
|
||||
width: 28rpx;
|
||||
height: 28rpx;
|
||||
|
||||
.img_icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,129 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<view class="care_box">
|
||||
<!-- 添加按钮 -->
|
||||
<view class="box_img">
|
||||
<img :src="detail.petInfo.headImgUrl || defalitImg" alt="" srcset="" class="img_icon">
|
||||
</view>
|
||||
<view class="box_content">
|
||||
<view class="con_title">
|
||||
{{ detail.petInfo.nickName }}
|
||||
</view>
|
||||
<view class="con_sub">
|
||||
<Gender :gender="detail.petInfo.gender"></Gender>
|
||||
<view class="sub_item">
|
||||
{{ detail.petBaseInfo.assortment }}
|
||||
</view>
|
||||
<view>
|
||||
{{ detail.petInfo.birthday }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="con_content">
|
||||
<!-- <view>
|
||||
上次洗护:{{ detail.petInfo.lastServiceProj }}
|
||||
</view> -->
|
||||
<view>
|
||||
上次洗护时间:{{ detail.petInfo.lastServiceDate }}
|
||||
</view>
|
||||
</view>
|
||||
<nut-button size="small">再来一单</nut-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import Gender from '../gender'
|
||||
const defalitImg = ref('../../static/images/catgroup.png')
|
||||
const components = { 'Gender': Gender, };
|
||||
|
||||
const props = defineProps({
|
||||
detail: {
|
||||
type: Object, // 接收的参数类型
|
||||
default: {}, //默认值
|
||||
}
|
||||
})
|
||||
// const { detail } = toRefs(props)
|
||||
onLoad(() => {
|
||||
console.log({ detail });
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// page {
|
||||
// --nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
// --nut-button-small-height: 60rpx;
|
||||
// --nut-button-small-line-height: 60rpx;
|
||||
// --nut-button-border-width: 0rpx;
|
||||
// --nut-button-small-font-size: 28rpx;
|
||||
// --nut-button-default-color: #312D22;
|
||||
// }
|
||||
|
||||
.care_box {
|
||||
--nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
--nut-button-small-height: 60rpx;
|
||||
--nut-button-small-line-height: 60rpx;
|
||||
--nut-button-border-width: 0rpx;
|
||||
--nut-button-small-font-size: 28rpx;
|
||||
--nut-button-default-color: #312D22;
|
||||
width: 528rpx;
|
||||
// height: 278rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
border: 1rpx solid #FFCD35;
|
||||
box-sizing: border-box;
|
||||
padding: 24rpx;
|
||||
display: flex;
|
||||
margin-right: 20rpx;
|
||||
flex-flow: row nowrap;
|
||||
|
||||
|
||||
.box_img {
|
||||
height: 96rpx;
|
||||
width: 96rpx;
|
||||
margin-right: 16rpx;
|
||||
border-radius: 50%;
|
||||
|
||||
.img_icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.box_content {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
|
||||
.con_title {
|
||||
font-size: $uni-font-size-lg;
|
||||
color: $uni-text-color;
|
||||
font-weight: 500;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.con_sub {
|
||||
font-size: $uni-font-size-base;
|
||||
color: $uni-text-color-grey;
|
||||
margin-bottom: 16rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.sub_item {
|
||||
margin-left: 10rpx;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.con_content {
|
||||
font-size: $uni-font-size-base;
|
||||
color: $uni-text-color;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,55 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<view class="header_box_container">
|
||||
<view class="title">{{ title }}</view>
|
||||
<view class="sub" :class="{ sub2: type == 'yellow' }">{{ sub }}</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { toRefs } from 'vue'
|
||||
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String, // 接收的参数类型
|
||||
default: '', //默认值
|
||||
},
|
||||
sub: {
|
||||
type: String, // 接收的参数类型
|
||||
default: '', //默认值
|
||||
},
|
||||
// yellow grey
|
||||
type: {
|
||||
type: String, // 接收的参数类型
|
||||
default: '', //默认值
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
const { title, sub, type } = toRefs(props)
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.header_box_container {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.title {
|
||||
font-size: $uni-font-size-lg;
|
||||
color: $uni-text-color;
|
||||
font-weight: 600;
|
||||
max-width: 400rpx;
|
||||
}
|
||||
|
||||
.sub {
|
||||
font-size: $uni-font-size-sm;
|
||||
color: $uni-text-color-grey;
|
||||
}
|
||||
|
||||
.sub2 {
|
||||
color: $uni-color-primary;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,114 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<div class="large-box" @tap="handleChangeType">
|
||||
<!-- 添加按钮 -->
|
||||
<div class="add-button" v-if="!ischeck">
|
||||
+
|
||||
</div>
|
||||
<div class="add-button ischoose" v-if="ischeck">
|
||||
<img src="../../static/images/chooseitem.png" alt="">
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="con-title">{{ name }}</div>
|
||||
<div class="con-num">¥{{ price }}</div>
|
||||
</div>
|
||||
<div class="box-icon">
|
||||
<img :src="goodsIcon" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const emit = defineEmits(['goodschooseemit'])
|
||||
const props = defineProps({
|
||||
name: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
price: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
goodsIcon: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
id: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
ischeck: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
})
|
||||
|
||||
// const isChoose = ref(false)
|
||||
|
||||
function handleChangeType() {
|
||||
// isChoose.value = !isChoose.value
|
||||
emit('goodschooseemit', { id: props.id, ischeck: !props.ischeck })
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.large-box {
|
||||
position: relative;
|
||||
height: 150rpx;
|
||||
width: 240rpx;
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
border: 2rpx solid #E5E4E4;
|
||||
overflow: hidden;
|
||||
color: rgba(49, 45, 34, 1);
|
||||
|
||||
.add-button {
|
||||
position: absolute;
|
||||
background-color: #000;
|
||||
top: -2rpx;
|
||||
right: -2rpx;
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
color: rgba(217, 217, 217, 1);
|
||||
// font-size:20rpx;
|
||||
line-height: 32rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.box-content {
|
||||
position: absolute;
|
||||
top: 12rpx;
|
||||
left: 24rpx;
|
||||
|
||||
// height:75rpx;
|
||||
.con-title {
|
||||
color: rgba(49, 45, 34, 1);
|
||||
width: 188rpx;
|
||||
font-weight: 500;
|
||||
font-size:$uni-font-size-base;
|
||||
// height: 28rpx;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.con-num {
|
||||
color: rgba(49, 45, 34, 1);
|
||||
font-size: 26rpx;
|
||||
height: 26rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.box-icon {
|
||||
width: 68rpx;
|
||||
height: 68rpx;
|
||||
position: absolute;
|
||||
right: 10rpx;
|
||||
bottom: 10rpx;
|
||||
}
|
||||
|
||||
.box-icon image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,299 @@
|
||||
<!-- 订单页面 -->
|
||||
<template>
|
||||
<view class="order_item">
|
||||
<header-box :title="'下单时间:' + ordertime.split(' ')[0]" :sub="ordertype[cardtype]" :type="'yellow'"></header-box>
|
||||
<view class="order_content">
|
||||
<view class="ord_con_icon">
|
||||
<img :src="imgUrl || defalitImg" alt="" srcset="" class="img_icon">
|
||||
</view>
|
||||
<view class="ord_con_content">
|
||||
<view class="con_content_title">{{ petname + ' ' + pettype }} <Gender :gender="gender"
|
||||
style="margin-left: 20rpx;"></Gender>
|
||||
</view>
|
||||
<view class="con_content">所选服务:{{ title }}</view>
|
||||
<view class="con_content">预约时间:{{ servetime }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 待服务 -->
|
||||
<view class="button_box" v-if="cardtype == 1">
|
||||
<view class="item_button" v-if="paystatus == 0 && cardtype == 2">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handleOnlinePay">在线支付</div>
|
||||
</view>
|
||||
<view class="item_button">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handleGoToCarMap">服务位置</div>
|
||||
</view>
|
||||
<view class="item_button">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handlePhone">联系客服</div>
|
||||
</view>
|
||||
<view class="item_button" v-if="dispatchStatus != 1">
|
||||
<div @tap.stop="cancelOrder">取消订单</div>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 服务中 -->
|
||||
<view class="button_box" v-if="cardtype == 2">
|
||||
<view class="item_button" v-if="paystatus == 0 && cardtype == 2">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handleOnlinePay">在线支付</div>
|
||||
</view>
|
||||
<!-- <view class="item_button">
|
||||
<nut-button size="small">取消订单</nut-button>
|
||||
</view> -->
|
||||
<!-- <view class="item_button">
|
||||
<nut-button size="small">修改预约</nut-button>
|
||||
</view> -->
|
||||
</view>
|
||||
<!-- 已完成 -->
|
||||
<view class="button_box" v-if="cardtype == 3">
|
||||
<view class="item_button" v-if="paystatus == 0 && cardtype == 2">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handleOnlinePay">在线支付</div>
|
||||
</view>
|
||||
<view class="item_button">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @click.stop="handlePingJia">评价订单</div>
|
||||
</view>
|
||||
<view class="item_button">
|
||||
<div @click.stop="handlePhone">联系客服</div>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 已派单 -->
|
||||
<view class="button_box" v-if="cardtype == 4">
|
||||
<view class="item_button" v-if="paystatus == 0 && cardtype == 2">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handleOnlinePay">在线支付</div>
|
||||
</view>
|
||||
<view class="item_button">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap="handlePhone">联系客服</div>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 已取消 -->
|
||||
<view class="button_box" v-if="cardtype == 5">
|
||||
<view class="item_button" v-if="paystatus == 0 && cardtype == 2">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap.stop="handleOnlinePay">在线支付</div>
|
||||
</view>
|
||||
<!-- <view class="item_button">
|
||||
<nut-button size="small">删除订单</nut-button>
|
||||
</view> -->
|
||||
<view class="item_button">
|
||||
<!-- <nut-button type="default" custom-color="#BCB9AE" size="small">联系客服</nut-button> -->
|
||||
<div @tap="handlePhone">联系客服</div>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import headerBox from '../headerBox/index'
|
||||
const defalitImg = ref('../../static/images/catgroup.png')
|
||||
import Gender from '../gender'
|
||||
import { orderCancel } from '../../api/order'
|
||||
import { systemConfigInfo } from '../../api/system'
|
||||
// const components = { 'Gender': Gender, };
|
||||
const emit = defineEmits(['deleteOrder', 'showPingfen', 'OnlinePay'])
|
||||
const ordertype = ['', '待服务', '服务中', '已完成', '已取消']
|
||||
|
||||
const props = defineProps({
|
||||
dispatchStatus: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
phoneNum: {
|
||||
type: Object,
|
||||
default: {},
|
||||
},
|
||||
orderId: {
|
||||
type: String,
|
||||
default: 0
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
// 1待服务 2服务中 3已完成 4已派单 5已取消
|
||||
cardtype: {
|
||||
type: Number,
|
||||
default: '',
|
||||
},
|
||||
ordertime: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
servetime: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
paystatus: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
petname: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
pettype: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
// 1 母 2 公
|
||||
gender: {
|
||||
type: Number,
|
||||
default: ''
|
||||
},
|
||||
imgUrl: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
markStatus: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
})
|
||||
|
||||
function handleOnlinePay() {
|
||||
emit('OnlinePay', { orderId: props.orderId })
|
||||
}
|
||||
|
||||
function handlePingJia() {
|
||||
emit('showPingfen', { orderId: props.orderId })
|
||||
}
|
||||
|
||||
function handleGoToCarMap() {
|
||||
uni.navigateTo({ url: '/pages/carMap/index?orderid=' + props.orderId })
|
||||
|
||||
}
|
||||
|
||||
function cancelOrder() {
|
||||
console.log(props.orderId, 'cancelOrderId')
|
||||
// /order/orderCancel
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您确认要取消订单吗?',
|
||||
confirmColor: '#FFCD35',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
orderCancel({ orderId: props.orderId }).then(res => {
|
||||
if (res.code == 200) {
|
||||
uni.showToast({
|
||||
title: '取消成功',
|
||||
//将值设置为 success 或者直接不用写icon这个参数
|
||||
icon: 'success',
|
||||
//显示持续时间为 2秒
|
||||
duration: 2000
|
||||
})
|
||||
emit('deleteOrder', { status: false })
|
||||
}
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function handlePhone() {
|
||||
console.log(props.phoneNum.content, ' props.phoneNum.content')
|
||||
wx.makePhoneCall({
|
||||
phoneNumber: props.phoneNum.content,
|
||||
success: function () {
|
||||
console.log("拨打电话成功!")
|
||||
},
|
||||
fail: function () {
|
||||
console.log("拨打电话失败!")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// const components = { 'header-box': headerBox }
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// page {
|
||||
// --nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
// --nut-button-small-height: 60rpx;
|
||||
// --nut-button-small-line-height: 60rpx;
|
||||
// --nut-button-border-width: 0rpx;
|
||||
// --nut-button-small-font-size: 28rpx;
|
||||
// --nut-button-default-color: #312D22;
|
||||
// --nut-button-warning-background-color:
|
||||
// }
|
||||
|
||||
.order_item {
|
||||
|
||||
width: 702rpx;
|
||||
height: 400rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
box-sizing: border-box;
|
||||
padding: 32rpx 24rpx 36rpx 24rpx;
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
margin-top: 24rpx;
|
||||
|
||||
.order_content {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
margin-top: 22rpx;
|
||||
height: 202rpx;
|
||||
padding-bottom: 24rpx;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1rpx solid #E5E4E4;
|
||||
|
||||
.ord_con_icon {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
border-radius: 50%;
|
||||
|
||||
.img_icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.ord_con_content {
|
||||
margin-left: 16rpx;
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
|
||||
.con_content_title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: $uni-text-color;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.con_content {
|
||||
margin-top: 12rpx;
|
||||
color: $uni-text-color-grey;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.button_box {
|
||||
margin-top: 28rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: flex-end;
|
||||
|
||||
.item_button {
|
||||
margin-left: 24rpx;
|
||||
width: 176rpx;
|
||||
height: 60rpx;
|
||||
border-radius: 200rpx 200rpx 200rpx 200rpx;
|
||||
border: 2rpx solid #BCB9AE;
|
||||
text-align: center;
|
||||
line-height: 60rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,98 @@
|
||||
<!-- 较高的盒子组件 -->
|
||||
<template>
|
||||
<div class="small_box">
|
||||
<!-- 添加按钮 -->
|
||||
<div class="add-button" v-if="!isChoose" @tap="handleChangeType">
|
||||
+
|
||||
</div>
|
||||
<div class="add-button ischoose" v-if="isChoose" @tap="handleChangeType">
|
||||
<img src="../../static/images/chooseitem.png" alt="">
|
||||
</div>
|
||||
<div class="small_img_box">
|
||||
<img :src="goodsIcon" alt="">
|
||||
</div>
|
||||
<div class="small_img_content">
|
||||
<div>{{ name }}</div>
|
||||
<div>¥{{ price }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const emit = defineEmits(['goodschooseemit'])
|
||||
const props = defineProps({
|
||||
name: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
price: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
goodsIcon: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
id: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
})
|
||||
|
||||
const isChoose = ref(false)
|
||||
|
||||
function handleChangeType() {
|
||||
isChoose.value = !isChoose.value
|
||||
emit('goodschooseemit', props.id)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.small_box {
|
||||
position: relative;
|
||||
height: 96rpx;
|
||||
width: 240rpx;
|
||||
padding-left: 12rpx;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
border: 2rpx solid #E5E4E4;
|
||||
overflow: hidden;
|
||||
color: rgba(49, 45, 34, 1);
|
||||
margin-right: 20rpx;
|
||||
margin-bottom: 20rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
|
||||
.add-button {
|
||||
position: absolute;
|
||||
background-color: #000;
|
||||
top: -2rpx;
|
||||
right: -2rpx;
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
color: rgba(217, 217, 217, 1);
|
||||
line-height: 32rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.ischoose {
|
||||
background-color: $uni-color-primary;
|
||||
}
|
||||
|
||||
.small_img_box {
|
||||
height: 56rpx;
|
||||
width: 56rpx;
|
||||
}
|
||||
|
||||
.small_img_content {
|
||||
margin-left: 12rpx;
|
||||
color: $uni-text-color;
|
||||
font-size: $uni-font-size-sm;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,163 @@
|
||||
<!-- 头像的盒子组件 -->
|
||||
<template>
|
||||
<!-- 无值输入时 -->
|
||||
<div class="hb_main">
|
||||
<scroll-view class="hb_box" scroll-x="true">
|
||||
<!-- 有值输入时 -->
|
||||
<div class="hb_box_list">
|
||||
<div class="headerbox-container" v-for="(item, index) in petsList" :key="index"
|
||||
@tap="choosepetbox(1, index, item)">
|
||||
<!-- 头像框 -->
|
||||
<div class="headerbox-title" :class="{ ischeck: item.petInfo.ischeck }">
|
||||
<div class="header_img_box">
|
||||
<img :src="item.petInfo.headImgUrl == '' ? '../../static/images/catgroup.png' : item.petInfo.headImgUrl"
|
||||
alt="">
|
||||
</div>
|
||||
<!-- 小选择框 -->
|
||||
<div class="checkbox" :class="{ ischoose: item.petInfo.ischoose }"
|
||||
@tap.stop="handleinshoplist(item, index)">
|
||||
<img v-if="item.petInfo.ischoose" src="../../static/images/Vector.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-content">
|
||||
{{ item.petInfo.nickName }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- 最后一个 -->
|
||||
<div class="headerbox-container" @tap="choosepetbox(2)">
|
||||
<div class="headerbox-title">
|
||||
<div class="addpet header_img_box">
|
||||
<img src="../../static/images/shopaddpet.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-content">
|
||||
添加宠物
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</scroll-view>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from 'vue'
|
||||
|
||||
const emit = defineEmits(['choosepet'])
|
||||
|
||||
const props = defineProps({
|
||||
petsList: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
})
|
||||
|
||||
function handleinshoplist(item) {
|
||||
item.petInfo.ischoose = !item.petInfo.ischoose
|
||||
}
|
||||
|
||||
function choosepetbox(e, index, item) {
|
||||
if (e === 1) {
|
||||
for (let i in props.petsList) {
|
||||
props.petsList[i].petInfo.ischeck = false
|
||||
}
|
||||
item.petInfo.ischeck = true
|
||||
item.petInfo.ischoose = true
|
||||
emit('choosepet', index)
|
||||
} else if (e === 2) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/petpage/index`
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.hb_main {
|
||||
padding: 24rpx;
|
||||
padding-top: 60rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.hb_box {
|
||||
width: 702rpx;
|
||||
height: 216rpx;
|
||||
padding: 24rpx;
|
||||
box-sizing: border-box;
|
||||
background-color: #FFFFFF;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
|
||||
.hb_box_list {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
|
||||
.headerbox-container {
|
||||
height: 170rpx;
|
||||
width: 112rpx;
|
||||
margin-right: 48rpx;
|
||||
|
||||
.headerbox-title {
|
||||
width: 112rpx;
|
||||
height: 112rpx;
|
||||
margin-bottom: 16rpx;
|
||||
border-radius: 56px;
|
||||
background-color: #E5E4E4;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.addpet {
|
||||
background-color: #FFFFFF;
|
||||
width: 112rpx !important;
|
||||
height: 112rpx !important;
|
||||
}
|
||||
|
||||
.header_img_box {
|
||||
width: 102rpx;
|
||||
height: 102rpx;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
position: absolute;
|
||||
bottom: 0rpx;
|
||||
right: 0rpx;
|
||||
border: 2rpx solid #FFCD35;
|
||||
border-radius: 50%;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
image {
|
||||
height: 40%;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.ischoose {
|
||||
background-color: #FFCD35;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.ischeck {
|
||||
background-color: #FFCD35;
|
||||
}
|
||||
|
||||
.header-content {
|
||||
text-align: center;
|
||||
font-size: $uni-font-size-base;
|
||||
color: $uni-text-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,330 @@
|
||||
<template>
|
||||
<div>
|
||||
<nut-popup position="bottom" :visible="showbottom" @close="handleClose" closeable round>
|
||||
<div class="price_popup_container">
|
||||
<!-- -->
|
||||
<div class="price_popup_title"> 预约单 </div>
|
||||
<!-- 宠物框 -->
|
||||
<scroll-view class="pet_list" scroll-x="true">
|
||||
<!-- 循环宠物列表 -->
|
||||
<div class="show_pet_header_list">
|
||||
<div class="header_item" v-for="(item, index) in pricelist" :key="index" @tap="chooseselforderlist(item)">
|
||||
<div class="header_img">
|
||||
<div class="header_img_box">
|
||||
<img :src="item.petdata.petInfo.headImgUrl" alt="">
|
||||
</div>
|
||||
<div class="checkbox" :class="{ ischoose: item.petdata.petInfo.ischoose }">
|
||||
<img v-if="item.petdata.petInfo.ischoose" src="../../static/images/Vector.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="header_context">
|
||||
{{ item.petdata.petInfo.nickName }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</scroll-view>
|
||||
<!-- 价格框 -->
|
||||
<scroll-view class="order_list" scroll-y="true">
|
||||
<div class="order_list_item" v-for="(item, index) in pricelist" :key="index">
|
||||
<div v-for="(goodsitem, index1) in item.goodsIds" :key="index1" class="item_out"
|
||||
v-if="item.petdata.petInfo.ischoose">
|
||||
<div class="item_name">
|
||||
{{ goodsitem.name }}
|
||||
</div>
|
||||
<div class="item_price">
|
||||
¥{{ goodsitem.price }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</scroll-view>
|
||||
<!-- 购买框 -->
|
||||
<div class="pet_price_box">
|
||||
<div class="add_box">
|
||||
<div class="add_left" v-if="!(userInfo.getdiscount == 1 || userInfo.getdiscount == 0)">原有金额:¥</div>
|
||||
<div class="add_left" v-if="userInfo.getdiscount == 1 || userInfo.getdiscount == 0">金额:¥</div>
|
||||
<div class="add_price" :class="{ isline: !(userInfo.getdiscount == 1 || userInfo.getdiscount == 0) }">{{
|
||||
allPrice }}</div>
|
||||
<!-- <div class="add_price" v-if="userInfo.getdiscount != 1 && userInfo.getdiscount != 0">{{ parseFloat(allPrice
|
||||
* userInfo.getdiscount).toFixed(1) }}</div> -->
|
||||
<!-- * userInfo.getdiscount -->
|
||||
<!-- <div class="add_price" v-if="userInfo.getdiscount != 1">{{ userInfo.getdiscount }}</div> -->
|
||||
</div>
|
||||
<div class="add_box">
|
||||
<div class="add_left" v-if="userInfo.getdiscount != 1 && userInfo.getdiscount != 0">
|
||||
折后金额:¥
|
||||
</div>
|
||||
<div class="add_price" v-if="userInfo.getdiscount != 1 && userInfo.getdiscount != 0">{{ parseFloat(allPrice
|
||||
* userInfo.getdiscount).toFixed(1) }}</div>
|
||||
</div>
|
||||
<div class="buy_now" @click="handleoutprice">
|
||||
立即预约
|
||||
</div>
|
||||
</div>
|
||||
<nut-safe-area position="bottom"></nut-safe-area>
|
||||
</div>
|
||||
</nut-popup>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { watch } from 'vue'
|
||||
import { useUserInfo } from '@/store'
|
||||
const allPrice = ref(0)
|
||||
const emit = defineEmits(['selfclose', 'orderpricelist'])
|
||||
const userInfo = useUserInfo()
|
||||
const props = defineProps({
|
||||
showbottomstates: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
pricelist: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
})
|
||||
|
||||
function chooseselforderlist(e) {
|
||||
e.petdata.petInfo.ischoose = !e.petdata.petInfo.ischoose
|
||||
}
|
||||
|
||||
function handleClose(e) {
|
||||
showbottom.value = false
|
||||
emit('selfclose', false)
|
||||
}
|
||||
|
||||
function handleoutprice() {
|
||||
let results = {data:[],results:[]}
|
||||
wx.requestSubscribeMessage({
|
||||
tmplIds: ['S1eCDKVtBX1mkiZtCKYvcDOP1-rqulEJwK3fogF6pIw'],
|
||||
success(e) {
|
||||
console.log(e)
|
||||
},
|
||||
fail(e) {
|
||||
wx.requestSubscribeMessage({
|
||||
tmplIds: ['zA6Z1PE2pO65QYhf5SE6Gt5ta8STeZ0eXc0Y8GoXoIE'],
|
||||
success(e) {
|
||||
console.log(e)
|
||||
},
|
||||
fail(e) {
|
||||
console.log(e)
|
||||
},
|
||||
complete(e) {
|
||||
console.log(e)
|
||||
}
|
||||
})
|
||||
},
|
||||
complete(e) {
|
||||
console.log(e)
|
||||
}
|
||||
})
|
||||
// return
|
||||
for (let i in props.pricelist) {
|
||||
let data = { goodsIds: [] }
|
||||
if (props.pricelist[i].petdata.petInfo.ischoose) {
|
||||
data.petId = props.pricelist[i].petId
|
||||
results.data.push(props.pricelist[i])
|
||||
for (let j in props.pricelist[i].goodsIds) {
|
||||
data.goodsIds.push(props.pricelist[i].goodsIds[j].id)
|
||||
}
|
||||
}
|
||||
if (data.goodsIds.length > 0) {
|
||||
results.results.push(data)
|
||||
}
|
||||
}
|
||||
if (results.results.length > 0) {
|
||||
console.log('返回页面数据')
|
||||
emit('orderpricelist', results)
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '请至少选择一个宠物',
|
||||
showCancel: false,
|
||||
confirmColor: '#FFCD35',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
console.log('用户点击确定');
|
||||
} else if (res.cancel) {
|
||||
console.log('用户点击取消');
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
console.log(results)
|
||||
}
|
||||
|
||||
watch(() => props.pricelist, async (newv, oldv) => {
|
||||
console.log(newv, 'newv')
|
||||
let price = 0
|
||||
newv.forEach((res) => {
|
||||
if (res.petdata.petInfo.ischoose) {
|
||||
res.goodsIds.forEach((pricedata) => {
|
||||
price += pricedata.price
|
||||
})
|
||||
}
|
||||
})
|
||||
allPrice.value = price
|
||||
console.log(price, 'pricepricepriceprice')
|
||||
}, { deep: true })
|
||||
|
||||
watch(() => props.showbottomstates, async (newv, oldv) => {
|
||||
console.log(newv, oldv)
|
||||
showbottom.value = newv
|
||||
})
|
||||
|
||||
const showbottom = ref(false)
|
||||
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.price_popup_container {
|
||||
.price_popup_title {
|
||||
height: 96rpx;
|
||||
text-align: center;
|
||||
line-height: 96rpx;
|
||||
font-size: 36rpx;
|
||||
color: #000000;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.pet_list {
|
||||
height: 200rpx;
|
||||
width: 702rpx;
|
||||
margin-left: 24rpx;
|
||||
margin-right: 24rpx;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 2rpx solid #E5E5E5;
|
||||
|
||||
.show_pet_header_list {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
padding-right: 24rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.header_item {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
align-items: center;
|
||||
margin-right: 48rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.header_img {
|
||||
width: 112rpx;
|
||||
height: 112rpx;
|
||||
border-radius: 50%;
|
||||
border: 4rpx solid #FFCD35;
|
||||
margin-bottom: 16rpx;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.header_img_box {
|
||||
width: 106rpx;
|
||||
height: 106rpx;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
position: absolute;
|
||||
bottom: 0rpx;
|
||||
right: 0rpx;
|
||||
border: 2rpx solid #FFCD35;
|
||||
border-radius: 50%;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
image {
|
||||
height: 40%;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.ischoose {
|
||||
background-color: #FFCD35;
|
||||
}
|
||||
}
|
||||
|
||||
.header_context {
|
||||
font-weight: 400;
|
||||
font-size: 28rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.order_list {
|
||||
height: 264rpx;
|
||||
padding-top: 32rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.order_list_item {
|
||||
.item_out {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 32rpx;
|
||||
padding: 0rpx 24rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.item_name {
|
||||
font-weight: 500;
|
||||
font-size: 28rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
|
||||
.item_price {
|
||||
font-size: 28rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.pet_price_box {
|
||||
padding: 0rpx 24rpx;
|
||||
box-sizing: border-box;
|
||||
height: 128rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.add_box {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
|
||||
.add_left {
|
||||
font-size: 28rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
|
||||
.add_price {
|
||||
font-size: 36rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
}
|
||||
|
||||
.buy_now {
|
||||
width: 200rpx;
|
||||
height: 88rpx;
|
||||
background: linear-gradient(270deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
border-radius: 74rpx 74rpx 74rpx 74rpx;
|
||||
text-align: center;
|
||||
line-height: 88rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.isline {
|
||||
text-decoration: line-through
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,167 @@
|
||||
<!-- 护理页面用box -->
|
||||
<template>
|
||||
<view class="card_box">
|
||||
<!-- 车辆 -->
|
||||
<div class="card_box_car" v-if="cardtype == 2">
|
||||
<headerbox :title="title" :sub="sub" :type="titletype"></headerbox>
|
||||
<div class="card_text card_margin">
|
||||
{{ '当前护理人员:' + nickname }}
|
||||
</div>
|
||||
<!-- <div class="card_text card_margin">
|
||||
{{ '预约时间:' + reservetime }}
|
||||
</div> -->
|
||||
</div>
|
||||
<!-- 服务中订单 -->
|
||||
<div class="card_box_pet" v-if="cardtype == 1">
|
||||
<div class="card_box_img">
|
||||
<img :src="headImgUrl" alt="">
|
||||
<!-- {{ headImgUrl }} -->
|
||||
</div>
|
||||
<div class="card_box_content">
|
||||
<headerbox :title="'下单日期:' + createTime" :sub="sub" :type="titletype"></headerbox>
|
||||
<headerbox :title="''" :sub="payStatus == 1 ? '已支付' : '未支付'" :type="titletype"></headerbox>
|
||||
<!-- title -->
|
||||
<div class="pet_info card_text card_margin">
|
||||
<div class="item_item">
|
||||
<Gender :gender="gender"></Gender>
|
||||
</div>
|
||||
<div class="item_item">{{ catname }}</div>
|
||||
<div>{{ cattype }}</div>
|
||||
</div>
|
||||
<div class="card_text card_margin">{{ '所选服务:' + title }} </div>
|
||||
<div class="card_text card_margin">
|
||||
{{ '预约时间:' + reservetime }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import headerbox from '../headerBox/index.vue'
|
||||
import Gender from '../gender'
|
||||
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
createTime: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
nickname:{
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
sub: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
titletype: {
|
||||
type: String,
|
||||
default: 'yellow',
|
||||
},
|
||||
// 1 宠物 2 车辆
|
||||
cardtype: {
|
||||
type: Number,
|
||||
default: 1,
|
||||
},
|
||||
catname: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
cattype: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
gender: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
reservetime: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
headImgUrl: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
payStatus: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
// page {
|
||||
// --nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
// --nut-button-small-height: 60rpx;
|
||||
// --nut-button-small-line-height: 60rpx;
|
||||
// --nut-button-border-width: 0rpx;
|
||||
// --nut-button-small-font-size: 28rpx;
|
||||
// --nut-button-default-color: #312D22;
|
||||
// }
|
||||
|
||||
.card_text {
|
||||
color: $uni-text-color-grey
|
||||
}
|
||||
|
||||
.card_margin {
|
||||
margin-top: 14rpx;
|
||||
}
|
||||
|
||||
.card_box {
|
||||
--nut-button-default-bg-color: linear-gradient(90deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
--nut-button-small-height: 60rpx;
|
||||
--nut-button-small-line-height: 60rpx;
|
||||
--nut-button-border-width: 0rpx;
|
||||
--nut-button-small-font-size: 28rpx;
|
||||
--nut-button-default-color: #312D22;
|
||||
width: 702rpx;
|
||||
// height: 202rpx;
|
||||
background: #FFFFFF;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
margin-bottom: 24rpx;
|
||||
padding: 24rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.card_box_car {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
}
|
||||
|
||||
.card_box_pet {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: space-between;
|
||||
|
||||
.card_box_img {
|
||||
width: 96rpx;
|
||||
height: 96rpx;
|
||||
// background-color: #000;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
|
||||
image {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.card_box_content {
|
||||
width: calc(100% - 96rpx - 20rpx);
|
||||
|
||||
.pet_info {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
|
||||
.item_item {
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,253 @@
|
||||
<template>
|
||||
<div>
|
||||
<nut-popup position="bottom" :visible="showbottom" @close="handleClose" closeable round>
|
||||
<div class="time_popup_container">
|
||||
<!-- title -->
|
||||
<div class="titlebox">
|
||||
预约时间
|
||||
</div>
|
||||
<!-- 宠物框 -->
|
||||
<!-- <scroll-view class="time_day_list" scroll-x="true"> -->
|
||||
<scroll-view class="time_day_list" scroll-x="true">
|
||||
<div class="scroll_view_list_class">
|
||||
<div v-for="(item, index) in timelists" :key="index" class="time_day_item" @tap="handlechoooseDay(index)">
|
||||
<div class="list_day" :class="{ yellow: item.ischeck }">
|
||||
{{ timedaylist[item.date] }}
|
||||
</div>
|
||||
<div class="list_date" :class="{ yellow: item.ischeck }">
|
||||
{{ item.day }}
|
||||
</div>
|
||||
<div class="yellowbottom" v-if="item.ischeck"></div>
|
||||
</div>
|
||||
</div>
|
||||
</scroll-view>
|
||||
<!-- 价格框 -->
|
||||
<div class="time_order_list">
|
||||
<div v-for="(item, index) in showtimelist" :key="index" @tap="handletimeitemlist(index)"
|
||||
class="time_order_list_item" :class="{ isdisable: !item.y, ischecked: item.ischeck }">
|
||||
{{ item.time }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- 购买框 -->
|
||||
<div class="bottom_box">
|
||||
<div class="future_time">预计时间:{{ showtime }}</div>
|
||||
<div class="button_class" @click="handleupdate">确认</div>
|
||||
</div>
|
||||
</div>
|
||||
<nut-safe-area position="bottom"></nut-safe-area>
|
||||
</nut-popup>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { reactive, toRefs, watch } from 'vue';
|
||||
|
||||
|
||||
const emit = defineEmits(['selfclose', 'uploadtime'])
|
||||
|
||||
const props = defineProps({
|
||||
showbottomstates: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
timelists: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
})
|
||||
const timedaylist = ref(['周日', '周一', '周二', '周三', '周四', '周五', '周六'])
|
||||
const showtimelist = ref([])
|
||||
const showtitle = ref([])
|
||||
const showtime = ref('')
|
||||
const backtime = ref('')
|
||||
const isfirsttime = ref(true)
|
||||
|
||||
function handleupdate(e) {
|
||||
console.log(backtime.value + ' ' + showtime.value)
|
||||
if (showtime.value) {
|
||||
emit('uploadtime', backtime.value + ' ' + showtime.value)
|
||||
emit('selfclose', false)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function handletimeitemlist(e) {
|
||||
isfirsttime.value = false
|
||||
console.log(showtimelist.value[e])
|
||||
for (let i in showtimelist.value) {
|
||||
showtimelist.value[i].ischeck = false
|
||||
}
|
||||
if (!showtimelist.value[e].y) {
|
||||
return
|
||||
}
|
||||
console.log(showtimelist.value)
|
||||
for (let i in props.timelists) {
|
||||
if (props.timelists[i].ischeck) {
|
||||
backtime.value = props.timelists[i].backtime
|
||||
}
|
||||
}
|
||||
showtimelist.value[e].ischeck = true
|
||||
showtime.value = showtimelist.value[e].time
|
||||
}
|
||||
|
||||
function handlechoooseDay(e) {
|
||||
isfirsttime.value = false
|
||||
console.log('handlechoooseDay', e)
|
||||
showtimelist.value.splice(0, showtimelist.value.length)
|
||||
for (let i in props.timelists) {
|
||||
props.timelists[i].ischeck = false
|
||||
}
|
||||
props.timelists[e].ischeck = true
|
||||
backtime.value = props.timelists[e].backtime
|
||||
console.log(props.timelists[e], ' props.timelists')
|
||||
showtimelist.value = JSON.parse(JSON.stringify(props.timelists[e].timelist))
|
||||
console.log(showtimelist.value)
|
||||
// props.timelists[e].timelist.forEach(element => {
|
||||
// showtimelist.value.push(element)
|
||||
// });
|
||||
}
|
||||
|
||||
function handleClose(e) {
|
||||
showbottom.value = false
|
||||
emit('selfclose', false)
|
||||
}
|
||||
|
||||
watch(() => props.timelists, (newv, oldv) => {
|
||||
if (newv && newv[0] && isfirsttime.value) {
|
||||
showtimelist.value = JSON.parse(JSON.stringify(props.timelists[0].timelist))
|
||||
// if (showtimelist.value.length > 0) {
|
||||
// showtimelist.value.splice(0, showtimelist.value.length)
|
||||
// }
|
||||
// newv[0].timelist.forEach(e => {
|
||||
// // ischeck
|
||||
// let data = { ...e, ischeck: false }
|
||||
// showtimelist.value.push(JSON.parse(JSON.stringify(data)))
|
||||
// })
|
||||
}
|
||||
}, { deep: true })
|
||||
|
||||
watch(() => props.showbottomstates, (newv, oldv) => {
|
||||
console.log(newv, oldv)
|
||||
showbottom.value = newv
|
||||
})
|
||||
|
||||
const showbottom = ref(false)
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.time_popup_container {
|
||||
height: 1000rpx;
|
||||
|
||||
.titlebox {
|
||||
width: 750rpx;
|
||||
height: 96rpx;
|
||||
font-size: $uni-font-size-lg;
|
||||
color: #000;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.time_day_list {
|
||||
height: 112rpx;
|
||||
width: 750rpx;
|
||||
box-shadow: inset 0rpx -1rpx 0rpx 0rpx #E5E4E4;
|
||||
padding-right: 30rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
.scroll_view_list_class {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
height: 100%;
|
||||
|
||||
.time_day_item {
|
||||
width: 76rpx;
|
||||
text-align: center;
|
||||
margin-right: 36rpx;
|
||||
margin-left: 36rpx;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
|
||||
.list_day {
|
||||
color: $uni-text-color-grey;
|
||||
font-size: $uni-font-size-sm;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.list_date {
|
||||
color: $uni-text-color;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.yellow {
|
||||
color: $uni-color-primary !important;
|
||||
}
|
||||
|
||||
.yellowbottom {
|
||||
position: absolute;
|
||||
bottom: 2rpx;
|
||||
left: 25rpx;
|
||||
width: 32rpx;
|
||||
height: 4rpx;
|
||||
background: $uni-color-primary;
|
||||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.time_order_list {
|
||||
height: 664rpx;
|
||||
padding: 11rpx;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
align-items: flex-start;
|
||||
align-content: start;
|
||||
|
||||
.time_order_list_item {
|
||||
width: 156rpx;
|
||||
height: 96rpx;
|
||||
background: #F3F3F3;
|
||||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||||
text-align: center;
|
||||
line-height: 96rpx;
|
||||
box-sizing: border-box;
|
||||
margin: 13rpx;
|
||||
}
|
||||
|
||||
.isdisable {
|
||||
background: #F3F3F3;
|
||||
color: #BCB9AE;
|
||||
}
|
||||
|
||||
.ischecked {
|
||||
background: #FFCD35;
|
||||
color: #312D22
|
||||
}
|
||||
}
|
||||
|
||||
.bottom_box {
|
||||
height: 128rpx;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
padding: 0rpx 24rpx;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.future_time {
|
||||
font-size: 28rpx;
|
||||
color: #312D22;
|
||||
}
|
||||
|
||||
.button_class {
|
||||
width: 240rpx;
|
||||
height: 88rpx;
|
||||
background: linear-gradient(270deg, #FFCD35 0%, #FFDE5E 100%);
|
||||
border-radius: 74rpx 74rpx 74rpx 74rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,79 @@
|
||||
Component({
|
||||
data: {
|
||||
selected: 0,
|
||||
color: "#B8BBC3",
|
||||
selectedColor: "#312D22",
|
||||
key: 'tabbar_key',
|
||||
list: [
|
||||
{
|
||||
pagePath: "/pages/index/index",
|
||||
iconPath: "/static/images/home2.png",
|
||||
selectedIconPath: "/static/images/home.png",
|
||||
text: "首页"
|
||||
},
|
||||
{
|
||||
pagePath: "/pages/user/index",
|
||||
iconPath: "/static/images/user2.png",
|
||||
selectedIconPath: "/static/images/user.png",
|
||||
text: "用户"
|
||||
}
|
||||
]
|
||||
},
|
||||
moved(){
|
||||
console.log('moved')
|
||||
},
|
||||
attached() {
|
||||
console.log( '123attachedattachedattached123')
|
||||
// wx.eventBus.on({
|
||||
// key: this.key,
|
||||
// event: 'change',
|
||||
// listener: () => {
|
||||
try {
|
||||
let value = wx.getStorageSync('store_userinfo').role
|
||||
console.log(value,`wx.getStorageSync('store_userinfo').role`)
|
||||
if (value == 1) {
|
||||
this.setData({
|
||||
list: [{
|
||||
pagePath: "/pages/carepage/index",
|
||||
iconPath: "/static/images/Group2.png",
|
||||
selectedIconPath: "/static/images/Group.png",
|
||||
text: "护理"
|
||||
}]
|
||||
})
|
||||
}else if(value == 0){
|
||||
this.setData({
|
||||
list: [{
|
||||
pagePath: "/pages/index/index",
|
||||
iconPath: "/static/images/home2.png",
|
||||
selectedIconPath: "/static/images/home.png",
|
||||
text: "首页"
|
||||
},
|
||||
{
|
||||
pagePath: "/pages/user/index",
|
||||
iconPath: "/static/images/user2.png",
|
||||
selectedIconPath: "/static/images/user.png",
|
||||
text: "用户"
|
||||
}]
|
||||
})
|
||||
}
|
||||
} catch (e) {
|
||||
// Do something when catch error
|
||||
}
|
||||
// }
|
||||
// })
|
||||
|
||||
|
||||
// 可以在这里控制显示
|
||||
},
|
||||
methods: {
|
||||
switchTab(e) {
|
||||
const data = e.currentTarget.dataset
|
||||
const url = data.path
|
||||
// console.log(url)
|
||||
wx.switchTab({ url })
|
||||
this.setData({
|
||||
selected: data.index
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"component": true
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<!--miniprogram/custom-tab-bar/index.wxml-->
|
||||
<cover-view class="tab-bar">
|
||||
<cover-view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
|
||||
<cover-image class="tab-bar-item-img" src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></cover-image>
|
||||
<cover-view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</cover-view>
|
||||
</cover-view>
|
||||
</cover-view>
|
||||
@@ -0,0 +1,28 @@
|
||||
.tab-bar {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 48px;
|
||||
background: white;
|
||||
display: flex;
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
box-shadow: 0rpx -1rpx 0rpx 0rpx #ECECEC;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tab-bar-item {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.tab-bar-item .tab-bar-item-img {
|
||||
width: 27px;
|
||||
height: 27px;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import {
|
||||
createSSRApp
|
||||
} from "vue";
|
||||
import App from "./App.vue";
|
||||
import store from './store';
|
||||
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App);
|
||||
app.use(store);
|
||||
console.log('挂在pinia')
|
||||
return {
|
||||
app,
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"name": "",
|
||||
"appid": "",
|
||||
"description": "",
|
||||
"versionName": "1.0.0",
|
||||
"versionCode": "100",
|
||||
"transformPx": false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus": {
|
||||
"usingComponents": true,
|
||||
"nvueStyleCompiler": "uni-app",
|
||||
"compilerVersion": 3,
|
||||
"splashscreen": {
|
||||
"alwaysShowBeforeRender": true,
|
||||
"waiting": true,
|
||||
"autoclose": true,
|
||||
"delay": 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules": {},
|
||||
/* 应用发布信息 */
|
||||
"distribute": {
|
||||
/* android打包配置 */
|
||||
"android": {
|
||||
"permissions": [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios": {},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs": {}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp": {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin": {
|
||||
"requiredPrivateInfos": ["chooseLocation","getLocation"],
|
||||
"appid": "wxd3eb721e29d5049a",
|
||||
"setting": {
|
||||
"urlCheck": false
|
||||
},
|
||||
"permission":{
|
||||
"scope.userLocation": {
|
||||
"desc": "你的位置信息将用于小程序位置接口的效果展示"
|
||||
}
|
||||
},
|
||||
"usingComponents": true
|
||||
},
|
||||
"mp-alipay": {
|
||||
"usingComponents": true
|
||||
},
|
||||
"mp-baidu": {
|
||||
"usingComponents": true
|
||||
},
|
||||
"mp-toutiao": {
|
||||
"usingComponents": true
|
||||
},
|
||||
"uniStatistics": {
|
||||
"enable": false
|
||||
},
|
||||
"vueVersion": "3"
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"pages": [
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/orderlist/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/petpage/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/shoppage/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/carepage/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/petlist/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/topup/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/addressconfig/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/addresslist/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/orderinfo/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/paysuccess/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/mappage/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "服务区域选择"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/webview/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "webview"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/login/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "登录"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/careorderinfo/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "护理订单详情",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/finalcareorderpage/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "结束订单",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/careorderconfig/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "确认订单",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/orderchangegoodspage/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "确认订单商品",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/checkstand/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "收银台",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/couponlist/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "优惠券",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/carMap/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "车辆轨迹"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "uni-app",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
},
|
||||
"tabBar": {
|
||||
"custom": true,
|
||||
"color": "#B8BBC3",
|
||||
"selectedColor": "#312D22",
|
||||
"backgroundColor": "#ffffff",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/carepage/index",
|
||||
"text": "分类"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/user/index",
|
||||
"text": "分类"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||