diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..50cfdfc --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,217 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +// biome-ignore lint: disable +export {} +declare global { + const DEFAULT_GUANGMING_VIEWPORT: typeof import('./src/stores/modules/map')['DEFAULT_GUANGMING_VIEWPORT'] + 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 onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const pinia: typeof import('./src/stores/index')['pinia'] + 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 useCountStore: typeof import('./src/stores/modules/count')['useCountStore'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useLocationStore: typeof import('./src/stores/modules/location')['useLocationStore'] + const useMapStore: typeof import('./src/stores/modules/map')['useMapStore'] + const useModel: typeof import('vue')['useModel'] + const useNavigation: typeof import('./src/composables/useNavigation')['useNavigation'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + 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, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') +} + +// for vue template auto import +import { UnwrapRef } from 'vue' +declare module 'vue' { + interface GlobalComponents {} + interface ComponentCustomProperties { + readonly DEFAULT_GUANGMING_VIEWPORT: UnwrapRef + readonly EffectScope: UnwrapRef + readonly acceptHMRUpdate: UnwrapRef + readonly computed: UnwrapRef + readonly createApp: UnwrapRef + readonly createPinia: UnwrapRef + readonly customRef: UnwrapRef + readonly defineAsyncComponent: UnwrapRef + readonly defineComponent: UnwrapRef + readonly defineStore: UnwrapRef + readonly effectScope: UnwrapRef + readonly getActivePinia: UnwrapRef + readonly getCurrentInstance: UnwrapRef + readonly getCurrentScope: UnwrapRef + readonly h: UnwrapRef + readonly inject: UnwrapRef + readonly isProxy: UnwrapRef + readonly isReactive: UnwrapRef + readonly isReadonly: UnwrapRef + readonly isRef: UnwrapRef + readonly mapActions: UnwrapRef + readonly mapGetters: UnwrapRef + readonly mapState: UnwrapRef + readonly mapStores: UnwrapRef + readonly mapWritableState: UnwrapRef + readonly markRaw: UnwrapRef + readonly nextTick: UnwrapRef + readonly onActivated: UnwrapRef + readonly onAddToFavorites: UnwrapRef + readonly onBackPress: UnwrapRef + readonly onBeforeMount: UnwrapRef + readonly onBeforeUnmount: UnwrapRef + readonly onBeforeUpdate: UnwrapRef + readonly onDeactivated: UnwrapRef + readonly onError: UnwrapRef + readonly onErrorCaptured: UnwrapRef + readonly onHide: UnwrapRef + readonly onLaunch: UnwrapRef + readonly onLoad: UnwrapRef + readonly onMounted: UnwrapRef + readonly onNavigationBarButtonTap: UnwrapRef + readonly onNavigationBarSearchInputChanged: UnwrapRef + readonly onNavigationBarSearchInputClicked: UnwrapRef + readonly onNavigationBarSearchInputConfirmed: UnwrapRef + readonly onNavigationBarSearchInputFocusChanged: UnwrapRef + readonly onPageNotFound: UnwrapRef + readonly onPageScroll: UnwrapRef + readonly onPullDownRefresh: UnwrapRef + readonly onReachBottom: UnwrapRef + readonly onReady: UnwrapRef + readonly onRenderTracked: UnwrapRef + readonly onRenderTriggered: UnwrapRef + readonly onResize: UnwrapRef + readonly onScopeDispose: UnwrapRef + readonly onServerPrefetch: UnwrapRef + readonly onShareAppMessage: UnwrapRef + readonly onShareTimeline: UnwrapRef + readonly onShow: UnwrapRef + readonly onTabItemTap: UnwrapRef + readonly onThemeChange: UnwrapRef + readonly onUnhandledRejection: UnwrapRef + readonly onUnload: UnwrapRef + readonly onUnmounted: UnwrapRef + readonly onUpdated: UnwrapRef + readonly onWatcherCleanup: UnwrapRef + readonly pinia: UnwrapRef + readonly provide: UnwrapRef + readonly reactive: UnwrapRef + readonly readonly: UnwrapRef + readonly ref: UnwrapRef + readonly resolveComponent: UnwrapRef + readonly setActivePinia: UnwrapRef + readonly setMapStoreSuffix: UnwrapRef + readonly shallowReactive: UnwrapRef + readonly shallowReadonly: UnwrapRef + readonly shallowRef: UnwrapRef + readonly storeToRefs: UnwrapRef + readonly toRaw: UnwrapRef + readonly toRef: UnwrapRef + readonly toRefs: UnwrapRef + readonly toValue: UnwrapRef + readonly triggerRef: UnwrapRef + readonly unref: UnwrapRef + readonly useAttrs: UnwrapRef + readonly useCssModule: UnwrapRef + readonly useCssVars: UnwrapRef + readonly useId: UnwrapRef + readonly useLocationStore: UnwrapRef + readonly useMapStore: UnwrapRef + readonly useModel: UnwrapRef + readonly useSlots: UnwrapRef + readonly useTemplateRef: UnwrapRef + readonly watch: UnwrapRef + readonly watchEffect: UnwrapRef + readonly watchPostEffect: UnwrapRef + readonly watchSyncEffect: UnwrapRef + } +} \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..dd0b39a --- /dev/null +++ b/project.config.json @@ -0,0 +1,39 @@ +{ + "miniprogramRoot": "dist/dev/mp-weixin/", + "projectname": "光明文旅地图", + "description": "深圳市光明区全域文旅地图、POI 数字化展示、AI 文旅助手与行程规划 POC", + "setting": { + "es6": true, + "postcss": true, + "minified": true, + "uglifyFileName": false, + "enhance": true, + "packNpmRelationList": [], + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "useCompilerPlugins": false, + "minifyWXML": true, + "compileWorklet": false, + "uploadWithSourceMap": true, + "packNpmManually": false, + "minifyWXSS": true, + "localPlugins": false, + "disableUseStrict": false, + "condition": false, + "swc": false, + "disableSWC": true + }, + "compileType": "miniprogram", + "srcMiniprogramRoot": "dist/dev/mp-weixin/", + "simulatorPluginLibVersion": {}, + "packOptions": { + "ignore": [], + "include": [] + }, + "appid": "wxa3abd3957b0eb47b", + "editorSetting": {}, + "condition": {} +} \ No newline at end of file diff --git a/src/components.d.ts b/src/components.d.ts new file mode 100644 index 0000000..07cee53 --- /dev/null +++ b/src/components.d.ts @@ -0,0 +1,20 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + MapFilterHeader: typeof import('./components/map/MapFilterHeader.vue')['default'] + PageState: typeof import('./components/poi/PageState.vue')['default'] + PoiHeroGallery: typeof import('./components/poi/PoiHeroGallery.vue')['default'] + PoiImage: typeof import('./components/poi/PoiImage.vue')['default'] + PoiSummaryCard: typeof import('./components/map/PoiSummaryCard.vue')['default'] + PoiTagList: typeof import('./components/poi/PoiTagList.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + TravelPoiCard: typeof import('./components/travel/TravelPoiCard.vue')['default'] + } +} diff --git a/src/manifest.json b/src/manifest.json new file mode 100644 index 0000000..ad2e4f6 --- /dev/null +++ b/src/manifest.json @@ -0,0 +1,79 @@ +{ + "name": "光明文旅地图", + "appid": "", + "description": "深圳市光明区全域文旅地图、POI 数字化展示、AI 文旅助手与行程规划 POC", + "versionName": "0.2.0", + "versionCode": "20", + "transformPx": false, + "app-plus": { + "usingComponents": true, + "nvueStyleCompiler": "uni-app", + "compilerVersion": 3, + "splashscreen": { + "alwaysShowBeforeRender": true, + "waiting": true, + "autoclose": true, + "delay": 0 + }, + "modules": {}, + "distribute": { + "android": { + "permissions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ] + }, + "ios": {}, + "sdkConfigs": {}, + "icons": { + "android": {}, + "ios": {} + } + } + }, + "quickapp": {}, + "mp-weixin": { + "appid": "touristappid", + "setting": { + "urlCheck": true + }, + "usingComponents": true, + "permission": { + "scope.userLocation": { + "desc": "用于在全域地图显示实时位置,并优化文旅行程顺序" + } + }, + "requiredPrivateInfos": [ + "getLocation", + "startLocationUpdate", + "onLocationChange" + ], + "projectname": "【dev】光明文旅地图" + }, + "mp-alipay": { + "usingComponents": true + }, + "mp-baidu": { + "usingComponents": true + }, + "mp-toutiao": { + "usingComponents": true + }, + "uniStatistics": { + "enable": false + }, + "vueVersion": "3" +} \ No newline at end of file diff --git a/src/pages.json b/src/pages.json new file mode 100644 index 0000000..f755e1f --- /dev/null +++ b/src/pages.json @@ -0,0 +1,112 @@ +{ + "permission": { + "scope.userLocation": { + "desc": "用于在全域地图显示实时位置,并优化文旅行程顺序" + } + }, + "requiredPrivateInfos": [ + "getLocation", + "startLocationUpdate", + "onLocationChange" + ], + "easycom": { + "custom": { + "^u--(.*)": "uview-plus/components/u-$1/u-$1.vue", + "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue", + "^u-([^-].*)": "uview-plus/components/u-$1/u-$1.vue" + } + }, + "pages": [ + { + "path": "pages/map/index", + "type": "home", + "layout": "map", + "style": { + "navigationBarTitleText": "光明文旅地图", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "disableScroll": true + } + }, + { + "path": "pages/assistant/index", + "type": "page", + "layout": "map", + "style": { + "navigationBarTitleText": "AI 文旅助手", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "backgroundColor": "#f4f8f6" + } + }, + { + "path": "pages/itinerary/index", + "type": "page", + "layout": "map", + "style": { + "navigationBarTitleText": "推荐路线", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "backgroundColor": "#f4f8f6" + } + }, + { + "path": "pages/planner/index", + "type": "page", + "layout": "map", + "style": { + "navigationBarTitleText": "智能路线规划", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "backgroundColor": "#f4f8f6" + } + }, + { + "path": "pages/poi/detail", + "type": "page", + "layout": "map", + "style": { + "navigationBarTitleText": "点位详情", + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "backgroundColor": "#f5f7f6" + } + } + ], + "globalStyle": { + "navigationBarBackgroundColor": "#ffffff", + "backgroundColor": "#f5f7f6", + "navigationBarTextStyle": "black", + "navigationBarTitleText": "光明文旅地图", + "app-plus": { + "titleNView": false + } + }, + "tabBar": { + "color": "#718078", + "selectedColor": "#167a5b", + "backgroundColor": "#ffffff", + "borderStyle": "white", + "list": [ + { + "pagePath": "pages/map/index", + "text": "全域地图", + "iconPath": "static/tabbar/map.png", + "selectedIconPath": "static/tabbar/map-selected.png" + }, + { + "pagePath": "pages/assistant/index", + "text": "AI 助手", + "iconPath": "static/tabbar/assistant.png", + "selectedIconPath": "static/tabbar/assistant-selected.png" + }, + { + "pagePath": "pages/planner/index", + "text": "路线规划", + "iconPath": "static/tabbar/planner.png", + "selectedIconPath": "static/tabbar/planner-selected.png" + } + ] + }, + "subPackages": [] +} \ No newline at end of file diff --git a/uni-pages.d.ts b/uni-pages.d.ts new file mode 100644 index 0000000..a6f6d81 --- /dev/null +++ b/uni-pages.d.ts @@ -0,0 +1,26 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by vite-plugin-uni-pages + +interface NavigateToOptions { + url: "/pages/map/index" | + "/pages/assistant/index" | + "/pages/itinerary/index" | + "/pages/planner/index" | + "/pages/poi/detail"; +} +interface RedirectToOptions extends NavigateToOptions {} + +interface SwitchTabOptions { + url: "/pages/map/index" | "/pages/assistant/index" | "/pages/planner/index" +} + +type ReLaunchOptions = NavigateToOptions | SwitchTabOptions; + +declare interface Uni { + navigateTo(options: UniNamespace.NavigateToOptions & NavigateToOptions): void; + redirectTo(options: UniNamespace.RedirectToOptions & RedirectToOptions): void; + switchTab(options: UniNamespace.SwitchTabOptions & SwitchTabOptions): void; + reLaunch(options: UniNamespace.ReLaunchOptions & ReLaunchOptions): void; +}