Jelajahi Sumber

新增链接开票功能 完成开票页面访问

yuanmingze 1 bulan lalu
induk
melakukan
3825230908
7 mengubah file dengan 447 tambahan dan 58 penghapusan
  1. 2 1
      package.json
  2. 220 22
      pnpm-lock.yaml
  3. 4 10
      src/App.vue
  4. 8 2
      src/pages.json
  5. 18 15
      src/pages/index/index.vue
  6. 193 0
      src/pages/invoice-entry/index.vue
  7. 2 8
      src/pages/web-view/index.vue

+ 2 - 1
package.json

@@ -62,8 +62,9 @@
     "@dcloudio/uni-cli-shared": "3.0.0-4080420251103001",
     "@dcloudio/uni-stacktracey": "3.0.0-4080420251103001",
     "@dcloudio/vite-plugin-uni": "3.0.0-4080420251103001",
-    "@vue/tsconfig": "^0.1.3",
     "@vue/runtime-core": "^3.4.21",
+    "@vue/tsconfig": "^0.1.3",
+    "sass": "^1.98.0",
     "typescript": "^4.9.4",
     "vite": "5.2.8",
     "vue-tsc": "^1.0.24"

+ 220 - 22
pnpm-lock.yaml

@@ -13,10 +13,10 @@ importers:
         version: 3.0.0-4080420251103001(@dcloudio/types@3.4.30)(postcss@8.5.8)(rollup@4.60.0)(vue@3.5.31(typescript@4.9.5))
       '@dcloudio/uni-app-harmony':
         specifier: 3.0.0-4080420251103001
-        version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+        version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       '@dcloudio/uni-app-plus':
         specifier: 3.0.0-4080420251103001
-        version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+        version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       '@dcloudio/uni-components':
         specifier: 3.0.0-4080420251103001
         version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vue@3.5.31(typescript@4.9.5))
@@ -77,19 +77,22 @@ importers:
         version: 3.0.0-4080420251103001
       '@dcloudio/vite-plugin-uni':
         specifier: 3.0.0-4080420251103001
-        version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+        version: 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       '@vue/runtime-core':
         specifier: ^3.4.21
         version: 3.5.31
       '@vue/tsconfig':
         specifier: ^0.1.3
         version: 0.1.3(@types/node@25.5.0)
+      sass:
+        specifier: ^1.98.0
+        version: 1.98.0
       typescript:
         specifier: ^4.9.4
         version: 4.9.5
       vite:
         specifier: 5.2.8
-        version: 5.2.8(@types/node@25.5.0)(terser@5.46.1)
+        version: 5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1)
       vue-tsc:
         specifier: ^1.0.24
         version: 1.8.27(typescript@4.9.5)
@@ -1264,6 +1267,94 @@ packages:
     resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
     engines: {node: '>= 8'}
 
+  '@parcel/watcher-android-arm64@2.5.6':
+    resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [android]
+
+  '@parcel/watcher-darwin-arm64@2.5.6':
+    resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [darwin]
+
+  '@parcel/watcher-darwin-x64@2.5.6':
+    resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [darwin]
+
+  '@parcel/watcher-freebsd-x64@2.5.6':
+    resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [freebsd]
+
+  '@parcel/watcher-linux-arm-glibc@2.5.6':
+    resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    libc: [glibc]
+
+  '@parcel/watcher-linux-arm-musl@2.5.6':
+    resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm]
+    os: [linux]
+    libc: [musl]
+
+  '@parcel/watcher-linux-arm64-glibc@2.5.6':
+    resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    libc: [glibc]
+
+  '@parcel/watcher-linux-arm64-musl@2.5.6':
+    resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [linux]
+    libc: [musl]
+
+  '@parcel/watcher-linux-x64-glibc@2.5.6':
+    resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    libc: [glibc]
+
+  '@parcel/watcher-linux-x64-musl@2.5.6':
+    resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [linux]
+    libc: [musl]
+
+  '@parcel/watcher-win32-arm64@2.5.6':
+    resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [arm64]
+    os: [win32]
+
+  '@parcel/watcher-win32-ia32@2.5.6':
+    resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [ia32]
+    os: [win32]
+
+  '@parcel/watcher-win32-x64@2.5.6':
+    resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
+    engines: {node: '>= 10.0.0'}
+    cpu: [x64]
+    os: [win32]
+
+  '@parcel/watcher@2.5.6':
+    resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
+    engines: {node: '>= 10.0.0'}
+
   '@rollup/pluginutils@5.1.0':
     resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==}
     engines: {node: '>=14.0.0'}
