feat: add feedback link

This commit is contained in:
YunYouJun
2023-02-19 06:07:43 +08:00
parent 1f5d280241
commit bde15865ca
8 changed files with 3025 additions and 1096 deletions

2
.gitignore vendored
View File

@@ -10,3 +10,5 @@ dist-ssr
node_modules node_modules
.idea/ .idea/
*.log *.log
esbuild-kit

View File

@@ -18,54 +18,54 @@
}, },
"dependencies": { "dependencies": {
"@gtm-support/vue-gtm": "^1.6.0", "@gtm-support/vue-gtm": "^1.6.0",
"@vueuse/core": "^9.7.0", "@vueuse/core": "^9.13.0",
"@vueuse/head": "^1.0.22", "@vueuse/head": "^1.0.26",
"nprogress": "^0.2.0", "nprogress": "^0.2.0",
"pinia": "^2.0.28", "pinia": "^2.0.30",
"prism-theme-vars": "^0.2.4", "prism-theme-vars": "^0.2.4",
"vue": "^3.2.45", "vue": "^3.2.47",
"vue-about-me": "^1.2.7", "vue-about-me": "^1.2.7",
"vue-demi": "^0.13.11", "vue-demi": "^0.13.11",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },
"devDependencies": { "devDependencies": {
"@antfu/eslint-config": "^0.34.0", "@antfu/eslint-config": "^0.35.2",
"@iconify-json/fe": "^1.1.3", "@iconify-json/fe": "^1.1.6",
"@iconify-json/gg": "^1.1.3", "@iconify-json/gg": "^1.1.4",
"@iconify-json/ic": "^1.1.10", "@iconify-json/ic": "^1.1.13",
"@iconify-json/mdi": "^1.1.38", "@iconify-json/mdi": "^1.1.47",
"@iconify-json/ri": "^1.1.4", "@iconify-json/ri": "^1.1.5",
"@pinia/testing": "^0.0.14", "@pinia/testing": "^0.0.14",
"@types/markdown-it-link-attributes": "^3.0.1", "@types/markdown-it-link-attributes": "^3.0.1",
"@types/nprogress": "^0.2.0", "@types/nprogress": "^0.2.0",
"@vitejs/plugin-legacy": "^3.0.1", "@vitejs/plugin-legacy": "^4.0.1",
"@vitejs/plugin-vue": "^4.0.0", "@vitejs/plugin-vue": "^4.0.0",
"@vue/test-utils": "^2.2.6", "@vue/test-utils": "^2.2.10",
"consola": "^2.15.3", "consola": "^2.15.3",
"critters": "^0.0.16", "critters": "^0.0.16",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^8.30.0", "eslint": "^8.34.0",
"https-localhost": "^4.7.1", "https-localhost": "^4.7.1",
"markdown-it-link-attributes": "^4.0.1", "markdown-it-link-attributes": "^4.0.1",
"markdown-it-prism": "^2.3.0", "markdown-it-prism": "^2.3.0",
"pnpm": "^7.18.2", "pnpm": "^7.27.1",
"sass": "^1.57.0", "sass": "^1.58.3",
"star-markdown-css": "^0.4.1", "star-markdown-css": "^0.4.2",
"terser": "^5.16.1", "terser": "^5.16.4",
"tsx": "^3.12.1", "tsx": "^3.12.3",
"typescript": "^4.9.4", "typescript": "^4.9.5",
"unocss": "^0.47.6", "unocss": "^0.49.7",
"unplugin-auto-import": "^0.12.1", "unplugin-auto-import": "^0.14.3",
"unplugin-vue-components": "^0.22.12", "unplugin-vue-components": "^0.24.0",
"vite": "^4.0.2", "vite": "^4.1.2",
"vite-plugin-inspect": "^0.7.10", "vite-plugin-inspect": "^0.7.15",
"vite-plugin-pages": "^0.28.0", "vite-plugin-pages": "^0.28.0",
"vite-plugin-vue-layouts": "^0.7.0", "vite-plugin-vue-layouts": "^0.7.0",
"vite-plugin-vue-markdown": "^0.22.1", "vite-plugin-vue-markdown": "^0.22.4",
"vite-ssg": "0.22.1", "vite-ssg": "0.22.1",
"vite-ssg-sitemap": "^0.4.3", "vite-ssg-sitemap": "^0.4.3",
"vitest": "^0.25.8", "vitest": "^0.28.5",
"vue-toastification": "^2.0.0-rc.5", "vue-toastification": "^2.0.0-rc.5",
"vue-tsc": "^1.0.14" "vue-tsc": "^1.1.3"
} }
} }

