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": "分类"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||