@@ -1815,6 +1906,10 @@ packages:
     resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
     engines: {node: '>= 8.10.0'}
 
+  chokidar@4.0.3:
+    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+    engines: {node: '>= 14.16.0'}
+
   ci-info@3.9.0:
     resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
     engines: {node: '>=8'}
@@ -1998,6 +2093,10 @@ packages:
     resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
     engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
 
+  detect-libc@2.1.2:
+    resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+    engines: {node: '>=8'}
+
   detect-newline@3.1.0:
     resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==}
     engines: {node: '>=8'}
@@ -2322,6 +2421,9 @@ packages:
   ieee754@1.2.1:
     resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
 
+  immutable@5.1.5:
+    resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==}
+
   import-local@3.2.0:
     resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
     engines: {node: '>=8'}
@@ -2773,6 +2875,9 @@ packages:
     resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
     engines: {node: '>= 0.6'}
 
+  node-addon-api@7.1.1:
+    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+
   node-int64@0.4.0:
     resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==}
 
@@ -3061,6 +3166,10 @@ packages:
     resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
     engines: {node: '>=8.10.0'}
 
+  readdirp@4.1.2:
+    resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+    engines: {node: '>= 14.18.0'}
+
   regenerate-unicode-properties@10.2.2:
     resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==}
     engines: {node: '>=4'}
@@ -3139,6 +3248,11 @@ packages:
   safer-buffer@2.1.2:
     resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
 
+  sass@1.98.0:
+    resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==}
+    engines: {node: '>=14.0.0'}
+    hasBin: true
+
   sax@1.6.0:
     resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
     engines: {node: '>=11.0.0'}
@@ -4410,10 +4524,10 @@ snapshots:
 
   '@dcloudio/types@3.4.30': {}
 
-  '@dcloudio/uni-app-harmony@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
+  '@dcloudio/uni-app-harmony@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
     dependencies:
       '@dcloudio/uni-app-uts': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vue@3.5.31(typescript@4.9.5))
-      '@dcloudio/uni-app-vite': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+      '@dcloudio/uni-app-vite': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       debug: 4.3.7
       fs-extra: 10.1.0
       licia: 1.41.1
@@ -4428,10 +4542,10 @@ snapshots:
       - vite
       - vue
 
-  '@dcloudio/uni-app-plus@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
+  '@dcloudio/uni-app-plus@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
     dependencies:
       '@dcloudio/uni-app-uts': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vue@3.5.31(typescript@4.9.5))
-      '@dcloudio/uni-app-vite': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+      '@dcloudio/uni-app-vite': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       '@dcloudio/uni-app-vue': 3.0.0-4080420251103001
       debug: 4.3.7
       fs-extra: 10.1.0
@@ -4482,14 +4596,14 @@ snapshots:
       - ts-node
       - vue
 
-  '@dcloudio/uni-app-vite@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
+  '@dcloudio/uni-app-vite@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
     dependencies:
       '@dcloudio/uni-cli-shared': 3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vue@3.5.31(typescript@4.9.5))
       '@dcloudio/uni-i18n': 3.0.0-4080420251103001
       '@dcloudio/uni-nvue-styler': 3.0.0-4080420251103001
       '@dcloudio/uni-shared': 3.0.0-4080420251103001
       '@rollup/pluginutils': 5.1.0(rollup@4.60.0)
