فهرست منبع

feat: 创建项目

chenlei 1 سال پیش
کامیت
a567db6b7e
100فایلهای تغییر یافته به همراه722 افزوده شده و 0 حذف شده
  1. 20 0
      .eslintrc.cjs
  2. 28 0
      .gitignore
  3. 8 0
      .prettierrc.json
  4. 8 0
      .vscode/extensions.json
  5. 46 0
      README.md
  6. 22 0
      components.d.ts
  7. 1 0
      env.d.ts
  8. 17 0
      index.html
  9. 42 0
      package.json
  10. 10 0
      postcss.config.js
  11. BIN
      public/beituo/1/0-1.png
  12. BIN
      public/beituo/1/0.png
  13. BIN
      public/beituo/1/1.png
  14. BIN
      public/beituo/1/10.png
  15. BIN
      public/beituo/1/2.png
  16. BIN
      public/beituo/1/3.png
  17. BIN
      public/beituo/1/4-2.png
  18. BIN
      public/beituo/1/4.png
  19. BIN
      public/beituo/1/5.png
  20. BIN
      public/beituo/1/6.png
  21. BIN
      public/beituo/1/7.png
  22. BIN
      public/beituo/1/8.png
  23. BIN
      public/beituo/1/9.png
  24. BIN
      public/beituo/2/1.png
  25. BIN
      public/beituo/2/2.png
  26. BIN
      public/beituo/2/3.png
  27. BIN
      public/beituo/2/4.png
  28. BIN
      public/beituo/2/5.png
  29. BIN
      public/beituo/2/6.png
  30. BIN
      public/beituo/2/7-2.png
  31. BIN
      public/beituo/2/7-3.png
  32. BIN
      public/beituo/2/7-4.png
  33. BIN
      public/beituo/2/7-5.png
  34. BIN
      public/beituo/2/7-6.png
  35. BIN
      public/beituo/2/7.png
  36. BIN
      public/beituo/2/8.png
  37. BIN
      public/beituo/2/9.png
  38. BIN
      public/beituo/3/1.png
  39. BIN
      public/beituo/3/10.png
  40. BIN
      public/beituo/3/2.png
  41. BIN
      public/beituo/3/3.png
  42. BIN
      public/beituo/3/4.png
  43. BIN
      public/beituo/3/5.png
  44. BIN
      public/beituo/3/6.png
  45. BIN
      public/beituo/3/7.png
  46. BIN
      public/beituo/3/8.png
  47. BIN
      public/beituo/3/9.png
  48. BIN
      public/beituo/4/1.png
  49. BIN
      public/beituo/4/2.png
  50. BIN
      public/beituo/4/3.png
  51. BIN
      public/beituo/4/4.png
  52. BIN
      public/beituo/4/5-1.png
  53. BIN
      public/beituo/4/5.png
  54. BIN
      public/beituo/4/6-1.png
  55. BIN
      public/beituo/4/6.png
  56. BIN
      public/beituo/4/7-1.png
  57. BIN
      public/beituo/4/7.png
  58. BIN
      public/beituo/4/8.png
  59. 44 0
      public/bookFairData.json
  60. BIN
      public/favicon.ico
  61. BIN
      public/fonts/SOURCEHANSERIFCN-BOLD.OTF
  62. BIN
      public/fonts/SOURCEHANSERIFCN-REGULAR.OTF
  63. BIN
      public/images/beituo/2/8.png
  64. BIN
      public/images/beituo/3/2.png
  65. BIN
      public/images/beituo/3/4.png
  66. BIN
      public/images/beituo/3/7.png
  67. BIN
      public/images/beituo/4/7.png
  68. 317 0
      public/monumentData.json
  69. 58 0
      src/App.vue
  70. 101 0
      src/assets/base.scss
  71. BIN
      src/assets/images/banner_beita@2x-min.jpg
  72. BIN
      src/assets/images/banner_beita@2x.png
  73. BIN
      src/assets/images/banner_zhouji@2x-min.jpg
  74. BIN
      src/assets/images/banner_zhouji@2x.png
  75. BIN
      src/assets/images/bg_beita_normal@2x-min.jpg
  76. BIN
      src/assets/images/bg_preface_beita@2x-min.jpg
  77. BIN
      src/assets/images/bg_zhouji@2x-min.jpg
  78. BIN
      src/assets/images/bg_zhouji@2x.jpg
  79. BIN
      src/assets/images/btn_active_beita@2x.png
  80. BIN
      src/assets/images/btn_back_beita@2x.png
  81. BIN
      src/assets/images/btn_back_zhouji@2x.png
  82. BIN
      src/assets/images/btn_beita@2x.png
  83. BIN
      src/assets/images/btn_left_beita@2x.png
  84. BIN
      src/assets/images/btn_left_zhouji@2x.png
  85. BIN
      src/assets/images/btn_right_beita@2x.png
  86. BIN
      src/assets/images/btn_right_zhouji@2x.png
  87. BIN
      src/assets/images/btn_start_beita@2x.png
  88. BIN
      src/assets/images/btn_start_zhouji@2x.png
  89. BIN
      src/assets/images/btn_zhouji@2x.png
  90. BIN
      src/assets/images/btz-1.png
  91. BIN
      src/assets/images/btz-2.png
  92. BIN
      src/assets/images/btz-3.png
  93. BIN
      src/assets/images/icon_chosen_left@2x.png
  94. BIN
      src/assets/images/icon_enter@2x.png
  95. BIN
      src/assets/images/icon_more@2x.png
  96. BIN
      src/assets/images/img_preface_left@2x.png
  97. BIN
      src/assets/images/label_beita@2x.png
  98. BIN
      src/assets/images/label_zhouji@2x.png
  99. BIN
      src/assets/images/tab_beita@2x.png
  100. 0 0
      src/assets/images/tab_part@2x.png