4001
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

20
src/auto-imports.d.ts vendored
View File

@@ -1,4 +1,7 @@
// Generated by 'unplugin-auto-import' /* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-auto-import
export {} export {}
declare global { declare global {
const $$: typeof import('vue/macros')['$$'] const $$: typeof import('vue/macros')['$$']
@@ -82,7 +85,6 @@ declare global {
const refThrottled: typeof import('@vueuse/core')['refThrottled'] const refThrottled: typeof import('@vueuse/core')['refThrottled']
const refWithControl: typeof import('@vueuse/core')['refWithControl'] const refWithControl: typeof import('@vueuse/core')['refWithControl']
const resolveComponent: typeof import('vue')['resolveComponent'] const resolveComponent: typeof import('vue')['resolveComponent']
const resolveDirective: typeof import('vue')['resolveDirective']
const resolveRef: typeof import('@vueuse/core')['resolveRef'] const resolveRef: typeof import('@vueuse/core')['resolveRef']
const resolveUnref: typeof import('@vueuse/core')['resolveUnref'] const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
const shallowReactive: typeof import('vue')['shallowReactive'] const shallowReactive: typeof import('vue')['shallowReactive']
@@ -113,10 +115,12 @@ declare global {
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter'] const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
const useArrayFind: typeof import('@vueuse/core')['useArrayFind'] const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex'] const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin'] const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
const useArrayMap: typeof import('@vueuse/core')['useArrayMap'] const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce'] const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
const useArraySome: typeof import('@vueuse/core')['useArraySome'] const useArraySome: typeof import('@vueuse/core')['useArraySome']
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue'] const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
const useAsyncState: typeof import('@vueuse/core')['useAsyncState'] const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
const useAttrs: typeof import('vue')['useAttrs'] const useAttrs: typeof import('vue')['useAttrs']
@@ -203,12 +207,14 @@ declare global {
const useParallax: typeof import('@vueuse/core')['useParallax'] const useParallax: typeof import('@vueuse/core')['useParallax']
const usePermission: typeof import('@vueuse/core')['usePermission'] const usePermission: typeof import('@vueuse/core')['usePermission']
const usePointer: typeof import('@vueuse/core')['usePointer'] const usePointer: typeof import('@vueuse/core')['usePointer']
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe'] const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme'] const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast'] const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
const usePrevious: typeof import('@vueuse/core')['usePrevious']
const useRafFn: typeof import('@vueuse/core')['useRafFn'] const useRafFn: typeof import('@vueuse/core')['useRafFn']
const useRecipe: typeof import('./composables/recipe')['useRecipe'] const useRecipe: typeof import('./composables/recipe')['useRecipe']
const useRecipeStore: typeof import('./store/recipe')['useRecipeStore'] const useRecipeStore: typeof import('./store/recipe')['useRecipeStore']
@@ -280,6 +286,11 @@ declare global {
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter'] const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
const whenever: typeof import('@vueuse/core')['whenever'] const whenever: typeof import('@vueuse/core')['whenever']
} }
// for type re-export
declare global {
// @ts-ignore
export type { Component,ComponentPublicInstance,ComputedRef,InjectionKey,PropType,Ref,VNode } from 'vue'
}
// for vue template auto import // for vue template auto import
import { UnwrapRef } from 'vue' import { UnwrapRef } from 'vue'
declare module 'vue' { declare module 'vue' {
@@ -365,7 +376,6 @@ declare module 'vue' {
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']> readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']> readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']> readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
readonly resolveDirective: UnwrapRef<typeof import('vue')['resolveDirective']>
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']> readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']> readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']> readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
@@ -396,10 +406,12 @@ declare module 'vue' {
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']> readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']> readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']> readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']> readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']> readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']> readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']> readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']>
readonly useArrayUnique: UnwrapRef<typeof import('@vueuse/core')['useArrayUnique']>
readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']> readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']>
readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']> readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']>
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']> readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
@@ -486,12 +498,14 @@ declare module 'vue' {
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']> readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']> readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']> readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']> readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']>
readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']> readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']>
readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']> readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']>
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']> readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']> readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']> readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']> readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
readonly useRecipe: UnwrapRef<typeof import('./composables/recipe')['useRecipe']> readonly useRecipe: UnwrapRef<typeof import('./composables/recipe')['useRecipe']>
readonly useRecipeStore: UnwrapRef<typeof import('./store/recipe')['useRecipeStore']> readonly useRecipeStore: UnwrapRef<typeof import('./store/recipe')['useRecipeStore']>