-      '@vitejs/plugin-vue': 5.2.4(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+      '@vitejs/plugin-vue': 5.2.4(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       '@vue/compiler-dom': 3.4.21
       '@vue/compiler-sfc': 3.4.21
       debug: 4.3.7
@@ -5007,7 +5121,7 @@ snapshots:
       - ts-node
       - vue
 
-  '@dcloudio/vite-plugin-uni@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
+  '@dcloudio/vite-plugin-uni@3.0.0-4080420251103001(postcss@8.5.8)(rollup@4.60.0)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
     dependencies:
       '@babel/core': 7.25.2
       '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2)
@@ -5016,9 +5130,9 @@ snapshots:
       '@dcloudio/uni-nvue-styler': 3.0.0-4080420251103001
       '@dcloudio/uni-shared': 3.0.0-4080420251103001
       '@rollup/pluginutils': 5.1.0(rollup@4.60.0)
-      '@vitejs/plugin-legacy': 5.3.2(terser@5.46.1)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))
-      '@vitejs/plugin-vue': 5.2.4(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
-      '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+      '@vitejs/plugin-legacy': 5.3.2(terser@5.46.1)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))
+      '@vitejs/plugin-vue': 5.2.4(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
+      '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))
       '@vue/compiler-core': 3.4.21
       '@vue/compiler-dom': 3.4.21
       '@vue/compiler-sfc': 3.4.21
@@ -5035,7 +5149,7 @@ snapshots:
       picocolors: 1.1.0
       terser: 5.46.1
       unplugin-auto-import: 19.1.0
-      vite: 5.2.8(@types/node@25.5.0)(terser@5.46.1)
+      vite: 5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1)
     transitivePeerDependencies:
       - '@nuxt/kit'
       - '@vueuse/core'
@@ -5634,6 +5748,67 @@ snapshots:
       '@nodelib/fs.scandir': 2.1.5
       fastq: 1.20.1
 
+  '@parcel/watcher-android-arm64@2.5.6':
+    optional: true
+
+  '@parcel/watcher-darwin-arm64@2.5.6':
+    optional: true
+
+  '@parcel/watcher-darwin-x64@2.5.6':
+    optional: true
+
+  '@parcel/watcher-freebsd-x64@2.5.6':
+    optional: true
+
+  '@parcel/watcher-linux-arm-glibc@2.5.6':
+    optional: true
+
+  '@parcel/watcher-linux-arm-musl@2.5.6':
+    optional: true
+
+  '@parcel/watcher-linux-arm64-glibc@2.5.6':
+    optional: true
+
+  '@parcel/watcher-linux-arm64-musl@2.5.6':
+    optional: true
+
+  '@parcel/watcher-linux-x64-glibc@2.5.6':
+    optional: true
+
+  '@parcel/watcher-linux-x64-musl@2.5.6':
+    optional: true
+
+  '@parcel/watcher-win32-arm64@2.5.6':
+    optional: true
+
+  '@parcel/watcher-win32-ia32@2.5.6':
+    optional: true
+
+  '@parcel/watcher-win32-x64@2.5.6':
+    optional: true
+
+  '@parcel/watcher@2.5.6':
+    dependencies:
+      detect-libc: 2.1.2
+      is-glob: 4.0.3
+      node-addon-api: 7.1.1
+      picomatch: 4.0.4
+    optionalDependencies:
+      '@parcel/watcher-android-arm64': 2.5.6
+      '@parcel/watcher-darwin-arm64': 2.5.6
+      '@parcel/watcher-darwin-x64': 2.5.6
+      '@parcel/watcher-freebsd-x64': 2.5.6
+      '@parcel/watcher-linux-arm-glibc': 2.5.6
+      '@parcel/watcher-linux-arm-musl': 2.5.6
+      '@parcel/watcher-linux-arm64-glibc': 2.5.6
+      '@parcel/watcher-linux-arm64-musl': 2.5.6
+      '@parcel/watcher-linux-x64-glibc': 2.5.6
+      '@parcel/watcher-linux-x64-musl': 2.5.6
+      '@parcel/watcher-win32-arm64': 2.5.6
+      '@parcel/watcher-win32-ia32': 2.5.6
+      '@parcel/watcher-win32-x64': 2.5.6
+    optional: true
+
   '@rollup/pluginutils@5.1.0(rollup@4.60.0)':
     dependencies:
       '@types/estree': 1.0.8
@@ -5778,7 +5953,7 @@ snapshots:
     dependencies:
       '@types/yargs-parser': 21.0.3
 
-  '@vitejs/plugin-legacy@5.3.2(terser@5.46.1)(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))':
+  '@vitejs/plugin-legacy@5.3.2(terser@5.46.1)(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))':
     dependencies:
       '@babel/core': 7.25.2
       '@babel/preset-env': 7.29.2(@babel/core@7.25.2)
@@ -5789,23 +5964,23 @@ snapshots:
       regenerator-runtime: 0.14.1
       systemjs: 6.15.1
       terser: 5.46.1
-      vite: 5.2.8(@types/node@25.5.0)(terser@5.46.1)
+      vite: 5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
+  '@vitejs/plugin-vue-jsx@3.1.0(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
     dependencies:
       '@babel/core': 7.25.2
       '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.25.2)
       '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.25.2)
-      vite: 5.2.8(@types/node@25.5.0)(terser@5.46.1)
+      vite: 5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1)
       vue: 3.5.31(typescript@4.9.5)
     transitivePeerDependencies:
       - supports-color
 