+ 20 - 0
.eslintrc.cjs

@@ -0,0 +1,20 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+  root: true,
+  extends: [
+    'plugin:vue/vue3-essential',
+    'eslint:recommended',
+    '@vue/eslint-config-typescript',
+    '@vue/eslint-config-prettier/skip-formatting'
+  ],
+  parserOptions: {
+    ecmaVersion: 'latest'
+  },
+  rules: {
+    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'vue/multi-word-component-names': 'off'
+  }
+}

+ 28 - 0
.gitignore

@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?

+ 8 - 0
.prettierrc.json

@@ -0,0 +1,8 @@
+{
+  "$schema": "https://json.schemastore.org/prettierrc",
+  "semi": false,
+  "tabWidth": 2,
+  "singleQuote": true,
+  "printWidth": 100,
+  "trailingComma": "none"
+}

+ 8 - 0
.vscode/extensions.json

@@ -0,0 +1,8 @@
+{
+  "recommendations": [
+    "Vue.volar",
+    "Vue.vscode-typescript-vue-plugin",
+    "dbaeumer.vscode-eslint",
+    "esbenp.prettier-vscode"
+  ]
+}

+ 46 - 0
README.md

@@ -0,0 +1,46 @@
+# yzdyh-h5
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Type Support for `.vue` Imports in TS
+
+TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
+
+If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
+
+1. Disable the built-in TypeScript Extension
+    1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
+    2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
+2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Type-Check, Compile and Minify for Production
+
+```sh
+npm run build
+```
+
+### Lint with [ESLint](https://eslint.org/)
+
+```sh
+npm run lint
+```

+ 22 - 0
components.d.ts

@@ -0,0 +1,22 @@
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// Generated by unplugin-vue-components
+// Read more: https://github.com/vuejs/core/pull/3399
+export {}
+
+declare module 'vue' {
+  export interface GlobalComponents {
+    RouterLink: typeof import('vue-router')['RouterLink']
+    RouterView: typeof import('vue-router')['RouterView']
+    VanFloatingBubble: typeof import('vant/es')['FloatingBubble']
+    VanImage: typeof import('vant/es')['Image']
+    VanImagePreview: typeof import('vant/es')['ImagePreview']
+    VanLoading: typeof import('vant/es')['Loading']
+    VanPopup: typeof import('vant/es')['Popup']
+    VanSwipe: typeof import('vant/es')['Swipe']
+    VanSwipeItem: typeof import('vant/es')['SwipeItem']
+    VanTab: typeof import('vant/es')['Tab']
+    VanTabs: typeof import('vant/es')['Tabs']
+  }
+}

+ 1 - 0
env.d.ts

@@ -0,0 +1 @@
+/// <reference types="vite/client" />

+ 17 - 0
index.html

@@ -0,0 +1,17 @@
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" href="/favicon.ico" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta
+      name="viewport"
+      content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"
+    />
+    <title>扬州中国大运河博物馆线上图文展</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.ts"></script>
+  </body>
+</html>

+ 42 - 0
package.json