6
src/components.d.ts vendored
View File

@@ -1,5 +1,7 @@
// generated by unplugin-vue-components /* eslint-disable */
// We suggest you to commit this file into source control /* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399 // Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core' import '@vue/runtime-core'

View File

@@ -1,5 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { isClient } from '@vueuse/core' import { isClient } from '@vueuse/core'
import { links } from '~/constants'
const displayICP = ref(true) const displayICP = ref(true)
@@ -14,7 +15,28 @@ const buildDate = (new Date(parseInt(now) * 1000)).toLocaleDateString()
</script> </script>
<template> <template>
<div p="4" class="flex flex-col justify-center items-center" text="sm"> <div p="4 t-2" class="flex flex-col justify-center items-center" text="sm">
<div>
<a
m="2"
border="b-1 dashed"
class="inline-flex text-sm text-blue-600 dark:text-blue-400"
:href="links.contribute" target="_blank"
title="居家菜谱投稿"
>
立即投稿
</a>
<a
m="2"
class="inline-flex text-sm text-blue-600 dark:text-blue-400"
:href="links.feedback" target="_blank"
alt="通过兔小巢反馈"
>
立即反馈
</a>
</div>
<div v-if="commitSha && buildDate" mb-2> <div v-if="commitSha && buildDate" mb-2>
<span> <span>
当前版本{{ buildDate }}: 当前版本{{ buildDate }}:

View File

@@ -3,4 +3,8 @@ export const links = {
* 菜谱投稿链接 * 菜谱投稿链接
*/ */
contribute: 'https://docs.qq.com/form/page/DWk9GWW9oTmlXZU9V', contribute: 'https://docs.qq.com/form/page/DWk9GWW9oTmlXZU9V',
/**
* 兔小巢反馈
*/
feedback: 'https://support.qq.com/product/507827',
} }

View File

@@ -1,5 +1,4 @@
<script lang="ts" setup> <script lang="ts" setup>
import { links } from '~/constants'
import { useRecipeStore } from '~/store/recipe' import { useRecipeStore } from '~/store/recipe'
const rStore = useRecipeStore() const rStore = useRecipeStore()
</script> </script>
@@ -21,15 +20,6 @@ const rStore = useRecipeStore()
</p> </p>
<p> <p>
<ChooseFood /> <ChooseFood />
<a
m="t-2"
border="b-1 dashed"
class="inline-flex text-sm text-blue-600 dark:text-blue-400"
:href="links.contribute" target="_blank"
title="居家菜谱投稿"
>
立即投稿
</a>
</p> </p>
</div> </div>
</template> </template>