-  '@vitejs/plugin-vue@5.2.4(vite@5.2.8(@types/node@25.5.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
+  '@vitejs/plugin-vue@5.2.4(vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1))(vue@3.5.31(typescript@4.9.5))':
     dependencies:
-      vite: 5.2.8(@types/node@25.5.0)(terser@5.46.1)
+      vite: 5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1)
       vue: 3.5.31(typescript@4.9.5)
 
   '@volar/language-core@1.11.1':
@@ -6236,6 +6411,10 @@ snapshots:
     optionalDependencies:
       fsevents: 2.3.3
 
+  chokidar@4.0.3:
+    dependencies:
+      readdirp: 4.1.2
+
   ci-info@3.9.0: {}
 
   cjs-module-lexer@1.4.3: {}
@@ -6368,6 +6547,9 @@ snapshots:
 
   destroy@1.2.0: {}
 
+  detect-libc@2.1.2:
+    optional: true
+
   detect-newline@3.1.0: {}
 
   diff-sequences@27.5.1: {}
@@ -6723,6 +6905,8 @@ snapshots:
 
   ieee754@1.2.1: {}
 
+  immutable@5.1.5: {}
+
   import-local@3.2.0:
     dependencies:
       pkg-dir: 4.2.0
@@ -7376,6 +7560,9 @@ snapshots:
 
   negotiator@0.6.3: {}
 
+  node-addon-api@7.1.1:
+    optional: true
+
   node-int64@0.4.0: {}
 
   node-releases@2.0.36: {}
@@ -7642,6 +7829,8 @@ snapshots:
     dependencies:
       picomatch: 2.3.2
 
+  readdirp@4.1.2: {}
+
   regenerate-unicode-properties@10.2.2:
     dependencies:
       regenerate: 1.4.2
@@ -7738,6 +7927,14 @@ snapshots:
 
   safer-buffer@2.1.2: {}
 
+  sass@1.98.0:
+    dependencies:
+      chokidar: 4.0.3
+      immutable: 5.1.5
+      source-map-js: 1.2.1
+    optionalDependencies:
+      '@parcel/watcher': 2.5.6
+
   sax@1.6.0: {}
 
   saxes@5.0.1:
@@ -8056,7 +8253,7 @@ snapshots:
 
   vary@1.1.2: {}
 
-  vite@5.2.8(@types/node@25.5.0)(terser@5.46.1):
+  vite@5.2.8(@types/node@25.5.0)(sass@1.98.0)(terser@5.46.1):
     dependencies:
       esbuild: 0.20.2
       postcss: 8.5.8
@@ -8064,6 +8261,7 @@ snapshots:
     optionalDependencies:
       '@types/node': 25.5.0
       fsevents: 2.3.3