@@ -0,0 +1,42 @@
+{
+  "name": "yzdyh-h5",
+  "version": "0.0.0",
+  "private": true,
+  "scripts": {
+    "dev": "vite",
+    "build": "run-p type-check \"build-only {@}\" --",
+    "preview": "vite preview",
+    "build-only": "vite build",
+    "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
+    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
+    "format": "prettier --write src/"
+  },
+  "dependencies": {
+    "lib-flexible": "^0.3.2",
+    "pinia": "^2.1.7",
+    "sass": "^1.69.5",
+    "vant": "^4.7.2",
+    "vue": "^3.3.4",
+    "vue-router": "^4.2.5"
+  },
+  "devDependencies": {
+    "@rushstack/eslint-patch": "^1.3.3",
+    "@tsconfig/node18": "^18.2.2",
+    "@types/node": "^18.18.5",
+    "@vant/auto-import-resolver": "^1.0.2",
+    "@vitejs/plugin-vue": "^4.4.0",
+    "@vitejs/plugin-vue-jsx": "^3.0.2",
+    "@vue/eslint-config-prettier": "^8.0.0",
+    "@vue/eslint-config-typescript": "^12.0.0",
+    "@vue/tsconfig": "^0.4.0",
+    "eslint": "^8.49.0",
+    "eslint-plugin-vue": "^9.17.0",
+    "npm-run-all2": "^6.1.1",
+    "postcss-pxtorem": "^6.0.0",
+    "prettier": "^3.0.3",
+    "typescript": "~5.2.0",
+    "unplugin-vue-components": "^0.25.2",
+    "vite": "^4.4.11",
+    "vue-tsc": "^1.8.19"
+  }
+}

+ 10 - 0
postcss.config.js

@@ -0,0 +1,10 @@
+module.exports = {
+  plugins: {
+    'postcss-pxtorem': {
+      rootValue({ file }) {
+        return file.indexOf('vant') !== -1 ? 37.5 : 75
+      },
+      propList: ['*']
+    }
+  }
+}

BIN
public/beituo/1/0-1.png


BIN
public/beituo/1/0.png


BIN
public/beituo/1/1.png


BIN
public/beituo/1/10.png


BIN
public/beituo/1/2.png


BIN
public/beituo/1/3.png


BIN
public/beituo/1/4-2.png


BIN
public/beituo/1/4.png


BIN
public/beituo/1/5.png


BIN
public/beituo/1/6.png


BIN
public/beituo/1/7.png


BIN
public/beituo/1/8.png


BIN
public/beituo/1/9.png


BIN
public/beituo/2/1.png


BIN
public/beituo/2/2.png


BIN
public/beituo/2/3.png


BIN
public/beituo/2/4.png


BIN
public/beituo/2/5.png


BIN
public/beituo/2/6.png


BIN
public/beituo/2/7-2.png


BIN
public/beituo/2/7-3.png


BIN
public/beituo/2/7-4.png


BIN
public/beituo/2/7-5.png


BIN
public/beituo/2/7-6.png


BIN
public/beituo/2/7.png


BIN
public/beituo/2/8.png


BIN
public/beituo/2/9.png


BIN
public/beituo/3/1.png


BIN
public/beituo/3/10.png


BIN
public/beituo/3/2.png


BIN
public/beituo/3/3.png


BIN
public/beituo/3/4.png


BIN
public/beituo/3/5.png


BIN
public/beituo/3/6.png


BIN
public/beituo/3/7.png


BIN
public/beituo/3/8.png


BIN
public/beituo/3/9.png


BIN
public/beituo/4/1.png


BIN
public/beituo/4/2.png


BIN
public/beituo/4/3.png


BIN
public/beituo/4/4.png


BIN
public/beituo/4/5-1.png


BIN
public/beituo/4/5.png


BIN
public/beituo/4/6-1.png


BIN
public/beituo/4/6.png


BIN
public/beituo/4/7-1.png


BIN
public/beituo/4/7.png


BIN
public/beituo/4/8.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 44 - 0
public/bookFairData.json


BIN
public/favicon.ico


BIN
public/fonts/SOURCEHANSERIFCN-BOLD.OTF


BIN
public/fonts/SOURCEHANSERIFCN-REGULAR.OTF


BIN
public/images/beituo/2/8.png


BIN
public/images/beituo/3/2.png


BIN
public/images/beituo/3/4.png


BIN
public/images/beituo/3/7.png


BIN
public/images/beituo/4/7.png


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 317 - 0
public/monumentData.json


+ 58 - 0
src/App.vue