+      sass: 1.98.0
       terser: 5.46.1
 
   vue-i18n@9.14.5(vue@3.5.31(typescript@4.9.5)):

+ 4 - 10
src/App.vue

@@ -1,13 +1,7 @@
 <script setup lang="ts">
-import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
-onLaunch(() => {
-  console.log("App Launch");
-});
-onShow(() => {
-  console.log("App Show");
-});
-onHide(() => {
-  console.log("App Hide");
-});
+import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
+onLaunch(() => {})
+onShow(() => {})
+onHide(() => {})
 </script>
 <style></style>

+ 8 - 2
src/pages.json

@@ -4,13 +4,19 @@
     {
       "path": "pages/index/index",
       "style": {
-        "navigationBarTitleText": "uni-app"
+        "navigationBarTitleText": "票要易"
       }
     },
     {
       "path": "pages/web-view/index",
       "style": {
-        "navigationBarTitleText": "web-view"
+        "navigationBarTitleText": "票要易"
+      }
+    },
+    {
+      "path": "pages/invoice-entry/index",
+      "style": {
+        "navigationBarTitleText": "票要易开票信息确认"
       }
     }
   ],

+ 18 - 15
src/pages/index/index.vue

@@ -1,26 +1,29 @@
 <template>
-  <view class="content">
-    <view class="input">
-      <input class="uni-input" v-model="value" focus placeholder="输入id" />
-    </view>
-    <button size="default" @click="handleClick">跳转</button>
+  <view>
+    <web-view :src="url"></web-view>
   </view>
 </template>
 
 <script setup lang="ts">
 import { ref } from 'vue'
-
-const value = ref('')
-
-const handleClick = () => {
-  if (!value.value) {
-    console.warn('请输入id')
+import { onLoad } from '@dcloudio/uni-app'
+const url = ref('')
+onLoad((e) => {
+  const option = uni.getLaunchOptionsSync()
+  console.log('onLoad res', option)
+  // 判断如果不是走短链进入 重定向到发票信息确认页
+  if (option.scene != 1194) {
+    uni.redirectTo({
+      url: `/pages/invoice-entry/index`,
+    })
+  }
+  const redirect = typeof option.query?.redirect === 'string' ? option.query.redirect : ''
+  if (!redirect) {
     return
   }
-  uni.navigateTo({
-    url: `/pages/web-view/index?id=${value.value}`,
-  })
-}
+  const redirectUrl = decodeURIComponent(redirect)
+  url.value = redirectUrl
+})
 </script>
 
 <style>

+ 193 - 0
src/pages/invoice-entry/index.vue

@@ -0,0 +1,193 @@
+<template>
+  <view class="link-entry-page">
+    <view class="page-bg">
+      <view class="bg-circle bg-circle-top"></view>
+      <view class="bg-circle bg-circle-bottom"></view>
+      <view class="bg-grid"></view>
+    </view>
+
+    <view class="content">
+      <view class="hero">
+        <view class="hero-subtitle">欢迎使用</view>
+        <view class="hero-title">票要易</view>
+        <view class="hero-desc">开票信息确认</view>
+      </view>
+
+      <view class="intro-card">
+        <view class="intro-tip">此小程序用于短链接打开的</view>
+
+        <view class="divider">
+          <view class="divider-line"></view>
+          <view class="divider-dot"></view>
+          <view class="divider-line"></view>
+        </view>
+
+        <view class="intro-title">开票信息确认</view>
+        <view class="intro-text"> 请通过收到的短链接进入,完成相关信息确认流程 </view>
+      </view>
+
+      <view class="footer-tip"> 点击短链接即可进入 </view>
+    </view>
+  </view>
+</template>
+
+<script setup lang="ts"></script>
+
+<style scoped lang="scss">
+.link-entry-page {
+  position: relative;
+  min-height: 100vh;
+  overflow: hidden;
+  background: linear-gradient(180deg, #4d74f6 0%, #4f64ee 45%, #4b57e6 100%);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  box-sizing: border-box;
+
+  .page-bg {
+    position: absolute;
+    inset: 0;
+    pointer-events: none;
+
+    .bg-circle {
+      position: absolute;
+      border-radius: 999px;
+      filter: blur(50rpx);
+      opacity: 0.32;
+    }
+
+    .bg-circle-top {
+      top: 140rpx;
+      left: -80rpx;
+      width: 280rpx;
+      height: 280rpx;
+      background: rgba(255, 255, 255, 0.18);
+    }
+
+    .bg-circle-bottom {
+      right: -100rpx;
+      bottom: 180rpx;
+      width: 320rpx;
+      height: 320rpx;
+      background: rgba(255, 255, 255, 0.12);
+    }
+
+    .bg-grid {
+      position: absolute;
+      inset: 0;
+      opacity: 0.06;
+      background-image:
+        linear-gradient(rgba(255, 255, 255, 0.5) 1px, transparent 1px),
+        linear-gradient(90deg, rgba(255, 255, 255, 0.5) 1px, transparent 1px);
+      background-size: 48rpx 48rpx;
+    }
+  }
+
+  .content {
+    position: relative;
+    z-index: 1;
+    width: 100%;
+    padding: 120rpx 64rpx 88rpx;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+  }
+
+  .hero {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    color: #ffffff;
+    text-align: center;
+
+    .hero-subtitle {
+      font-size: 44rpx;
+      line-height: 1.4;
+      color: rgba(255, 255, 255, 0.72);
+      letter-spacing: 2rpx;
+    }
+
+    .hero-title {
+      margin-top: 36rpx;
+      font-size: 108rpx;
+      line-height: 1;
+      font-weight: 700;
+      letter-spacing: 4rpx;
+      text-shadow: 0 10rpx 28rpx rgba(34, 50, 160, 0.22);
+    }
+
+    .hero-desc {
+      margin-top: 20rpx;
+      font-size: 56rpx;
+      line-height: 1.3;
+      font-weight: 500;
+      color: rgba(255, 255, 255, 0.94);
+    }
+  }
+
+  .intro-card {
+    width: 100%;
+    margin-top: 140rpx;
+    padding: 56rpx 40rpx;
+    border-radius: 32rpx;
+    background: rgba(255, 255, 255, 0.08);
+    border: 1rpx solid rgba(255, 255, 255, 0.14);
+    backdrop-filter: blur(12rpx);
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    text-align: center;
+
+    .intro-tip {
+      font-size: 34rpx;
+      line-height: 1.6;
+      color: rgba(255, 255, 255, 0.82);
+    }
+
+    .divider {
+      margin: 28rpx 0 32rpx;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      gap: 18rpx;
+
+      .divider-line {
+        width: 120rpx;
+        height: 2rpx;
+        background: rgba(255, 255, 255, 0.5);
+      }
+
+      .divider-dot {
+        width: 12rpx;
+        height: 12rpx;
+        border-radius: 50%;
+        background: rgba(255, 255, 255, 0.92);
+      }
+    }
+
+    .intro-title {
+      font-size: 64rpx;
+      line-height: 1.25;
+      font-weight: 700;
+      color: #ffffff;
+    }
+
+    .intro-text {
+      margin-top: 26rpx;
+      font-size: 30rpx;
+      line-height: 1.8;
+      color: rgba(255, 255, 255, 0.72);
+    }
+  }
+
+  .footer-tip {
+    margin-top: 120rpx;
+    font-size: 34rpx;
+    line-height: 1.6;
+    color: rgba(255, 255, 255, 0.66);
+    text-align: center;
+  }
+}
+</style>

+ 2 - 8
src/pages/web-view/index.vue

@@ -7,15 +7,9 @@
 <script setup lang="ts">
 import { ref } from 'vue'
 import { onLoad } from '@dcloudio/uni-app'
-const id = ref('')
+
 const url = ref('')
-onLoad((e) => {
-  console.log('e', e)
-  if (e?.id) {
-    id.value = e.id
-    url.value = `https://hcppre.yaoyi.net/h5/login?pushRecordId=${e.id}`
-  }
-})
+onLoad((e) => {})
 </script>
 
 <style lang="scss" scoped></style>