@@ -0,0 +1,58 @@
+<script setup lang="ts">
+import { computed } from 'vue'
+import { ref } from 'vue'
+import { RouterView, useRoute, useRouter } from 'vue-router'
+
+const route = useRoute()
+const router = useRouter()
+const offset = ref({ x: 32, y: window.innerHeight - 100 })
+const showBackIcon = computed(
+  () => !['home', 'book-fair-home'].includes((route.name || '') as string)
+)
+
+const back = () => {
+  if (window.history.state.back) {
+    router.go(-1)
+  } else {
+    router.replace({
+      name: ((route.name || '') as string).indexOf('monument') ? 'home' : 'book-fair-home'
+    })
+  }
+}
+</script>
+
+<template>
+  <router-view v-slot="{ Component }">
+    <keep-alive include="monument,book-fair">
+      <component :is="Component" />
+    </keep-alive>
+  </router-view>
+
+  <van-floating-bubble
+    v-if="showBackIcon"
+    v-model:offset="offset"
+    axis="xy"
+    magnetic="x"
+    @click="back"
+  >
+    <img
+      v-if="((route.name || '') as string).indexOf('monument') > -1"
+      class="back-icon"
+      src="@/assets/images/btn_back_beita@2x.png"
+    />
+    <img v-else class="back-icon" src="@/assets/images/btn_back_zhouji@2x.png" />
+  </van-floating-bubble>
+</template>
+
+<style lang="scss">
+@import '@/assets/base.scss';
+
+.van-floating-bubble {
+  --van-floating-bubble-size: 108px;
+  --van-floating-bubble-border-radius: 0;
+  --van-floating-bubble-background: transparent;
+}
+.back-icon {
+  width: 100%;
+}
+</style>

+ 101 - 0
src/assets/base.scss

@@ -0,0 +1,101 @@
+body,
+ol,
+ul,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+th,
+td,
+dl,
+dd,
+form,
+fieldset,
+legend,
+input,
+textarea,
+select {
+  margin: 0;
+  padding: 0;
+}
+* {
+  box-sizing: border-box;
+  user-select: none;
+}
+body {
+  margin: 0px;
+  --van-popup-background: transparent;
+  --van-base-font: Source Han Sans CN-Regular;
+  -webkit-tap-highlight-color: transparent;
+}
+a {
+  color: #fff;
+  cursor: pointer;
+  text-decoration: none;
+}
+em {
+  font-style: normal;
+}
+li {
+  list-style: none;
+}
+img {
+  border: 0;
+  vertical-align: middle;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+p {
+  word-wrap: break-word;
+}
+iframe {
+  border: none;
+}
+
+#app {
+  font-size: 28px;
+}
+
+@font-face {
+  font-family: 'Source Han Serif CN-Bold';
+  src: url('/fonts/SOURCEHANSERIFCN-BOLD.OTF') format('opentype');
+  font-display: swap;
+}
+
+@font-face {
+  font-family: 'Source Han Sans CN-Regular';
+  src: url('/fonts/SOURCEHANSERIFCN-REGULAR.OTF') format('opentype');
+  font-display: swap;
+}
+
+.limit-line {
+  display: -webkit-box;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -webkit-line-clamp: 1;
+  -webkit-box-orient: vertical;
+  word-break: break-all;
+  word-wrap: break-word;
+}
+
+.line-2 {
+  -webkit-line-clamp: 2;
+}
+
+.loading-page {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  background: #fff;
+  z-index: 999;
+}

BIN
src/assets/images/banner_beita@2x-min.jpg


BIN
src/assets/images/banner_beita@2x.png


BIN
src/assets/images/banner_zhouji@2x-min.jpg


BIN
src/assets/images/banner_zhouji@2x.png


BIN
src/assets/images/bg_beita_normal@2x-min.jpg


BIN
src/assets/images/bg_preface_beita@2x-min.jpg


BIN
src/assets/images/bg_zhouji@2x-min.jpg


BIN
src/assets/images/bg_zhouji@2x.jpg


BIN
src/assets/images/btn_active_beita@2x.png


BIN
src/assets/images/btn_back_beita@2x.png


BIN
src/assets/images/btn_back_zhouji@2x.png


BIN
src/assets/images/btn_beita@2x.png


BIN
src/assets/images/btn_left_beita@2x.png


BIN
src/assets/images/btn_left_zhouji@2x.png


BIN
src/assets/images/btn_right_beita@2x.png


BIN
src/assets/images/btn_right_zhouji@2x.png


BIN
src/assets/images/btn_start_beita@2x.png


BIN
src/assets/images/btn_start_zhouji@2x.png


BIN
src/assets/images/btn_zhouji@2x.png


BIN
src/assets/images/btz-1.png


BIN
src/assets/images/btz-2.png


BIN
src/assets/images/btz-3.png


BIN
src/assets/images/icon_chosen_left@2x.png


BIN
src/assets/images/icon_enter@2x.png


BIN
src/assets/images/icon_more@2x.png


BIN
src/assets/images/img_preface_left@2x.png


BIN
src/assets/images/label_beita@2x.png


BIN
src/assets/images/label_zhouji@2x.png


BIN
src/assets/images/tab_beita@2x.png


+ 0 - 0
src/assets/images/tab_part@2x.png


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است