dangyunlong преди 3 месеца
родител
ревизия
0ee8033c80
променени са 40 файла, в които са добавени 2840 реда и са изтрити 4965 реда
  1. 979 0
      .nuxt/dev/index.mjs
  2. 0 0
      .nuxt/dev/index.mjs.map
  3. 6 807
      .nuxt/dist/server/client.manifest.json
  4. 1 819
      .nuxt/dist/server/client.manifest.mjs
  5. 1 1532
      .nuxt/dist/server/server.mjs
  6. 1 0
      .nuxt/imports.d.ts
  7. 1 1
      .nuxt/manifest/latest.json
  8. 1 0
      .nuxt/manifest/meta/3480fe42-1d88-41cd-ae02-6fb46500d481.json
  9. 0 1
      .nuxt/manifest/meta/8f52ffe3-41db-4ace-b7e0-6a79c4ccab5a.json
  10. 1 0
      .nuxt/manifest/meta/dev.json
  11. 17 0
      .nuxt/nitro.json
  12. 9 0
      .nuxt/nuxt.json
  13. 1 1
      .nuxt/tsconfig.json
  14. 1 0
      .nuxt/types/build.d.ts
  15. 2 0
      .nuxt/types/imports.d.ts
  16. 7 2
      .nuxt/types/plugins.d.ts
  17. 1 1
      components/detail/HotNews.vue
  18. 1 1
      components/detail/HotNews2.vue
  19. 1 1
      components/home/BigSwiper.vue
  20. 1 1
      components/home/BigTitle_List.vue
  21. 1 1
      components/home/PageMessage.vue
  22. 1 1
      components/home/SecondaryHeading.vue
  23. 3 3
      components/home/Slider.vue
  24. 2 2
      components/home/foot.vue
  25. 2 2
      components/home/foot1.vue
  26. 1 1
      components/home/pageHead.vue
  27. 2 2
      components/home/pageNavigation.vue
  28. 2 2
      components/home/pageNavigation1.vue
  29. 546 233
      pages/[dir]/[dir]/[id].vue
  30. 0 637
      pages/[dir]/[dir]/a/[id].vue
  31. 329 0
      pages/[dir]/[dir]/list-[id].vue
  32. 543 230
      pages/[dir]/[id].vue
  33. 0 637
      pages/[dir]/a/[id].vue
  34. 24 22
      pages/[dir]/index.html.vue
  35. 327 0
      pages/[dir]/list-[id].vue
  36. 4 4
      pages/about/[dir]/[dir]/[id].vue
  37. 4 4
      pages/about/[dir]/index.html.vue
  38. 4 4
      pages/about/[dir]/list-[id].vue
  39. 12 12
      pages/index.vue
  40. 1 1
      pages/search/[id].vue

Файловите разлики са ограничени, защото са твърде много
+ 979 - 0
.nuxt/dev/index.mjs


Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
.nuxt/dev/index.mjs.map


+ 6 - 807
.nuxt/dist/server/client.manifest.json

@@ -1,819 +1,18 @@
 {
-  "_B1s4Rlms.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "B1s4Rlms.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js"
-    ]
-  },
-  "_B9mZv4-U.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "B9mZv4-U.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js"
-    ]
-  },
-  "_BEJNNuI_.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BEJNNuI_.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_BWf8iMc7.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BWf8iMc7.js",
-    "name": "pageNavigation1",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "pageNavigation1.Bk3SFKV4.css"
-    ]
-  },
-  "pageNavigation1.Bk3SFKV4.css": {
-    "file": "pageNavigation1.Bk3SFKV4.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_Bc7cTag3.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Bc7cTag3.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "_CtYSYTMV.js",
-      "_B1s4Rlms.js"
-    ]
-  },
-  "_CGsTfZp0.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CGsTfZp0.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Dh9Fb4AY.js",
-      "_Sl0Xw2yx.js"
-    ]
-  },
-  "_CRC1gjq7.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CRC1gjq7.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Dh9Fb4AY.js",
-      "_Sl0Xw2yx.js"
-    ]
-  },
-  "_CX0XGKE1.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CX0XGKE1.js",
-    "name": "publicFunction",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_CGsTfZp0.js"
-    ],
-    "css": [
-      "publicFunction.ZvxFVNFP.css"
-    ]
-  },
-  "publicFunction.ZvxFVNFP.css": {
-    "file": "publicFunction.ZvxFVNFP.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_Cc3dVjup.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Cc3dVjup.js",
-    "name": "HotNews2",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "HotNews2.Din0nC3w.css"
-    ]
-  },
-  "HotNews2.Din0nC3w.css": {
-    "file": "HotNews2.Din0nC3w.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_CtVYnphz.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CtVYnphz.js",
-    "name": "TopTen",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "TopTen.Bbf0vbjZ.css"
-    ]
-  },
-  "TopTen.Bbf0vbjZ.css": {
-    "file": "TopTen.Bbf0vbjZ.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_CtYSYTMV.js": {
-    "resourceType": "script",
-    "module": true,
+  "@vite/client": {
     "prefetch": true,
-    "preload": true,
-    "file": "CtYSYTMV.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_Cz7uiTfX.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Cz7uiTfX.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_D5nmbKR2.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "D5nmbKR2.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CtYSYTMV.js"
-    ]
-  },
-  "_DH6ilFJX.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DH6ilFJX.js",
-    "name": "status",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "_DgxsGVaU.js",
-      "_Df10qWMc.js"
-    ],
-    "css": [
-      "status.CwCqeKJH.css"
-    ]
-  },
-  "status.CwCqeKJH.css": {
-    "file": "status.CwCqeKJH.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_Df10qWMc.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Df10qWMc.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ]
-  },
-  "_DgxsGVaU.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DgxsGVaU.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js"
-    ]
-  },
-  "_Dh9Fb4AY.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Dh9Fb4AY.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_DoDrNSwB.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DoDrNSwB.js",
-    "name": "foot1",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "foot1.C_AE7cJI.css"
-    ]
-  },
-  "foot1.C_AE7cJI.css": {
-    "file": "foot1.C_AE7cJI.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_HotNews2.Din0nC3w.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "HotNews2.Din0nC3w.css",
-    "src": "_HotNews2.Din0nC3w.css"
-  },
-  "_Sl0Xw2yx.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Sl0Xw2yx.js",
-    "name": "pageHead",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "pageHead.sn8S1oPi.css"
-    ]
-  },
-  "pageHead.sn8S1oPi.css": {
-    "file": "pageHead.sn8S1oPi.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_TopTen.Bbf0vbjZ.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "TopTen.Bbf0vbjZ.css",
-    "src": "_TopTen.Bbf0vbjZ.css"
-  },
-  "_foot1.C_AE7cJI.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "foot1.C_AE7cJI.css",
-    "src": "_foot1.C_AE7cJI.css"
-  },
-  "_pageHead.sn8S1oPi.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "pageHead.sn8S1oPi.css",
-    "src": "_pageHead.sn8S1oPi.css"
-  },
-  "_pageNavigation1.Bk3SFKV4.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "pageNavigation1.Bk3SFKV4.css",
-    "src": "_pageNavigation1.Bk3SFKV4.css"
-  },
-  "_publicFunction.ZvxFVNFP.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "publicFunction.ZvxFVNFP.css",
-    "src": "_publicFunction.ZvxFVNFP.css"
-  },
-  "_status.CwCqeKJH.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "status.CwCqeKJH.css",
-    "src": "_status.CwCqeKJH.css"
-  },
-  "middleware/auth.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BmWZdpvC.js",
-    "name": "auth",
-    "src": "middleware/auth.js",
-    "isDynamicEntry": true,
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "node_modules/nuxt/dist/app/entry.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Lb-SdT1G.js",
-    "name": "entry",
-    "src": "node_modules/nuxt/dist/app/entry.js",
     "isEntry": true,
-    "dynamicImports": [
-      "middleware/auth.js"
-    ],
-    "css": [
-      "entry.BJOVcViR.css"
-    ],
-    "_globalCSS": true
-  },
-  "entry.BJOVcViR.css": {
-    "file": "entry.BJOVcViR.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/[dir]/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DMhMI6Pu.js",
-    "name": "_id_",
-    "src": "pages/[dir]/[dir]/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js",
-      "_Df10qWMc.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "_id_.DLZo6_Ct.css": {
-    "file": "_id_.DLZo6_Ct.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/[dir]/a/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "8XovFtZx.js",
-    "name": "_id_",
-    "src": "pages/[dir]/[dir]/a/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CGsTfZp0.js",
-      "_Cz7uiTfX.js",
-      "_B9mZv4-U.js",
-      "_CRC1gjq7.js",
-      "_DgxsGVaU.js",
-      "_Dh9Fb4AY.js"
-    ],
-    "css": []
-  },
-  "_id_.WgWFiTJG.css": {
-    "file": "_id_.WgWFiTJG.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CCBGiXBN.js",
-    "name": "_id_",
-    "src": "pages/[dir]/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js",
-      "_Df10qWMc.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "_id_.DIxt-Nr4.css": {
-    "file": "_id_.DIxt-Nr4.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/a/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CY-1ZnP6.js",
-    "name": "_id_",
-    "src": "pages/[dir]/a/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CGsTfZp0.js",
-      "_Cz7uiTfX.js",
-      "_B9mZv4-U.js",
-      "_CRC1gjq7.js",
-      "_DgxsGVaU.js",
-      "_Dh9Fb4AY.js"
-    ],
-    "css": []
-  },
-  "_id_.65FIQc0J.css": {
-    "file": "_id_.65FIQc0J.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BUbOQ9Au.js",
-    "name": "index",
-    "src": "pages/[dir]/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_CX0XGKE1.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "_CGsTfZp0.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js"
-    ],
-    "css": []
-  },
-  "index.B1NTA0VU.css": {
-    "file": "index.B1NTA0VU.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/about/[dir]/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CIkqcR94.js",
-    "name": "_id_",
-    "src": "pages/about/[dir]/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js"
-    ],
-    "css": []
-  },
-  "_id_.Gh1a0ze0.css": {
-    "file": "_id_.Gh1a0ze0.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/about/[dir]/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "D7dC7kjd.js",
-    "name": "index",
-    "src": "pages/about/[dir]/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js"
-    ],
-    "css": []
-  },
-  "index.sjUDFqaf.css": {
-    "file": "index.sjUDFqaf.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/about/[dir]/zhaopin/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "KeZF_nC0.js",
-    "name": "_id_",
-    "src": "pages/about/[dir]/zhaopin/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js"
-    ],
-    "css": []
-  },
-  "_id_.lOUsh5xA.css": {
-    "file": "_id_.lOUsh5xA.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/advertising/adDetail.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "B_5n9Jtb.js",
-    "name": "adDetail",
-    "src": "pages/advertising/adDetail.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DH6ilFJX.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_DgxsGVaU.js",
-      "_Df10qWMc.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "adDetail.u8ZEpNcv.css": {
-    "file": "adDetail.u8ZEpNcv.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/advertising/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Bc4u7Vn9.js",
-    "name": "index",
-    "src": "pages/advertising/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DH6ilFJX.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_D5nmbKR2.js",
-      "_BEJNNuI_.js",
-      "_CGsTfZp0.js",
-      "_DoDrNSwB.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js",
-      "_CRC1gjq7.js",
-      "_B9mZv4-U.js",
-      "_DgxsGVaU.js",
-      "_Bc7cTag3.js",
-      "_Df10qWMc.js",
-      "_CtYSYTMV.js"
-    ],
-    "css": []
-  },
-  "index.iI4le9dd.css": {
-    "file": "index.iI4le9dd.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "D1EHL5sI.js",
-    "name": "index",
-    "src": "pages/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_CX0XGKE1.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Bc7cTag3.js",
-      "_CtVYnphz.js",
-      "_CGsTfZp0.js",
-      "_B9mZv4-U.js",
-      "_CRC1gjq7.js",
-      "_DgxsGVaU.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CtYSYTMV.js"
-    ],
+    "file": "@vite/client",
     "css": [],
-    "assets": [
-      "sndc.C2AWBCR5.png"
-    ]
-  },
-  "index.CZ3TF1V8.css": {
-    "file": "index.CZ3TF1V8.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "sndc.C2AWBCR5.png": {
-    "file": "sndc.C2AWBCR5.png",
-    "resourceType": "image",
-    "prefetch": true,
-    "mimeType": "image/png"
-  },
-  "pages/search/[id].vue": {
-    "resourceType": "script",
     "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CE1xRsZl.js",
-    "name": "_id_",
-    "src": "pages/search/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js",
-      "_Df10qWMc.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
+    "resourceType": "script"
   },
-  "_id_.B0jPKURO.css": {
-    "file": "_id_.B0jPKURO.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/topic/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Ce-ICsyu.js",
-    "name": "_id_",
-    "src": "pages/topic/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_BEJNNuI_.js",
-      "_CRC1gjq7.js",
-      "_CGsTfZp0.js",
-      "_Df10qWMc.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js"
-    ],
-    "css": []
-  },
-  "_id_.B8xLMiS_.css": {
-    "file": "_id_.B8xLMiS_.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/topic/index.vue": {
+  "D:/MyProject/gogs/sannongzixunwang_web_ssr/sannongzixunwang_web/node_modules/nuxt/dist/app/entry.js": {
     "resourceType": "script",
     "module": true,
     "prefetch": true,
     "preload": true,
-    "file": "DLynSwuH.js",
-    "name": "index",
-    "src": "pages/topic/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_D5nmbKR2.js",
-      "_Df10qWMc.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js",
-      "_CtYSYTMV.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "index.DmxC_wPZ.css": {
-    "file": "index.DmxC_wPZ.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "public/index/sndc.png": {
-    "resourceType": "image",
-    "prefetch": true,
-    "mimeType": "image/png",
-    "file": "sndc.C2AWBCR5.png",
-    "src": "public/index/sndc.png"
+    "isEntry": true,
+    "file": "D:/MyProject/gogs/sannongzixunwang_web_ssr/sannongzixunwang_web/node_modules/nuxt/dist/app/entry.js"
   }
 }

+ 1 - 819
.nuxt/dist/server/client.manifest.mjs

@@ -1,819 +1 @@
-export default {
-  "_B1s4Rlms.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "B1s4Rlms.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js"
-    ]
-  },
-  "_B9mZv4-U.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "B9mZv4-U.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js"
-    ]
-  },
-  "_BEJNNuI_.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BEJNNuI_.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_BWf8iMc7.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BWf8iMc7.js",
-    "name": "pageNavigation1",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "pageNavigation1.Bk3SFKV4.css"
-    ]
-  },
-  "pageNavigation1.Bk3SFKV4.css": {
-    "file": "pageNavigation1.Bk3SFKV4.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_Bc7cTag3.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Bc7cTag3.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "_CtYSYTMV.js",
-      "_B1s4Rlms.js"
-    ]
-  },
-  "_CGsTfZp0.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CGsTfZp0.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Dh9Fb4AY.js",
-      "_Sl0Xw2yx.js"
-    ]
-  },
-  "_CRC1gjq7.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CRC1gjq7.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Dh9Fb4AY.js",
-      "_Sl0Xw2yx.js"
-    ]
-  },
-  "_CX0XGKE1.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CX0XGKE1.js",
-    "name": "publicFunction",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_CGsTfZp0.js"
-    ],
-    "css": [
-      "publicFunction.ZvxFVNFP.css"
-    ]
-  },
-  "publicFunction.ZvxFVNFP.css": {
-    "file": "publicFunction.ZvxFVNFP.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_Cc3dVjup.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Cc3dVjup.js",
-    "name": "HotNews2",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "HotNews2.Din0nC3w.css"
-    ]
-  },
-  "HotNews2.Din0nC3w.css": {
-    "file": "HotNews2.Din0nC3w.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_CtVYnphz.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CtVYnphz.js",
-    "name": "TopTen",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "TopTen.Bbf0vbjZ.css"
-    ]
-  },
-  "TopTen.Bbf0vbjZ.css": {
-    "file": "TopTen.Bbf0vbjZ.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_CtYSYTMV.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CtYSYTMV.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_Cz7uiTfX.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Cz7uiTfX.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_D5nmbKR2.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "D5nmbKR2.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CtYSYTMV.js"
-    ]
-  },
-  "_DH6ilFJX.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DH6ilFJX.js",
-    "name": "status",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js",
-      "_DgxsGVaU.js",
-      "_Df10qWMc.js"
-    ],
-    "css": [
-      "status.CwCqeKJH.css"
-    ]
-  },
-  "status.CwCqeKJH.css": {
-    "file": "status.CwCqeKJH.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_Df10qWMc.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Df10qWMc.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ]
-  },
-  "_DgxsGVaU.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DgxsGVaU.js",
-    "name": "index",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Sl0Xw2yx.js",
-      "_Dh9Fb4AY.js"
-    ]
-  },
-  "_Dh9Fb4AY.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Dh9Fb4AY.js",
-    "name": "index",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "_DoDrNSwB.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DoDrNSwB.js",
-    "name": "foot1",
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "foot1.C_AE7cJI.css"
-    ]
-  },
-  "foot1.C_AE7cJI.css": {
-    "file": "foot1.C_AE7cJI.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_HotNews2.Din0nC3w.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "HotNews2.Din0nC3w.css",
-    "src": "_HotNews2.Din0nC3w.css"
-  },
-  "_Sl0Xw2yx.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Sl0Xw2yx.js",
-    "name": "pageHead",
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js"
-    ],
-    "css": [
-      "pageHead.sn8S1oPi.css"
-    ]
-  },
-  "pageHead.sn8S1oPi.css": {
-    "file": "pageHead.sn8S1oPi.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "_TopTen.Bbf0vbjZ.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "TopTen.Bbf0vbjZ.css",
-    "src": "_TopTen.Bbf0vbjZ.css"
-  },
-  "_foot1.C_AE7cJI.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "foot1.C_AE7cJI.css",
-    "src": "_foot1.C_AE7cJI.css"
-  },
-  "_pageHead.sn8S1oPi.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "pageHead.sn8S1oPi.css",
-    "src": "_pageHead.sn8S1oPi.css"
-  },
-  "_pageNavigation1.Bk3SFKV4.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "pageNavigation1.Bk3SFKV4.css",
-    "src": "_pageNavigation1.Bk3SFKV4.css"
-  },
-  "_publicFunction.ZvxFVNFP.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "publicFunction.ZvxFVNFP.css",
-    "src": "_publicFunction.ZvxFVNFP.css"
-  },
-  "_status.CwCqeKJH.css": {
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true,
-    "file": "status.CwCqeKJH.css",
-    "src": "_status.CwCqeKJH.css"
-  },
-  "middleware/auth.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BmWZdpvC.js",
-    "name": "auth",
-    "src": "middleware/auth.js",
-    "isDynamicEntry": true,
-    "imports": [
-      "node_modules/nuxt/dist/app/entry.js"
-    ]
-  },
-  "node_modules/nuxt/dist/app/entry.js": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Lb-SdT1G.js",
-    "name": "entry",
-    "src": "node_modules/nuxt/dist/app/entry.js",
-    "isEntry": true,
-    "dynamicImports": [
-      "middleware/auth.js"
-    ],
-    "css": [
-      "entry.BJOVcViR.css"
-    ],
-    "_globalCSS": true
-  },
-  "entry.BJOVcViR.css": {
-    "file": "entry.BJOVcViR.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/[dir]/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DMhMI6Pu.js",
-    "name": "_id_",
-    "src": "pages/[dir]/[dir]/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js",
-      "_Df10qWMc.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "_id_.DLZo6_Ct.css": {
-    "file": "_id_.DLZo6_Ct.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/[dir]/a/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "8XovFtZx.js",
-    "name": "_id_",
-    "src": "pages/[dir]/[dir]/a/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CGsTfZp0.js",
-      "_Cz7uiTfX.js",
-      "_B9mZv4-U.js",
-      "_CRC1gjq7.js",
-      "_DgxsGVaU.js",
-      "_Dh9Fb4AY.js"
-    ],
-    "css": []
-  },
-  "_id_.WgWFiTJG.css": {
-    "file": "_id_.WgWFiTJG.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CCBGiXBN.js",
-    "name": "_id_",
-    "src": "pages/[dir]/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js",
-      "_Df10qWMc.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "_id_.DIxt-Nr4.css": {
-    "file": "_id_.DIxt-Nr4.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/a/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CY-1ZnP6.js",
-    "name": "_id_",
-    "src": "pages/[dir]/a/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_Cc3dVjup.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CGsTfZp0.js",
-      "_Cz7uiTfX.js",
-      "_B9mZv4-U.js",
-      "_CRC1gjq7.js",
-      "_DgxsGVaU.js",
-      "_Dh9Fb4AY.js"
-    ],
-    "css": []
-  },
-  "_id_.65FIQc0J.css": {
-    "file": "_id_.65FIQc0J.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/[dir]/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "BUbOQ9Au.js",
-    "name": "index",
-    "src": "pages/[dir]/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_CX0XGKE1.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "_CGsTfZp0.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js"
-    ],
-    "css": []
-  },
-  "index.B1NTA0VU.css": {
-    "file": "index.B1NTA0VU.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/about/[dir]/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CIkqcR94.js",
-    "name": "_id_",
-    "src": "pages/about/[dir]/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js"
-    ],
-    "css": []
-  },
-  "_id_.Gh1a0ze0.css": {
-    "file": "_id_.Gh1a0ze0.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/about/[dir]/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "D7dC7kjd.js",
-    "name": "index",
-    "src": "pages/about/[dir]/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js"
-    ],
-    "css": []
-  },
-  "index.sjUDFqaf.css": {
-    "file": "index.sjUDFqaf.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/about/[dir]/zhaopin/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "KeZF_nC0.js",
-    "name": "_id_",
-    "src": "pages/about/[dir]/zhaopin/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js"
-    ],
-    "css": []
-  },
-  "_id_.lOUsh5xA.css": {
-    "file": "_id_.lOUsh5xA.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/advertising/adDetail.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "B_5n9Jtb.js",
-    "name": "adDetail",
-    "src": "pages/advertising/adDetail.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DH6ilFJX.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_DgxsGVaU.js",
-      "_Df10qWMc.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "adDetail.u8ZEpNcv.css": {
-    "file": "adDetail.u8ZEpNcv.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/advertising/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Bc4u7Vn9.js",
-    "name": "index",
-    "src": "pages/advertising/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DH6ilFJX.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_D5nmbKR2.js",
-      "_BEJNNuI_.js",
-      "_CGsTfZp0.js",
-      "_DoDrNSwB.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js",
-      "_CRC1gjq7.js",
-      "_B9mZv4-U.js",
-      "_DgxsGVaU.js",
-      "_Bc7cTag3.js",
-      "_Df10qWMc.js",
-      "_CtYSYTMV.js"
-    ],
-    "css": []
-  },
-  "index.iI4le9dd.css": {
-    "file": "index.iI4le9dd.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "D1EHL5sI.js",
-    "name": "index",
-    "src": "pages/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_CX0XGKE1.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Bc7cTag3.js",
-      "_CtVYnphz.js",
-      "_CGsTfZp0.js",
-      "_B9mZv4-U.js",
-      "_CRC1gjq7.js",
-      "_DgxsGVaU.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CtYSYTMV.js"
-    ],
-    "css": [],
-    "assets": [
-      "sndc.C2AWBCR5.png"
-    ]
-  },
-  "index.CZ3TF1V8.css": {
-    "file": "index.CZ3TF1V8.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "sndc.C2AWBCR5.png": {
-    "file": "sndc.C2AWBCR5.png",
-    "resourceType": "image",
-    "prefetch": true,
-    "mimeType": "image/png"
-  },
-  "pages/search/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "CE1xRsZl.js",
-    "name": "_id_",
-    "src": "pages/search/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_CtVYnphz.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_Cz7uiTfX.js",
-      "_Df10qWMc.js",
-      "_B1s4Rlms.js",
-      "_Dh9Fb4AY.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "_id_.B0jPKURO.css": {
-    "file": "_id_.B0jPKURO.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/topic/[id].vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "Ce-ICsyu.js",
-    "name": "_id_",
-    "src": "pages/topic/[id].vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_BEJNNuI_.js",
-      "_CRC1gjq7.js",
-      "_CGsTfZp0.js",
-      "_Df10qWMc.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js"
-    ],
-    "css": []
-  },
-  "_id_.B8xLMiS_.css": {
-    "file": "_id_.B8xLMiS_.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "pages/topic/index.vue": {
-    "resourceType": "script",
-    "module": true,
-    "prefetch": true,
-    "preload": true,
-    "file": "DLynSwuH.js",
-    "name": "index",
-    "src": "pages/topic/index.vue",
-    "isDynamicEntry": true,
-    "imports": [
-      "_Sl0Xw2yx.js",
-      "_BWf8iMc7.js",
-      "_DoDrNSwB.js",
-      "node_modules/nuxt/dist/app/entry.js",
-      "_D5nmbKR2.js",
-      "_Df10qWMc.js",
-      "_Dh9Fb4AY.js",
-      "_B1s4Rlms.js",
-      "_CtYSYTMV.js",
-      "_CRC1gjq7.js"
-    ],
-    "css": []
-  },
-  "index.DmxC_wPZ.css": {
-    "file": "index.DmxC_wPZ.css",
-    "resourceType": "style",
-    "prefetch": true,
-    "preload": true
-  },
-  "public/index/sndc.png": {
-    "resourceType": "image",
-    "prefetch": true,
-    "mimeType": "image/png",
-    "file": "sndc.C2AWBCR5.png",
-    "src": "public/index/sndc.png"
-  }
-}
+export { default } from "file:///D:/MyProject/gogs/sannongzixunwang_web_ssr/sannongzixunwang_web/node_modules/@nuxt/vite-builder/dist/runtime/client.manifest.mjs"

+ 1 - 1532
.nuxt/dist/server/server.mjs

@@ -1,1532 +1 @@
-import { effectScope, shallowReactive, reactive, getCurrentScope, hasInjectionContext, getCurrentInstance, inject, toRef, version, unref, h, shallowRef, isReadonly, isRef, isShallow, isReactive, toRaw, ref, computed, defineComponent, provide, Suspense, nextTick, mergeProps, Transition, watch, Fragment, withCtx, createVNode, useSSRContext, onErrorCaptured, onServerPrefetch, resolveDynamicComponent, createApp } from "vue";
-import { $fetch as $fetch$1 } from "ofetch";
-import { baseURL } from "#internal/nuxt/paths";
-import { createHooks } from "hookable";
-import { getContext } from "unctx";
-import { sanitizeStatusCode, createError as createError$1 } from "h3";
-import { getActiveHead, CapoPlugin } from "unhead";
-import { defineHeadPlugin } from "@unhead/shared";
-import { START_LOCATION, createMemoryHistory, createRouter as createRouter$1, useRoute as useRoute$1, RouterView } from "vue-router";
-import { toRouteMatcher, createRouter } from "radix3";
-import { defu } from "defu";
-import { hasProtocol, isScriptProtocol, joinURL, withQuery } from "ufo";
-import { createPinia } from "pinia";
-import { ssrRenderComponent, ssrRenderAttrs, ssrRenderSuspense, ssrRenderVNode } from "vue/server-renderer";
-if (!globalThis.$fetch) {
-  globalThis.$fetch = $fetch$1.create({
-    baseURL: baseURL()
-  });
-}
-const appLayoutTransition = false;
-const appPageTransition = false;
-const appKeepalive = false;
-const nuxtLinkDefaults = { "componentName": "NuxtLink", "prefetch": true, "prefetchOn": { "visibility": true } };
-const asyncDataDefaults = { "value": null, "errorValue": null, "deep": true };
-const appId = "nuxt-app";
-function getNuxtAppCtx(id = appId) {
-  return getContext(id, {
-    asyncContext: false
-  });
-}
-const NuxtPluginIndicator = "__nuxt_plugin";
-function createNuxtApp(options) {
-  var _a;
-  let hydratingCount = 0;
-  const nuxtApp = {
-    _id: options.id || appId || "nuxt-app",
-    _scope: effectScope(),
-    provide: void 0,
-    globalName: "nuxt",
-    versions: {
-      get nuxt() {
-        return "3.15.2";
-      },
-      get vue() {
-        return nuxtApp.vueApp.version;
-      }
-    },
-    payload: shallowReactive({
-      ...((_a = options.ssrContext) == null ? void 0 : _a.payload) || {},
-      data: shallowReactive({}),
-      state: reactive({}),
-      once: /* @__PURE__ */ new Set(),
-      _errors: shallowReactive({})
-    }),
-    static: {
-      data: {}
-    },
-    runWithContext(fn) {
-      if (nuxtApp._scope.active && !getCurrentScope()) {
-        return nuxtApp._scope.run(() => callWithNuxt(nuxtApp, fn));
-      }
-      return callWithNuxt(nuxtApp, fn);
-    },
-    isHydrating: false,
-    deferHydration() {
-      if (!nuxtApp.isHydrating) {
-        return () => {
-        };
-      }
-      hydratingCount++;
-      let called = false;
-      return () => {
-        if (called) {
-          return;
-        }
-        called = true;
-        hydratingCount--;
-        if (hydratingCount === 0) {
-          nuxtApp.isHydrating = false;
-          return nuxtApp.callHook("app:suspense:resolve");
-        }
-      };
-    },
-    _asyncDataPromises: {},
-    _asyncData: shallowReactive({}),
-    _payloadRevivers: {},
-    ...options
-  };
-  {
-    nuxtApp.payload.serverRendered = true;
-  }
-  if (nuxtApp.ssrContext) {
-    nuxtApp.payload.path = nuxtApp.ssrContext.url;
-    nuxtApp.ssrContext.nuxt = nuxtApp;
-    nuxtApp.ssrContext.payload = nuxtApp.payload;
-    nuxtApp.ssrContext.config = {
-      public: nuxtApp.ssrContext.runtimeConfig.public,
-      app: nuxtApp.ssrContext.runtimeConfig.app
-    };
-  }
-  nuxtApp.hooks = createHooks();
-  nuxtApp.hook = nuxtApp.hooks.hook;
-  {
-    const contextCaller = async function(hooks, args) {
-      for (const hook of hooks) {
-        await nuxtApp.runWithContext(() => hook(...args));
-      }
-    };
-    nuxtApp.hooks.callHook = (name, ...args) => nuxtApp.hooks.callHookWith(contextCaller, name, ...args);
-  }
-  nuxtApp.callHook = nuxtApp.hooks.callHook;
-  nuxtApp.provide = (name, value) => {
-    const $name = "$" + name;
-    defineGetter(nuxtApp, $name, value);
-    defineGetter(nuxtApp.vueApp.config.globalProperties, $name, value);
-  };
-  defineGetter(nuxtApp.vueApp, "$nuxt", nuxtApp);
-  defineGetter(nuxtApp.vueApp.config.globalProperties, "$nuxt", nuxtApp);
-  const runtimeConfig = options.ssrContext.runtimeConfig;
-  nuxtApp.provide("config", runtimeConfig);
-  return nuxtApp;
-}
-function registerPluginHooks(nuxtApp, plugin2) {
-  if (plugin2.hooks) {
-    nuxtApp.hooks.addHooks(plugin2.hooks);
-  }
-}
-async function applyPlugin(nuxtApp, plugin2) {
-  if (typeof plugin2 === "function") {
-    const { provide: provide2 } = await nuxtApp.runWithContext(() => plugin2(nuxtApp)) || {};
-    if (provide2 && typeof provide2 === "object") {
-      for (const key in provide2) {
-        nuxtApp.provide(key, provide2[key]);
-      }
-    }
-  }
-}
-async function applyPlugins(nuxtApp, plugins2) {
-  var _a, _b, _c, _d;
-  const resolvedPlugins = [];
-  const unresolvedPlugins = [];
-  const parallels = [];
-  const errors = [];
-  let promiseDepth = 0;
-  async function executePlugin(plugin2) {
-    var _a2;
-    const unresolvedPluginsForThisPlugin = ((_a2 = plugin2.dependsOn) == null ? void 0 : _a2.filter((name) => plugins2.some((p) => p._name === name) && !resolvedPlugins.includes(name))) ?? [];
-    if (unresolvedPluginsForThisPlugin.length > 0) {
-      unresolvedPlugins.push([new Set(unresolvedPluginsForThisPlugin), plugin2]);
-    } else {
-      const promise = applyPlugin(nuxtApp, plugin2).then(async () => {
-        if (plugin2._name) {
-          resolvedPlugins.push(plugin2._name);
-          await Promise.all(unresolvedPlugins.map(async ([dependsOn, unexecutedPlugin]) => {
-            if (dependsOn.has(plugin2._name)) {
-              dependsOn.delete(plugin2._name);
-              if (dependsOn.size === 0) {
-                promiseDepth++;
-                await executePlugin(unexecutedPlugin);
-              }
-            }
-          }));
-        }
-      });
-      if (plugin2.parallel) {
-        parallels.push(promise.catch((e) => errors.push(e)));
-      } else {
-        await promise;
-      }
-    }
-  }
-  for (const plugin2 of plugins2) {
-    if (((_a = nuxtApp.ssrContext) == null ? void 0 : _a.islandContext) && ((_b = plugin2.env) == null ? void 0 : _b.islands) === false) {
-      continue;
-    }
-    registerPluginHooks(nuxtApp, plugin2);
-  }
-  for (const plugin2 of plugins2) {
-    if (((_c = nuxtApp.ssrContext) == null ? void 0 : _c.islandContext) && ((_d = plugin2.env) == null ? void 0 : _d.islands) === false) {
-      continue;
-    }
-    await executePlugin(plugin2);
-  }
-  await Promise.all(parallels);
-  if (promiseDepth) {
-    for (let i = 0; i < promiseDepth; i++) {
-      await Promise.all(parallels);
-    }
-  }
-  if (errors.length) {
-    throw errors[0];
-  }
-}
-// @__NO_SIDE_EFFECTS__
-function defineNuxtPlugin(plugin2) {
-  if (typeof plugin2 === "function") {
-    return plugin2;
-  }
-  const _name = plugin2._name || plugin2.name;
-  delete plugin2.name;
-  return Object.assign(plugin2.setup || (() => {
-  }), plugin2, { [NuxtPluginIndicator]: true, _name });
-}
-function callWithNuxt(nuxt, setup, args) {
-  const fn = () => setup();
-  const nuxtAppCtx = getNuxtAppCtx(nuxt._id);
-  {
-    return nuxt.vueApp.runWithContext(() => nuxtAppCtx.callAsync(nuxt, fn));
-  }
-}
-function tryUseNuxtApp(id) {
-  var _a;
-  let nuxtAppInstance;
-  if (hasInjectionContext()) {
-    nuxtAppInstance = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app.$nuxt;
-  }
-  nuxtAppInstance = nuxtAppInstance || getNuxtAppCtx(id).tryUse();
-  return nuxtAppInstance || null;
-}
-function useNuxtApp(id) {
-  const nuxtAppInstance = tryUseNuxtApp(id);
-  if (!nuxtAppInstance) {
-    {
-      throw new Error("[nuxt] instance unavailable");
-    }
-  }
-  return nuxtAppInstance;
-}
-// @__NO_SIDE_EFFECTS__
-function useRuntimeConfig(_event) {
-  return useNuxtApp().$config;
-}
-function defineGetter(obj, key, val) {
-  Object.defineProperty(obj, key, { get: () => val });
-}
-const LayoutMetaSymbol = Symbol("layout-meta");
-const PageRouteSymbol = Symbol("route");
-const useRouter = () => {
-  var _a;
-  return (_a = useNuxtApp()) == null ? void 0 : _a.$router;
-};
-const useRoute = () => {
-  if (hasInjectionContext()) {
-    return inject(PageRouteSymbol, useNuxtApp()._route);
-  }
-  return useNuxtApp()._route;
-};
-// @__NO_SIDE_EFFECTS__
-function defineNuxtRouteMiddleware(middleware) {
-  return middleware;
-}
-const isProcessingMiddleware = () => {
-  try {
-    if (useNuxtApp()._processingMiddleware) {
-      return true;
-    }
-  } catch {
-    return false;
-  }
-  return false;
-};
-const URL_QUOTE_RE = /"/g;
-const navigateTo = (to, options) => {
-  if (!to) {
-    to = "/";
-  }
-  const toPath = typeof to === "string" ? to : "path" in to ? resolveRouteObject(to) : useRouter().resolve(to).href;
-  const isExternalHost = hasProtocol(toPath, { acceptRelative: true });
-  const isExternal = (options == null ? void 0 : options.external) || isExternalHost;
-  if (isExternal) {
-    if (!(options == null ? void 0 : options.external)) {
-      throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");
-    }
-    const { protocol } = new URL(toPath, "http://localhost");
-    if (protocol && isScriptProtocol(protocol)) {
-      throw new Error(`Cannot navigate to a URL with '${protocol}' protocol.`);
-    }
-  }
-  const inMiddleware = isProcessingMiddleware();
-  const router = useRouter();
-  const nuxtApp = useNuxtApp();
-  {
-    if (nuxtApp.ssrContext) {
-      const fullPath = typeof to === "string" || isExternal ? toPath : router.resolve(to).fullPath || "/";
-      const location2 = isExternal ? toPath : joinURL((/* @__PURE__ */ useRuntimeConfig()).app.baseURL, fullPath);
-      const redirect = async function(response) {
-        await nuxtApp.callHook("app:redirected");
-        const encodedLoc = location2.replace(URL_QUOTE_RE, "%22");
-        const encodedHeader = encodeURL(location2, isExternalHost);
-        nuxtApp.ssrContext._renderResponse = {
-          statusCode: sanitizeStatusCode((options == null ? void 0 : options.redirectCode) || 302, 302),
-          body: `<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=${encodedLoc}"></head></html>`,
-          headers: { location: encodedHeader }
-        };
-        return response;
-      };
-      if (!isExternal && inMiddleware) {
-        router.afterEach((final) => final.fullPath === fullPath ? redirect(false) : void 0);
-        return to;
-      }
-      return redirect(!inMiddleware ? void 0 : (
-        /* abort route navigation */
-        false
-      ));
-    }
-  }
-  if (isExternal) {
-    nuxtApp._scope.stop();
-    if (options == null ? void 0 : options.replace) {
-      (void 0).replace(toPath);
-    } else {
-      (void 0).href = toPath;
-    }
-    if (inMiddleware) {
-      if (!nuxtApp.isHydrating) {
-        return false;
-      }
-      return new Promise(() => {
-      });
-    }
-    return Promise.resolve();
-  }
-  return (options == null ? void 0 : options.replace) ? router.replace(to) : router.push(to);
-};
-function resolveRouteObject(to) {
-  return withQuery(to.path || "", to.query || {}) + (to.hash || "");
-}
-function encodeURL(location2, isExternalHost = false) {
-  const url = new URL(location2, "http://localhost");
-  if (!isExternalHost) {
-    return url.pathname + url.search + url.hash;
-  }
-  if (location2.startsWith("//")) {
-    return url.toString().replace(url.protocol, "");
-  }
-  return url.toString();
-}
-const NUXT_ERROR_SIGNATURE = "__nuxt_error";
-const useError = () => toRef(useNuxtApp().payload, "error");
-const showError = (error) => {
-  const nuxtError = createError(error);
-  try {
-    const nuxtApp = useNuxtApp();
-    const error2 = useError();
-    if (false) ;
-    error2.value = error2.value || nuxtError;
-  } catch {
-    throw nuxtError;
-  }
-  return nuxtError;
-};
-const isNuxtError = (error) => !!error && typeof error === "object" && NUXT_ERROR_SIGNATURE in error;
-const createError = (error) => {
-  const nuxtError = createError$1(error);
-  Object.defineProperty(nuxtError, NUXT_ERROR_SIGNATURE, {
-    value: true,
-    configurable: false,
-    writable: false
-  });
-  return nuxtError;
-};
-version[0] === "3";
-function resolveUnref(r) {
-  return typeof r === "function" ? r() : unref(r);
-}
-function resolveUnrefHeadInput(ref2) {
-  if (ref2 instanceof Promise || ref2 instanceof Date || ref2 instanceof RegExp)
-    return ref2;
-  const root = resolveUnref(ref2);
-  if (!ref2 || !root)
-    return root;
-  if (Array.isArray(root))
-    return root.map((r) => resolveUnrefHeadInput(r));
-  if (typeof root === "object") {
-    const resolved = {};
-    for (const k in root) {
-      if (!Object.prototype.hasOwnProperty.call(root, k)) {
-        continue;
-      }
-      if (k === "titleTemplate" || k[0] === "o" && k[1] === "n") {
-        resolved[k] = unref(root[k]);
-        continue;
-      }
-      resolved[k] = resolveUnrefHeadInput(root[k]);
-    }
-    return resolved;
-  }
-  return root;
-}
-defineHeadPlugin({
-  hooks: {
-    "entries:resolve": (ctx) => {
-      for (const entry2 of ctx.entries)
-        entry2.resolvedInput = resolveUnrefHeadInput(entry2.input);
-    }
-  }
-});
-const headSymbol = "usehead";
-const _global = typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
-const globalKey$1 = "__unhead_injection_handler__";
-function setHeadInjectionHandler(handler) {
-  _global[globalKey$1] = handler;
-}
-function injectHead() {
-  if (globalKey$1 in _global) {
-    return _global[globalKey$1]();
-  }
-  const head = inject(headSymbol);
-  if (!head && process.env.NODE_ENV !== "production")
-    console.warn("Unhead is missing Vue context, falling back to shared context. This may have unexpected results.");
-  return head || getActiveHead();
-}
-[CapoPlugin({ track: true })];
-const unhead_KgADcZ0jPj = /* @__PURE__ */ defineNuxtPlugin({
-  name: "nuxt:head",
-  enforce: "pre",
-  setup(nuxtApp) {
-    const head = nuxtApp.ssrContext.head;
-    setHeadInjectionHandler(
-      // need a fresh instance of the nuxt app to avoid parallel requests interfering with each other
-      () => useNuxtApp().vueApp._context.provides.usehead
-    );
-    nuxtApp.vueApp.use(head);
-  }
-});
-function createContext(opts = {}) {
-  let currentInstance;
-  let isSingleton = false;
-  const checkConflict = (instance) => {
-    if (currentInstance && currentInstance !== instance) {
-      throw new Error("Context conflict");
-    }
-  };
-  let als;
-  if (opts.asyncContext) {
-    const _AsyncLocalStorage = opts.AsyncLocalStorage || globalThis.AsyncLocalStorage;
-    if (_AsyncLocalStorage) {
-      als = new _AsyncLocalStorage();
-    } else {
-      console.warn("[unctx] `AsyncLocalStorage` is not provided.");
-    }
-  }
-  const _getCurrentInstance = () => {
-    if (als) {
-      const instance = als.getStore();
-      if (instance !== void 0) {
-        return instance;
-      }
-    }
-    return currentInstance;
-  };
-  return {
-    use: () => {
-      const _instance = _getCurrentInstance();
-      if (_instance === void 0) {
-        throw new Error("Context is not available");
-      }
-      return _instance;
-    },
-    tryUse: () => {
-      return _getCurrentInstance();
-    },
-    set: (instance, replace) => {
-      if (!replace) {
-        checkConflict(instance);
-      }
-      currentInstance = instance;
-      isSingleton = true;
-    },
-    unset: () => {
-      currentInstance = void 0;
-      isSingleton = false;
-    },
-    call: (instance, callback) => {
-      checkConflict(instance);
-      currentInstance = instance;
-      try {
-        return als ? als.run(instance, callback) : callback();
-      } finally {
-        if (!isSingleton) {
-          currentInstance = void 0;
-        }
-      }
-    },
-    async callAsync(instance, callback) {
-      currentInstance = instance;
-      const onRestore = () => {
-        currentInstance = instance;
-      };
-      const onLeave = () => currentInstance === instance ? onRestore : void 0;
-      asyncHandlers.add(onLeave);
-      try {
-        const r = als ? als.run(instance, callback) : callback();
-        if (!isSingleton) {
-          currentInstance = void 0;
-        }
-        return await r;
-      } finally {
-        asyncHandlers.delete(onLeave);
-      }
-    }
-  };
-}
-function createNamespace(defaultOpts = {}) {
-  const contexts = {};
-  return {
-    get(key, opts = {}) {
-      if (!contexts[key]) {
-        contexts[key] = createContext({ ...defaultOpts, ...opts });
-      }
-      return contexts[key];
-    }
-  };
-}
-const _globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : {};
-const globalKey = "__unctx__";
-_globalThis[globalKey] || (_globalThis[globalKey] = createNamespace());
-const asyncHandlersKey = "__unctx_async_handlers__";
-const asyncHandlers = _globalThis[asyncHandlersKey] || (_globalThis[asyncHandlersKey] = /* @__PURE__ */ new Set());
-function executeAsync(function_) {
-  const restores = [];
-  for (const leaveHandler of asyncHandlers) {
-    const restore2 = leaveHandler();
-    if (restore2) {
-      restores.push(restore2);
-    }
-  }
-  const restore = () => {
-    for (const restore2 of restores) {
-      restore2();
-    }
-  };
-  let awaitable = function_();
-  if (awaitable && typeof awaitable === "object" && "catch" in awaitable) {
-    awaitable = awaitable.catch((error) => {
-      restore();
-      throw error;
-    });
-  }
-  return [awaitable, restore];
-}
-const ROUTE_KEY_PARENTHESES_RE$1 = /(:\w+)\([^)]+\)/g;
-const ROUTE_KEY_SYMBOLS_RE$1 = /(:\w+)[?+*]/g;
-const ROUTE_KEY_NORMAL_RE$1 = /:\w+/g;
-const interpolatePath = (route, match) => {
-  return match.path.replace(ROUTE_KEY_PARENTHESES_RE$1, "$1").replace(ROUTE_KEY_SYMBOLS_RE$1, "$1").replace(ROUTE_KEY_NORMAL_RE$1, (r) => {
-    var _a;
-    return ((_a = route.params[r.slice(1)]) == null ? void 0 : _a.toString()) || "";
-  });
-};
-const generateRouteKey$1 = (routeProps, override) => {
-  const matchedRoute = routeProps.route.matched.find((m) => {
-    var _a;
-    return ((_a = m.components) == null ? void 0 : _a.default) === routeProps.Component.type;
-  });
-  const source = override ?? (matchedRoute == null ? void 0 : matchedRoute.meta.key) ?? (matchedRoute && interpolatePath(routeProps.route, matchedRoute));
-  return typeof source === "function" ? source(routeProps.route) : source;
-};
-const wrapInKeepAlive = (props, children) => {
-  return { default: () => children };
-};
-function toArray(value) {
-  return Array.isArray(value) ? value : [value];
-}
-async function getRouteRules(arg) {
-  const path = typeof arg === "string" ? arg : arg.path;
-  {
-    useNuxtApp().ssrContext._preloadManifest = true;
-    const _routeRulesMatcher = toRouteMatcher(
-      createRouter({ routes: (/* @__PURE__ */ useRuntimeConfig()).nitro.routeRules })
-    );
-    return defu({}, ..._routeRulesMatcher.matchAll(path).reverse());
-  }
-}
-function handleHotUpdate(_router, _generateRoutes) {
-}
-const _routes = [
-  {
-    name: "dir-dir-id",
-    path: "/:dir()/:dir()/:id()",
-    component: () => import("./_nuxt/_id_-DEI2h-vP.js")
-  },
-  {
-    name: "dir-dir-a-id",
-    path: "/:dir()/:dir()/a/:id()",
-    component: () => import("./_nuxt/_id_-CbUEfM_P.js")
-  },
-  {
-    name: "dir-id",
-    path: "/:dir()/:id()",
-    component: () => import("./_nuxt/_id_-DFt-7pfC.js")
-  },
-  {
-    name: "dir-a-id",
-    path: "/:dir()/a/:id()",
-    component: () => import("./_nuxt/_id_-DyjRnIgq.js")
-  },
-  {
-    name: "dir",
-    path: "/:dir()",
-    component: () => import("./_nuxt/index-o0AVWiBW.js")
-  },
-  {
-    name: "about-dir-id",
-    path: "/about/:dir()/:id()",
-    component: () => import("./_nuxt/_id_-CNWc0fGP.js")
-  },
-  {
-    name: "about-dir",
-    path: "/about/:dir()",
-    component: () => import("./_nuxt/index-DEdVmQ7m.js")
-  },
-  {
-    name: "about-dir-zhaopin-id",
-    path: "/about/:dir()/zhaopin/:id()",
-    component: () => import("./_nuxt/_id_-DJ3DoAF1.js")
-  },
-  {
-    name: "advertising-adDetail",
-    path: "/advertising/adDetail",
-    component: () => import("./_nuxt/adDetail-DLoJ8uA2.js")
-  },
-  {
-    name: "advertising",
-    path: "/advertising",
-    component: () => import("./_nuxt/index-CHAurL31.js")
-  },
-  {
-    name: "index",
-    path: "/",
-    component: () => import("./_nuxt/index-C0XonOzE.js")
-  },
-  {
-    name: "search-id",
-    path: "/search/:id()",
-    component: () => import("./_nuxt/_id_-5-eekQMz.js")
-  },
-  {
-    name: "topic-id",
-    path: "/topic/:id()",
-    component: () => import("./_nuxt/_id_-BouMCPoN.js")
-  },
-  {
-    name: "topic",
-    path: "/topic",
-    component: () => import("./_nuxt/index-DhvjCx2T.js")
-  }
-];
-const _wrapIf = (component, props, slots) => {
-  props = props === true ? {} : props;
-  return { default: () => {
-    var _a;
-    return props ? h(component, props, slots) : (_a = slots.default) == null ? void 0 : _a.call(slots);
-  } };
-};
-const ROUTE_KEY_PARENTHESES_RE = /(:\w+)\([^)]+\)/g;
-const ROUTE_KEY_SYMBOLS_RE = /(:\w+)[?+*]/g;
-const ROUTE_KEY_NORMAL_RE = /:\w+/g;
-function generateRouteKey(route) {
-  const source = (route == null ? void 0 : route.meta.key) ?? route.path.replace(ROUTE_KEY_PARENTHESES_RE, "$1").replace(ROUTE_KEY_SYMBOLS_RE, "$1").replace(ROUTE_KEY_NORMAL_RE, (r) => {
-    var _a;
-    return ((_a = route.params[r.slice(1)]) == null ? void 0 : _a.toString()) || "";
-  });
-  return typeof source === "function" ? source(route) : source;
-}
-function isChangingPage(to, from) {
-  if (to === from || from === START_LOCATION) {
-    return false;
-  }
-  if (generateRouteKey(to) !== generateRouteKey(from)) {
-    return true;
-  }
-  const areComponentsSame = to.matched.every(
-    (comp, index) => {
-      var _a, _b;
-      return comp.components && comp.components.default === ((_b = (_a = from.matched[index]) == null ? void 0 : _a.components) == null ? void 0 : _b.default);
-    }
-  );
-  if (areComponentsSame) {
-    return false;
-  }
-  return true;
-}
-const routerOptions0 = {
-  scrollBehavior(to, from, savedPosition) {
-    var _a;
-    const nuxtApp = useNuxtApp();
-    const behavior = ((_a = useRouter().options) == null ? void 0 : _a.scrollBehaviorType) ?? "auto";
-    let position = savedPosition || void 0;
-    const routeAllowsScrollToTop = typeof to.meta.scrollToTop === "function" ? to.meta.scrollToTop(to, from) : to.meta.scrollToTop;
-    if (!position && from && to && routeAllowsScrollToTop !== false && isChangingPage(to, from)) {
-      position = { left: 0, top: 0 };
-    }
-    if (to.path === from.path) {
-      if (from.hash && !to.hash) {
-        return { left: 0, top: 0 };
-      }
-      if (to.hash) {
-        return { el: to.hash, top: _getHashElementScrollMarginTop(to.hash), behavior };
-      }
-      return false;
-    }
-    const hasTransition = (route) => !!(route.meta.pageTransition ?? appPageTransition);
-    const hookToWait = hasTransition(from) && hasTransition(to) ? "page:transition:finish" : "page:finish";
-    return new Promise((resolve) => {
-      nuxtApp.hooks.hookOnce(hookToWait, async () => {
-        await new Promise((resolve2) => setTimeout(resolve2, 0));
-        if (to.hash) {
-          position = { el: to.hash, top: _getHashElementScrollMarginTop(to.hash), behavior };
-        }
-        resolve(position);
-      });
-    });
-  }
-};
-function _getHashElementScrollMarginTop(selector) {
-  try {
-    const elem = (void 0).querySelector(selector);
-    if (elem) {
-      return (Number.parseFloat(getComputedStyle(elem).scrollMarginTop) || 0) + (Number.parseFloat(getComputedStyle((void 0).documentElement).scrollPaddingTop) || 0);
-    }
-  } catch {
-  }
-  return 0;
-}
-const routerOptions1 = {
-  routes: async (routes) => {
-    return [
-      ...routes
-      //...routeData,
-    ];
-  }
-};
-const configRouterOptions = {
-  hashMode: false,
-  scrollBehaviorType: "auto"
-};
-const hashMode = routerOptions0.hashMode ?? false;
-const routerOptions = {
-  ...configRouterOptions,
-  ...routerOptions0,
-  ...routerOptions1
-};
-const validate = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to) => {
-  var _a;
-  let __temp, __restore;
-  if (!((_a = to.meta) == null ? void 0 : _a.validate)) {
-    return;
-  }
-  const nuxtApp = useNuxtApp();
-  const router = useRouter();
-  const result = ([__temp, __restore] = executeAsync(() => Promise.resolve(to.meta.validate(to))), __temp = await __temp, __restore(), __temp);
-  if (result === true) {
-    return;
-  }
-  const error = createError({
-    statusCode: result && result.statusCode || 404,
-    statusMessage: result && result.statusMessage || `Page Not Found: ${to.fullPath}`,
-    data: {
-      path: to.fullPath
-    }
-  });
-  const unsub = router.beforeResolve((final) => {
-    unsub();
-    if (final === to) {
-      const unsub2 = router.afterEach(async () => {
-        unsub2();
-        await nuxtApp.runWithContext(() => showError(error));
-      });
-      return false;
-    }
-  });
-});
-const manifest_45route_45rule = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to) => {
-  {
-    return;
-  }
-});
-const globalMiddleware = [
-  validate,
-  manifest_45route_45rule
-];
-const namedMiddleware = {
-  auth: () => import("./_nuxt/auth-DWp-I46x.js")
-};
-const plugin = /* @__PURE__ */ defineNuxtPlugin({
-  name: "nuxt:router",
-  enforce: "pre",
-  async setup(nuxtApp) {
-    var _a, _b, _c;
-    let __temp, __restore;
-    let routerBase = (/* @__PURE__ */ useRuntimeConfig()).app.baseURL;
-    if (hashMode && !routerBase.includes("#")) {
-      routerBase += "#";
-    }
-    const history = ((_a = routerOptions.history) == null ? void 0 : _a.call(routerOptions, routerBase)) ?? createMemoryHistory(routerBase);
-    const routes = routerOptions.routes ? ([__temp, __restore] = executeAsync(() => routerOptions.routes(_routes)), __temp = await __temp, __restore(), __temp) ?? _routes : _routes;
-    let startPosition;
-    const router = createRouter$1({
-      ...routerOptions,
-      scrollBehavior: (to, from, savedPosition) => {
-        if (from === START_LOCATION) {
-          startPosition = savedPosition;
-          return;
-        }
-        if (routerOptions.scrollBehavior) {
-          router.options.scrollBehavior = routerOptions.scrollBehavior;
-          if ("scrollRestoration" in (void 0).history) {
-            const unsub = router.beforeEach(() => {
-              unsub();
-              (void 0).history.scrollRestoration = "manual";
-            });
-          }
-          return routerOptions.scrollBehavior(to, START_LOCATION, startPosition || savedPosition);
-        }
-      },
-      history,
-      routes
-    });
-    handleHotUpdate(router, routerOptions.routes ? routerOptions.routes : (routes2) => routes2);
-    nuxtApp.vueApp.use(router);
-    const previousRoute = shallowRef(router.currentRoute.value);
-    router.afterEach((_to, from) => {
-      previousRoute.value = from;
-    });
-    Object.defineProperty(nuxtApp.vueApp.config.globalProperties, "previousRoute", {
-      get: () => previousRoute.value
-    });
-    const initialURL = nuxtApp.ssrContext.url;
-    const _route = shallowRef(router.currentRoute.value);
-    const syncCurrentRoute = () => {
-      _route.value = router.currentRoute.value;
-    };
-    nuxtApp.hook("page:finish", syncCurrentRoute);
-    router.afterEach((to, from) => {
-      var _a2, _b2, _c2, _d;
-      if (((_b2 = (_a2 = to.matched[0]) == null ? void 0 : _a2.components) == null ? void 0 : _b2.default) === ((_d = (_c2 = from.matched[0]) == null ? void 0 : _c2.components) == null ? void 0 : _d.default)) {
-        syncCurrentRoute();
-      }
-    });
-    const route = {};
-    for (const key in _route.value) {
-      Object.defineProperty(route, key, {
-        get: () => _route.value[key],
-        enumerable: true
-      });
-    }
-    nuxtApp._route = shallowReactive(route);
-    nuxtApp._middleware = nuxtApp._middleware || {
-      global: [],
-      named: {}
-    };
-    useError();
-    if (!((_b = nuxtApp.ssrContext) == null ? void 0 : _b.islandContext)) {
-      router.afterEach(async (to, _from, failure) => {
-        delete nuxtApp._processingMiddleware;
-        if (failure) {
-          await nuxtApp.callHook("page:loading:end");
-        }
-        if ((failure == null ? void 0 : failure.type) === 4) {
-          return;
-        }
-        if (to.redirectedFrom && to.fullPath !== initialURL) {
-          await nuxtApp.runWithContext(() => navigateTo(to.fullPath || "/"));
-        }
-      });
-    }
-    try {
-      if (true) {
-        ;
-        [__temp, __restore] = executeAsync(() => router.push(initialURL)), await __temp, __restore();
-        ;
-      }
-      ;
-      [__temp, __restore] = executeAsync(() => router.isReady()), await __temp, __restore();
-      ;
-    } catch (error2) {
-      [__temp, __restore] = executeAsync(() => nuxtApp.runWithContext(() => showError(error2))), await __temp, __restore();
-    }
-    const resolvedInitialRoute = router.currentRoute.value;
-    syncCurrentRoute();
-    if ((_c = nuxtApp.ssrContext) == null ? void 0 : _c.islandContext) {
-      return { provide: { router } };
-    }
-    const initialLayout = nuxtApp.payload.state._layout;
-    router.beforeEach(async (to, from) => {
-      var _a2, _b2;
-      await nuxtApp.callHook("page:loading:start");
-      to.meta = reactive(to.meta);
-      if (nuxtApp.isHydrating && initialLayout && !isReadonly(to.meta.layout)) {
-        to.meta.layout = initialLayout;
-      }
-      nuxtApp._processingMiddleware = true;
-      if (!((_a2 = nuxtApp.ssrContext) == null ? void 0 : _a2.islandContext)) {
-        const middlewareEntries = /* @__PURE__ */ new Set([...globalMiddleware, ...nuxtApp._middleware.global]);
-        for (const component of to.matched) {
-          const componentMiddleware = component.meta.middleware;
-          if (!componentMiddleware) {
-            continue;
-          }
-          for (const entry2 of toArray(componentMiddleware)) {
-            middlewareEntries.add(entry2);
-          }
-        }
-        {
-          const routeRules = await nuxtApp.runWithContext(() => getRouteRules({ path: to.path }));
-          if (routeRules.appMiddleware) {
-            for (const key in routeRules.appMiddleware) {
-              if (routeRules.appMiddleware[key]) {
-                middlewareEntries.add(key);
-              } else {
-                middlewareEntries.delete(key);
-              }
-            }
-          }
-        }
-        for (const entry2 of middlewareEntries) {
-          const middleware = typeof entry2 === "string" ? nuxtApp._middleware.named[entry2] || await ((_b2 = namedMiddleware[entry2]) == null ? void 0 : _b2.call(namedMiddleware).then((r) => r.default || r)) : entry2;
-          if (!middleware) {
-            throw new Error(`Unknown route middleware: '${entry2}'.`);
-          }
-          const result = await nuxtApp.runWithContext(() => middleware(to, from));
-          {
-            if (result === false || result instanceof Error) {
-              const error2 = result || createError$1({
-                statusCode: 404,
-                statusMessage: `Page Not Found: ${initialURL}`
-              });
-              await nuxtApp.runWithContext(() => showError(error2));
-              return false;
-            }
-          }
-          if (result === true) {
-            continue;
-          }
-          if (result || result === false) {
-            return result;
-          }
-        }
-      }
-    });
-    router.onError(async () => {
-      delete nuxtApp._processingMiddleware;
-      await nuxtApp.callHook("page:loading:end");
-    });
-    router.afterEach(async (to, _from) => {
-      if (to.matched.length === 0) {
-        await nuxtApp.runWithContext(() => showError(createError$1({
-          statusCode: 404,
-          fatal: false,
-          statusMessage: `Page not found: ${to.fullPath}`,
-          data: {
-            path: to.fullPath
-          }
-        })));
-      }
-    });
-    nuxtApp.hooks.hookOnce("app:created", async () => {
-      try {
-        if ("name" in resolvedInitialRoute) {
-          resolvedInitialRoute.name = void 0;
-        }
-        await router.replace({
-          ...resolvedInitialRoute,
-          force: true
-        });
-        router.options.scrollBehavior = routerOptions.scrollBehavior;
-      } catch (error2) {
-        await nuxtApp.runWithContext(() => showError(error2));
-      }
-    });
-    return { provide: { router } };
-  }
-});
-function definePayloadReducer(name, reduce) {
-  {
-    useNuxtApp().ssrContext._payloadReducers[name] = reduce;
-  }
-}
-const reducers = [
-  ["NuxtError", (data) => isNuxtError(data) && data.toJSON()],
-  ["EmptyShallowRef", (data) => isRef(data) && isShallow(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_")],
-  ["EmptyRef", (data) => isRef(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_")],
-  ["ShallowRef", (data) => isRef(data) && isShallow(data) && data.value],
-  ["ShallowReactive", (data) => isReactive(data) && isShallow(data) && toRaw(data)],
-  ["Ref", (data) => isRef(data) && data.value],
-  ["Reactive", (data) => isReactive(data) && toRaw(data)]
-];
-const revive_payload_server_eJ33V7gbc6 = /* @__PURE__ */ defineNuxtPlugin({
-  name: "nuxt:revive-payload:server",
-  setup() {
-    for (const [reducer, fn] of reducers) {
-      definePayloadReducer(reducer, fn);
-    }
-  }
-});
-const components_plugin_KR1HBZs4kY = /* @__PURE__ */ defineNuxtPlugin({
-  name: "nuxt:global-components"
-});
-const element_plus_elM4AXquKi = /* @__PURE__ */ defineNuxtPlugin(() => {
-});
-const client_dynamic_routes_lcxVgtHPAQ = () => {
-};
-const globals_W2yFmejOiw = /* @__PURE__ */ defineNuxtPlugin((nuxtApp) => {
-  nuxtApp.provide("webUrl", "http://apipre1.bjzxtw.org.cn:29501");
-  nuxtApp.provide("CwebUrl", "http://nwpre.bjzxtw.org.cn");
-  nuxtApp.provide("BwebUrl", "http://adminpre.bjzxtw.org.cn");
-  nuxtApp.provide("userUrl", "http://localhost:3000");
-});
-const pinia_Uphuq97G1L = /* @__PURE__ */ defineNuxtPlugin((nuxtApp) => {
-  const pinia = createPinia();
-  nuxtApp.vueApp.use(pinia);
-  return {
-    provide: {
-      pinia
-    }
-  };
-});
-const plugins = [
-  unhead_KgADcZ0jPj,
-  plugin,
-  revive_payload_server_eJ33V7gbc6,
-  components_plugin_KR1HBZs4kY,
-  element_plus_elM4AXquKi,
-  client_dynamic_routes_lcxVgtHPAQ,
-  globals_W2yFmejOiw,
-  pinia_Uphuq97G1L
-];
-function defaultEstimatedProgress(duration, elapsed) {
-  const completionPercentage = elapsed / duration * 100;
-  return 2 / Math.PI * 100 * Math.atan(completionPercentage / 50);
-}
-function createLoadingIndicator(opts = {}) {
-  opts.estimatedProgress || defaultEstimatedProgress;
-  const nuxtApp = useNuxtApp();
-  const progress = ref(0);
-  const isLoading = ref(false);
-  const error = ref(false);
-  const start = () => {
-    error.value = false;
-    set(0);
-  };
-  function set(at = 0) {
-    if (nuxtApp.isHydrating) {
-      return;
-    }
-    if (at >= 100) {
-      return finish();
-    }
-    progress.value = at < 0 ? 0 : at;
-    {
-      isLoading.value = true;
-    }
-  }
-  function finish(opts2 = {}) {
-    progress.value = 100;
-    if (opts2.error) {
-      error.value = true;
-    }
-    if (opts2.force) {
-      progress.value = 0;
-      isLoading.value = false;
-    }
-  }
-  function clear() {
-  }
-  let _cleanup = () => {
-  };
-  return {
-    _cleanup,
-    progress: computed(() => progress.value),
-    isLoading: computed(() => isLoading.value),
-    error: computed(() => error.value),
-    start,
-    set,
-    finish,
-    clear
-  };
-}
-function useLoadingIndicator(opts = {}) {
-  const nuxtApp = useNuxtApp();
-  const indicator = nuxtApp._loadingIndicator = nuxtApp._loadingIndicator || createLoadingIndicator(opts);
-  return indicator;
-}
-const __nuxt_component_0 = defineComponent({
-  name: "NuxtLoadingIndicator",
-  props: {
-    throttle: {
-      type: Number,
-      default: 200
-    },
-    duration: {
-      type: Number,
-      default: 2e3
-    },
-    height: {
-      type: Number,
-      default: 3
-    },
-    color: {
-      type: [String, Boolean],
-      default: "repeating-linear-gradient(to right,#00dc82 0%,#34cdfe 50%,#0047e1 100%)"
-    },
-    errorColor: {
-      type: String,
-      default: "repeating-linear-gradient(to right,#f87171 0%,#ef4444 100%)"
-    },
-    estimatedProgress: {
-      type: Function,
-      required: false
-    }
-  },
-  setup(props, { slots, expose }) {
-    const { progress, isLoading, error, start, finish, clear } = useLoadingIndicator({
-      duration: props.duration,
-      throttle: props.throttle,
-      estimatedProgress: props.estimatedProgress
-    });
-    expose({
-      progress,
-      isLoading,
-      error,
-      start,
-      finish,
-      clear
-    });
-    return () => h("div", {
-      class: "nuxt-loading-indicator",
-      style: {
-        position: "fixed",
-        top: 0,
-        right: 0,
-        left: 0,
-        pointerEvents: "none",
-        width: "auto",
-        height: `${props.height}px`,
-        opacity: isLoading.value ? 1 : 0,
-        background: error.value ? props.errorColor : props.color || void 0,
-        backgroundSize: `${100 / progress.value * 100}% auto`,
-        transform: `scaleX(${progress.value}%)`,
-        transformOrigin: "left",
-        transition: "transform 0.1s, height 0.4s, opacity 0.4s",
-        zIndex: 999999
-      }
-    }, slots);
-  }
-});
-const layouts = {};
-const LayoutLoader = defineComponent({
-  name: "LayoutLoader",
-  inheritAttrs: false,
-  props: {
-    name: String,
-    layoutProps: Object
-  },
-  setup(props, context) {
-    return () => h(layouts[props.name], props.layoutProps, context.slots);
-  }
-});
-const __nuxt_component_1 = defineComponent({
-  name: "NuxtLayout",
-  inheritAttrs: false,
-  props: {
-    name: {
-      type: [String, Boolean, Object],
-      default: null
-    },
-    fallback: {
-      type: [String, Object],
-      default: null
-    }
-  },
-  setup(props, context) {
-    const nuxtApp = useNuxtApp();
-    const injectedRoute = inject(PageRouteSymbol);
-    const route = injectedRoute === useRoute() ? useRoute$1() : injectedRoute;
-    const layout = computed(() => {
-      let layout2 = unref(props.name) ?? route.meta.layout ?? "default";
-      if (layout2 && !(layout2 in layouts)) {
-        if (props.fallback) {
-          layout2 = unref(props.fallback);
-        }
-      }
-      return layout2;
-    });
-    const layoutRef = ref();
-    context.expose({ layoutRef });
-    const done = nuxtApp.deferHydration();
-    return () => {
-      const hasLayout = layout.value && layout.value in layouts;
-      const transitionProps = route.meta.layoutTransition ?? appLayoutTransition;
-      return _wrapIf(Transition, hasLayout && transitionProps, {
-        default: () => h(Suspense, { suspensible: true, onResolve: () => {
-          nextTick(done);
-        } }, {
-          default: () => h(
-            LayoutProvider,
-            {
-              layoutProps: mergeProps(context.attrs, { ref: layoutRef }),
-              key: layout.value || void 0,
-              name: layout.value,
-              shouldProvide: !props.name,
-              hasTransition: !!transitionProps
-            },
-            context.slots
-          )
-        })
-      }).default();
-    };
-  }
-});
-const LayoutProvider = defineComponent({
-  name: "NuxtLayoutProvider",
-  inheritAttrs: false,
-  props: {
-    name: {
-      type: [String, Boolean]
-    },
-    layoutProps: {
-      type: Object
-    },
-    hasTransition: {
-      type: Boolean
-    },
-    shouldProvide: {
-      type: Boolean
-    }
-  },
-  setup(props, context) {
-    const name = props.name;
-    if (props.shouldProvide) {
-      provide(LayoutMetaSymbol, {
-        isCurrent: (route) => name === (route.meta.layout ?? "default")
-      });
-    }
-    return () => {
-      var _a, _b;
-      if (!name || typeof name === "string" && !(name in layouts)) {
-        return (_b = (_a = context.slots).default) == null ? void 0 : _b.call(_a);
-      }
-      return h(
-        LayoutLoader,
-        { key: name, layoutProps: props.layoutProps, name },
-        context.slots
-      );
-    };
-  }
-});
-const RouteProvider = defineComponent({
-  props: {
-    vnode: {
-      type: Object,
-      required: true
-    },
-    route: {
-      type: Object,
-      required: true
-    },
-    vnodeRef: Object,
-    renderKey: String,
-    trackRootNodes: Boolean
-  },
-  setup(props) {
-    const previousKey = props.renderKey;
-    const previousRoute = props.route;
-    const route = {};
-    for (const key in props.route) {
-      Object.defineProperty(route, key, {
-        get: () => previousKey === props.renderKey ? props.route[key] : previousRoute[key],
-        enumerable: true
-      });
-    }
-    provide(PageRouteSymbol, shallowReactive(route));
-    return () => {
-      return h(props.vnode, { ref: props.vnodeRef });
-    };
-  }
-});
-const __nuxt_component_2 = defineComponent({
-  name: "NuxtPage",
-  inheritAttrs: false,
-  props: {
-    name: {
-      type: String
-    },
-    transition: {
-      type: [Boolean, Object],
-      default: void 0
-    },
-    keepalive: {
-      type: [Boolean, Object],
-      default: void 0
-    },
-    route: {
-      type: Object
-    },
-    pageKey: {
-      type: [Function, String],
-      default: null
-    }
-  },
-  setup(props, { attrs, slots, expose }) {
-    const nuxtApp = useNuxtApp();
-    const pageRef = ref();
-    const forkRoute = inject(PageRouteSymbol, null);
-    let previousPageKey;
-    expose({ pageRef });
-    inject(LayoutMetaSymbol, null);
-    let vnode;
-    const done = nuxtApp.deferHydration();
-    if (props.pageKey) {
-      watch(() => props.pageKey, (next, prev) => {
-        if (next !== prev) {
-          nuxtApp.callHook("page:loading:start");
-        }
-      });
-    }
-    let pageLoadingEndHookAlreadyCalled = false;
-    return () => {
-      return h(RouterView, { name: props.name, route: props.route, ...attrs }, {
-        default: (routeProps) => {
-          if (!routeProps.Component) {
-            done();
-            return;
-          }
-          const key = generateRouteKey$1(routeProps, props.pageKey);
-          if (!nuxtApp.isHydrating && !hasChildrenRoutes(forkRoute, routeProps.route, routeProps.Component) && previousPageKey === key) {
-            nuxtApp.callHook("page:loading:end");
-            pageLoadingEndHookAlreadyCalled = true;
-          }
-          previousPageKey = key;
-          const hasTransition = !!(props.transition ?? routeProps.route.meta.pageTransition ?? appPageTransition);
-          const transitionProps = hasTransition && _mergeTransitionProps([
-            props.transition,
-            routeProps.route.meta.pageTransition,
-            appPageTransition,
-            { onAfterLeave: () => {
-              nuxtApp.callHook("page:transition:finish", routeProps.Component);
-            } }
-          ].filter(Boolean));
-          const keepaliveConfig = props.keepalive ?? routeProps.route.meta.keepalive ?? appKeepalive;
-          vnode = _wrapIf(
-            Transition,
-            hasTransition && transitionProps,
-            wrapInKeepAlive(
-              keepaliveConfig,
-              h(Suspense, {
-                suspensible: true,
-                onPending: () => nuxtApp.callHook("page:start", routeProps.Component),
-                onResolve: () => {
-                  nextTick(() => nuxtApp.callHook("page:finish", routeProps.Component).then(() => {
-                    if (!pageLoadingEndHookAlreadyCalled) {
-                      return nuxtApp.callHook("page:loading:end");
-                    }
-                    pageLoadingEndHookAlreadyCalled = false;
-                  }).finally(done));
-                }
-              }, {
-                default: () => {
-                  const providerVNode = h(RouteProvider, {
-                    key: key || void 0,
-                    vnode: slots.default ? h(Fragment, void 0, slots.default(routeProps)) : routeProps.Component,
-                    route: routeProps.route,
-                    renderKey: key || void 0,
-                    trackRootNodes: hasTransition,
-                    vnodeRef: pageRef
-                  });
-                  return providerVNode;
-                }
-              })
-            )
-          ).default();
-          return vnode;
-        }
-      });
-    };
-  }
-});
-function _mergeTransitionProps(routeProps) {
-  const _props = routeProps.map((prop) => ({
-    ...prop,
-    onAfterLeave: prop.onAfterLeave ? toArray(prop.onAfterLeave) : void 0
-  }));
-  return defu(..._props);
-}
-function hasChildrenRoutes(fork, newRoute, Component) {
-  if (!fork) {
-    return false;
-  }
-  const index = newRoute.matched.findIndex((m) => {
-    var _a;
-    return ((_a = m.components) == null ? void 0 : _a.default) === (Component == null ? void 0 : Component.type);
-  });
-  return index < newRoute.matched.length - 1;
-}
-const _export_sfc = (sfc, props) => {
-  const target = sfc.__vccOpts || sfc;
-  for (const [key, val] of props) {
-    target[key] = val;
-  }
-  return target;
-};
-const _sfc_main$2 = {};
-function _sfc_ssrRender(_ctx, _push, _parent, _attrs) {
-  const _component_NuxtLoadingIndicator = __nuxt_component_0;
-  const _component_NuxtLayout = __nuxt_component_1;
-  const _component_NuxtPage = __nuxt_component_2;
-  _push(`<!--[-->`);
-  _push(ssrRenderComponent(_component_NuxtLoadingIndicator, { color: "#49A769" }, null, _parent));
-  _push(ssrRenderComponent(_component_NuxtLayout, null, {
-    default: withCtx((_, _push2, _parent2, _scopeId) => {
-      if (_push2) {
-        _push2(ssrRenderComponent(_component_NuxtPage, null, null, _parent2, _scopeId));
-      } else {
-        return [
-          createVNode(_component_NuxtPage)
-        ];
-      }
-    }),
-    _: 1
-  }, _parent));
-  _push(`<!--]-->`);
-}
-const _sfc_setup$2 = _sfc_main$2.setup;
-_sfc_main$2.setup = (props, ctx) => {
-  const ssrContext = useSSRContext();
-  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("app.vue");
-  return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
-};
-const AppComponent = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["ssrRender", _sfc_ssrRender]]);
-const _sfc_main$1 = {
-  __name: "error",
-  __ssrInlineRender: true,
-  setup(__props) {
-    useRouter();
-    return (_ctx, _push, _parent, _attrs) => {
-      _push(`<div${ssrRenderAttrs(mergeProps({ class: "errorBox" }, _attrs))} data-v-ea3a617f><img src="https://img.bjzxtw.org.cn/pre/public/error/404.png" alt="遇到了网络错误!" data-v-ea3a617f><div class="goHome" data-v-ea3a617f> 返回网站首页 </div></div>`);
-    };
-  }
-};
-const _sfc_setup$1 = _sfc_main$1.setup;
-_sfc_main$1.setup = (props, ctx) => {
-  const ssrContext = useSSRContext();
-  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("error.vue");
-  return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
-};
-const ErrorComponent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-ea3a617f"]]);
-const _sfc_main = {
-  __name: "nuxt-root",
-  __ssrInlineRender: true,
-  setup(__props) {
-    const IslandRenderer = () => null;
-    const nuxtApp = useNuxtApp();
-    nuxtApp.deferHydration();
-    nuxtApp.ssrContext.url;
-    const SingleRenderer = false;
-    provide(PageRouteSymbol, useRoute());
-    nuxtApp.hooks.callHookWith((hooks) => hooks.map((hook) => hook()), "vue:setup");
-    const error = useError();
-    const abortRender = error.value && !nuxtApp.ssrContext.error;
-    onErrorCaptured((err, target, info) => {
-      nuxtApp.hooks.callHook("vue:error", err, target, info).catch((hookError) => console.error("[nuxt] Error in `vue:error` hook", hookError));
-      {
-        const p = nuxtApp.runWithContext(() => showError(err));
-        onServerPrefetch(() => p);
-        return false;
-      }
-    });
-    const islandContext = nuxtApp.ssrContext.islandContext;
-    return (_ctx, _push, _parent, _attrs) => {
-      ssrRenderSuspense(_push, {
-        default: () => {
-          if (unref(abortRender)) {
-            _push(`<div></div>`);
-          } else if (unref(error)) {
-            _push(ssrRenderComponent(unref(ErrorComponent), { error: unref(error) }, null, _parent));
-          } else if (unref(islandContext)) {
-            _push(ssrRenderComponent(unref(IslandRenderer), { context: unref(islandContext) }, null, _parent));
-          } else if (unref(SingleRenderer)) {
-            ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(SingleRenderer)), null, null), _parent);
-          } else {
-            _push(ssrRenderComponent(unref(AppComponent), null, null, _parent));
-          }
-        },
-        _: 1
-      });
-    };
-  }
-};
-const _sfc_setup = _sfc_main.setup;
-_sfc_main.setup = (props, ctx) => {
-  const ssrContext = useSSRContext();
-  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-root.vue");
-  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
-};
-let entry;
-{
-  entry = async function createNuxtAppServer(ssrContext) {
-    const vueApp = createApp(_sfc_main);
-    const nuxt = createNuxtApp({ vueApp, ssrContext });
-    try {
-      await applyPlugins(nuxt, plugins);
-      await nuxt.hooks.callHook("app:created", vueApp);
-    } catch (error) {
-      await nuxt.hooks.callHook("app:error", error);
-      nuxt.payload.error = nuxt.payload.error || createError(error);
-    }
-    if (ssrContext == null ? void 0 : ssrContext._renderResponse) {
-      throw new Error("skipping render");
-    }
-    return vueApp;
-  };
-}
-const entry$1 = (ssrContext) => entry(ssrContext);
-export {
-  _export_sfc as _,
-  useRoute as a,
-  asyncDataDefaults as b,
-  createError as c,
-  useRouter as d,
-  entry$1 as default,
-  nuxtLinkDefaults as e,
-  useRuntimeConfig as f,
-  resolveUnrefHeadInput as g,
-  hashMode as h,
-  injectHead as i,
-  defineNuxtRouteMiddleware as j,
-  navigateTo as n,
-  resolveRouteObject as r,
-  useNuxtApp as u
-};
-//# sourceMappingURL=server.mjs.map
+export { default } from "file:///D:/MyProject/gogs/sannongzixunwang_web_ssr/sannongzixunwang_web/node_modules/@nuxt/vite-builder/dist/runtime/vite-node.mjs"

+ 1 - 0
.nuxt/imports.d.ts

@@ -33,4 +33,5 @@ export { getTime, getTitleLength } from '../composables/publicFunction';
 export { seoSetup } from '../composables/useSeo';
 export { default as proxy } from '../utils/proxy';
 export { apiUse, asyncFetchData, fGET, fPOST, fPUT, fDELETE, GET, POST, PUT, DELETE } from '../utils/request';
+export { useNuxtDevTools } from '../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools';
 export { definePageMeta } from '../node_modules/nuxt/dist/pages/runtime/composables';

+ 1 - 1
.nuxt/manifest/latest.json

@@ -1 +1 @@
-{"id":"8f52ffe3-41db-4ace-b7e0-6a79c4ccab5a","timestamp":1743562271916}
+{"id":"dev","timestamp":1743649084033}

+ 1 - 0
.nuxt/manifest/meta/3480fe42-1d88-41cd-ae02-6fb46500d481.json

@@ -0,0 +1 @@
+{"id":"3480fe42-1d88-41cd-ae02-6fb46500d481","timestamp":1743648015030,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 0 - 1
.nuxt/manifest/meta/8f52ffe3-41db-4ace-b7e0-6a79c4ccab5a.json

@@ -1 +0,0 @@
-{"id":"8f52ffe3-41db-4ace-b7e0-6a79c4ccab5a","timestamp":1743562271916,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 1 - 0
.nuxt/manifest/meta/dev.json

@@ -0,0 +1 @@
+{"id":"dev","timestamp":1743649084033,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":[]}

+ 17 - 0
.nuxt/nitro.json

@@ -0,0 +1,17 @@
+{
+  "date": "2025-04-03T02:58:12.368Z",
+  "preset": "nitro-dev",
+  "framework": {
+    "name": "nuxt",
+    "version": "3.15.2"
+  },
+  "versions": {
+    "nitro": "2.10.4"
+  },
+  "dev": {
+    "pid": 8676,
+    "workerAddress": {
+      "socketPath": "\\\\.\\pipe\\nitro\\worker-8676-1.sock"
+    }
+  }
+}

+ 9 - 0
.nuxt/nuxt.json

@@ -0,0 +1,9 @@
+{
+  "_hash": "1rNbmyQyEO",
+  "project": {
+    "rootDir": "D:/MyProject/gogs/sannongzixunwang_web_ssr/sannongzixunwang_web"
+  },
+  "versions": {
+    "nuxt": "3.15.2"
+  }
+}

+ 1 - 1
.nuxt/tsconfig.json

@@ -102,7 +102,7 @@
         "./imports"
       ],
       "#app-manifest": [
-        "./manifest/meta/8f52ffe3-41db-4ace-b7e0-6a79c4ccab5a.json"
+        "./manifest/meta/dev.json"
       ],
       "#components": [
         "./components"

+ 1 - 0
.nuxt/types/build.d.ts

@@ -11,6 +11,7 @@ declare module "#build/paths.mjs";
 declare module "#build/root-component.mjs";
 declare module "#build/plugins.server.mjs";
 declare module "#build/test-component-wrapper.mjs";
+declare module "#build/devtools/settings.mjs";
 declare module "#build/routes.mjs";
 declare module "#build/pages.mjs";
 declare module "#build/router.options.mjs";

+ 2 - 0
.nuxt/types/imports.d.ts

@@ -130,6 +130,7 @@ declare global {
   const useModel: typeof import('vue')['useModel']
   const useNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']
   const useNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']
+  const useNuxtDevTools: typeof import('../../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools')['useNuxtDevTools']
   const usePreviewMode: typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']
   const useRequestEvent: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']
   const useRequestFetch: typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']
@@ -325,6 +326,7 @@ declare module 'vue' {
     readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
     readonly useNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']>
     readonly useNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']>
+    readonly useNuxtDevTools: UnwrapRef<typeof import('../../node_modules/@nuxt/devtools/dist/runtime/use-nuxt-devtools')['useNuxtDevTools']>
     readonly usePreviewMode: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']>
     readonly useRequestEvent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']>
     readonly useRequestFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']>

+ 7 - 2
.nuxt/types/plugins.d.ts

@@ -9,12 +9,17 @@ type NuxtAppInjections =
   InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/router.js")> &
-  InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/payload.client.js")> &
+  InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/browser-devtools-timing.client.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.server.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/chunk-reload.client.js")> &
   InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/prefetch.client.js")> &
+  InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/check-if-page-unused.js")> &
+  InjectionType<typeof import("../../node_modules/@nuxt/devtools/dist/runtime/plugins/devtools.server.js")> &
+  InjectionType<typeof import("../../node_modules/@nuxt/devtools/dist/runtime/plugins/devtools.client.js")> &
+  InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/dev-server-logs.js")> &
+  InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-if-layout-used.js")> &
   InjectionType<typeof import("../../plugins/element-plus.js")> &
   InjectionType<typeof import("../../plugins/request.js")> &
   InjectionType<typeof import("../../plugins/client-dynamic-routes.js")> &
@@ -25,7 +30,7 @@ declare module '#app' {
   interface NuxtApp extends NuxtAppInjections { }
 
   interface NuxtAppLiterals {
-    pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'nuxt:global-components' | 'nuxt:prefetch'
+    pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:browser-devtools-timing' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'nuxt:global-components' | 'nuxt:prefetch' | 'nuxt:checkIfPageUnused' | 'nuxt:checkIfLayoutUsed'
   }
 }
 

+ 1 - 1
components/detail/HotNews.vue

@@ -9,7 +9,7 @@
             <li v-for="(item, index) in hotNewsList">
                 <span>{{ index + 1 }}</span>
                 <NuxtLink :to="item.linkurl" v-show="item.islink == 1" :title="item.title">{{ item.title }}</NuxtLink>
-                <NuxtLink :to="`/${item.pinyin}/a/${item.id}.html`" v-if="item.islink == 0" :title="item.title">{{ item.title }}
+                <NuxtLink :to="`/${item.pinyin}/${item.id}.html`" v-if="item.islink == 0" :title="item.title">{{ item.title }}
                 </NuxtLink>
             </li>
         </ul>

+ 1 - 1
components/detail/HotNews2.vue

@@ -11,7 +11,7 @@
                 <img class="hotNewsImg" :src="item.imgurl">
                 <p>{{ item.title }}</p>
             </NuxtLink>
-            <NuxtLink :to="`/${item.pinyin}/a/${item.id}.html`" v-if="item.islink == 0" :title="item.title">
+            <NuxtLink :to="`/${item.pinyin}/${item.id}.html`" v-if="item.islink == 0" :title="item.title">
                 <img class="hotNewsImg" :src="item.imgurl">
                 <p>{{ item.title }}</p>
             </NuxtLink>

+ 1 - 1
components/home/BigSwiper.vue

@@ -3,7 +3,7 @@
         <el-carousel :interval="5000" arrow="always" height="405px" indicator-class="custom-indicator"
             class="custom-carousel" @change="handleIndicatorChange">
             <el-carousel-item v-for="(item, index) in imagelist" :key="index">
-                <NuxtLink :to="`/${item.pinyin}/a/${item.id}.html`"
+                <NuxtLink :to="`/${item.pinyin}/${item.id}.html`"
                     :title="item.title">
                     <img :src="item.imgurl" :alt="item.title">
                     <span>{{ item.title }}</span>

+ 1 - 1
components/home/BigTitle_List.vue

@@ -4,7 +4,7 @@
             <ul>
                 <li v-for="item in headlinelist1" class="left">
                     <!-- <i></i> -->
-                    <NuxtLink :to="{path:`/${item.pinyin}/a/${item.id}.html`}" :title="item.title">{{item.title}}</NuxtLink>
+                    <NuxtLink :to="{path:`/${item.pinyin}/${item.id}.html`}" :title="item.title">{{item.title}}</NuxtLink>
                 </li>
             </ul>
         </div>

+ 1 - 1
components/home/PageMessage.vue

@@ -41,7 +41,7 @@ const getLinkPathDetail = (item) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
-        return `/${item.pinyin}/a/${item.id}.html`;
+        return `/${item.pinyin}/${item.id}.html`;
     }
 }
 //0.加载必备依赖 end ---------------------------------------->

+ 1 - 1
components/home/SecondaryHeading.vue

@@ -9,7 +9,7 @@
                 <strong>频道介绍</strong>
                 <div v-for="(item,index) in titleData">
                     <span v-if="index<=7">
-                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}">{{ item.alias }}</NuxtLink>
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html`}">{{ item.alias }}</NuxtLink>
                     </span>
                     <b v-else></b>
                 </div>

+ 3 - 3
components/home/Slider.vue

@@ -81,9 +81,9 @@ const props = defineProps({
 //格式化跳转路径 - 标题
 const getLinkPath = (item) => {
     if (item.children_count == 0) {
-        return `/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/list-1.html`;
     } else {
-        return `/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/index.html`;
     }
 }
 //格式化跳转路径 - 到详情
@@ -91,7 +91,7 @@ const getLinkPathDetail = (item) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
-        return `/${item.pinyin}/a/${item.id}.html`;
+        return `/${item.pinyin}/${item.id}.html`;
     }
 }
 //2.获得本页的数据 end---------------------------------------->

+ 2 - 2
components/home/foot.vue

@@ -13,10 +13,10 @@
         </div>
         <div class="call_us_box">
             <span v-for="(item, index) in bottomMenu" :key="index">
-                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/1.html` }" v-if="item.type == 1" :title="item.name">
+                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/list-1.html` }" v-if="item.type == 1" :title="item.name">
                     {{ item.name }}
                 </NuxtLink>
-                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/` }" v-if="item.type == 0" :title="item.name">
+                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/index.html` }" v-if="item.type == 0" :title="item.name">
                     {{ item.name }}
                 </NuxtLink>
             </span>

+ 2 - 2
components/home/foot1.vue

@@ -2,10 +2,10 @@
     <footer class="index_foot">
         <div class="call_us_box">
             <span v-for="(item, index) in bottomMenu" :key="index">
-                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/1.html` }" v-if="item.type == 1" :title="item.name">
+                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/list-1.html` }" v-if="item.type == 1" :title="item.name">
                     {{ item.name }}
                 </NuxtLink>
-                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/` }" v-if="item.type == 0" :title="item.name">
+                <NuxtLink :to="{ path: `/about/${item.name_pinyin}/index.html` }" v-if="item.type == 0" :title="item.name">
                     {{ item.name }}
                 </NuxtLink>
             </span>

+ 1 - 1
components/home/pageHead.vue

@@ -330,7 +330,7 @@ onMounted(async () => {
         }
     }
     getLoginStatus();
-    setInterval(getLoginStatus, 5000);
+    setInterval(getLoginStatus, 3000);
 
     //从客户端获取广告
     //从客户端获取行政职能部门 加快打开速度

+ 2 - 2
components/home/pageNavigation.vue

@@ -112,10 +112,10 @@ const getLinkPath = (item) => {
         return `${item.web_url}`;
     }else if(item.children_count == 0){
         //return `/newsList/${item.category_id}?page=1`;
-        return `/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/list-1.html`;
     }else{
         //return `/primaryNavigation/${item.aLIas_pinyin}/`;
-        return `/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/index.html`;
     }
 }
 //2.加载模块数据 end ---------------------------------------->

+ 2 - 2
components/home/pageNavigation1.vue

@@ -70,10 +70,10 @@ const getLinkPath = (item) => {
         return `${item.web_url}`;
     }else if(item.children_count == 0){
         //return `/newsList/${item.category_id}?page=1`;
-        return `/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/list-1.html`;
     }else{
         //return `/primaryNavigation/${item.aLIas_pinyin}/`;
-        return `/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/index.html`;
     }
 }
 //2.加载模块数据 end ---------------------------------------->

+ 546 - 233
pages/[dir]/[dir]/[id].vue

@@ -1,127 +1,170 @@
 <template>
-    <div id="newsList">
-        <!-- 页面头部 -->
-        <HomePageHead></HomePageHead>
-
-        <!-- 导航栏 -->
-        <HomePageNavigation1></HomePageNavigation1>
-
-        <!-- 列表页广告一 -->
-        <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
-
-        <!-- 二级标题-->
-        <div class="sannongzhichuang" v-if="parent_name != ''">
-            <div class="inner">
-                <h2>
-                    <NuxtLink :to="`/${parent_pinyin}`"> {{ parent_name }}</NuxtLink>
-                    <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
-                </h2>
-                <p class="introduction">
-                    <strong>频道介绍</strong>
-                    <div v-for="(item, index) in secondNav" :key="index">
-                        <span v-if="index <= 7">
-                            <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}">{{ item.alias }}</NuxtLink>
-                        </span>
-                        <b v-else></b>
-                    </div>
-                </p>
-            </div>
-        </div>
-
-        <!-- 面包屑导航 -->
-        <div class="breadcrumb">
-            <div class="inner">
-                <span class="location">当前位置:</span>
-                <el-breadcrumb :separator-icon="ArrowRight">
-                    <el-breadcrumb-item>
-                        <NuxtLink to="/">首页</NuxtLink>
-                    </el-breadcrumb-item>
-                    <el-breadcrumb-item v-if="parent_name != ''">
-                        <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
-                    </el-breadcrumb-item>
-                    <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
-                </el-breadcrumb>
-            </div>
+    <!-- 页面头部 -->
+    <HomePageHead></HomePageHead>
+    <!-- 导航栏 -->
+    <HomePageNavigation1></HomePageNavigation1>
+    <!-- 列表页广告一 -->
+    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+    <!-- 面包屑导航 -->
+    <div class="breadcrumb">
+        <div class="inner">
+            <span class="location">当前位置:</span>
+            <el-breadcrumb :separator-icon="ArrowRight">
+                <el-breadcrumb-item>
+                    <NuxtLink to="/">首页</NuxtLink>
+                </el-breadcrumb-item>
+                <el-breadcrumb-item>
+                    <NuxtLink :to="`/${parent_pinyin}/list-1.html`"> {{ parent_name }}</NuxtLink>
+                </el-breadcrumb-item>
+                <el-breadcrumb-item>
+                    <NuxtLink :to="`list-1.html`"> {{ routLevelTitle }}</NuxtLink>
+                </el-breadcrumb-item>
+                <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
+            </el-breadcrumb>
         </div>
-        <!-- 资讯列表 -->
-        <div class="newsList">
-            <div class="inner">
-                <div class="innerLeft">
-                    <ul class="list">
-                        <li v-for="(item, index) in newsList" :key="index">
-                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
-                                {{ item.title }}
-                            </NuxtLink>
-                        </li>
-                    </ul>
-                    <!-- 分页器 -->
-                    <div class="pagination" v-if="total > 0">
-                        <el-pagination 
-                            size="small" 
-                            background 
-                            layout="prev, pager, next" 
-                            :total="total" 
-                            class="mt-4"
-                            :page-size="pageSize" 
-                            :current-page="pageNum"
-                            prev-text="上一页" 
-                            next-text="下一页" 
-                            @current-change="changePage" 
-                        />
+    </div>
+    <!-- 资讯列表 -->
+    <div class="newsDetail">
+        <div class="inner">
+            <div class="innerLeft">
+                <div class="LeftTop">
+                    <h1>{{ newsDetail.title }}</h1>
+                    <p>
+                        来源: <span>{{ newsDetail.copyfrom }}</span>
+                        作者: <span>{{ newsDetail.author }}</span>
+                        发布时间: <span>{{ time }}</span>
+                    </p>
+                    <!-- <img :src="newsDetail.imgurl" v-if="newsDetail.imgurl&&newsDetail.level==2||newsDetail.level==3"> -->
+                </div>
+                <!-- <div class="leftBottom" v-html="newsDetail.content" v-if="newsDetail.content"></div> -->
+                <div 
+                    class="leftBottom" 
+                    v-html="newsDetail.content" 
+                    v-if="newsDetail.content" 
+                    @click="openPreview">
+                </div>
+                <div v-if="previewVisible" class="preview-modal" @click="closePreview">
+                    <img :src="selectedImage" alt="Preview">
+                </div>
+                <!-- 免责声明: -->
+                <div class="disclaimer" v-if="newsDetail.copyfrom!='本网'">
+                    <p>原文链接:{{ newsDetail.fromurl }}</p>
+                    <p>[免责声明]本文来源于网络转载,仅供学习交流使用,不构成商业目的。 版权归原作者所有,如涉及作品内容,版权和其他问题,请在30日与本网联系,我们将第一时间处理。</p>
+                </div>
+                <div v-if="articleChoice">
+                    <!-- 投票 start ---------------------------------------->
+                    <div class="index_3_box_vote" v-if="articleChoice">
+                        <div class="voteTitle">投票区</div>
+                        <div class="inquire">
+                            <p v-if="voteList.length>0">{{voteList[0].survey_name}}</p>
+                            <div class="radioBox">
+                            <!--投票选项-->
+                            <div v-if="!isDisabled">
+                                <div class="radio" v-if="isRadio">
+                                    <el-radio-group v-model="radio1" @change="handleRadioChange">
+                                        <el-radio v-for="item in voteList" :key="item.id" :value="item.id" size="large">
+                                            <span v-if="item.is_other == 0">{{item.choice_name}}</span>
+                                            <span v-else>其他</span>
+                                        </el-radio>
+                                    </el-radio-group>
+                                    <el-input
+                                        v-if="showUserChoice"
+                                        v-model="userChoice"
+                                        :rows="2"
+                                        type="textarea"
+                                        resize="none"
+                                        placeholder="请输入.."
+                                    />
+                                </div>
+                                <div class="checkInputBox" v-else>
+                                    <el-checkbox-group v-model="check1" @change="handleCheckboxChange">
+                                        <span v-for="item in voteList" :key="item.id">
+                                            <span v-if="item.is_other == 0">
+                                                <el-checkbox size="large" :label="item.choice_name" :value="item.id"/>
+                                            </span>
+                                            <span v-else>
+                                                <el-checkbox size="large" label="其他" :value="item.id"/>
+                                            </span>
+                                        </span>
+                                    </el-checkbox-group>
+                                    <el-input
+                                        v-if="showUserChoice"
+                                        v-model="userChoice"
+                                        :rows="2"
+                                        type="textarea"
+                                        resize="none"
+                                        placeholder="请输入.."
+                                    />
+                                </div>
+                            </div>
+                            <!--投票结果-->
+                            <div class="inquireData" v-else>
+                                <div v-for="item in websiteSurveyData.data" :key="item.id">
+                                    <div class="inquireDataItem active" v-if="item.status == 1">
+                                        <div class="inquireDataItemTitle">
+                                            <span v-if="item.choice_name == ''">其他</span>
+                                            <span v-else>{{item.choice_name}}</span>
+                                        </div>
+                                        <div class="inquireDataItemNum">{{item.results}}票</div>
+                                    </div>
+                                    <div class="inquireDataItem" v-else>
+                                        <div class="inquireDataItemTitle">
+                                            <span v-if="item.choice_name == ''">其他</span>
+                                            <span v-else>{{item.choice_name}}</span>
+                                        </div>
+                                        <div class="inquireDataItemNum">{{item.results}}票</div>
+                                    </div>
+                                </div>
+                            </div>
+                            </div>
+                            <div class="btn">
+                                <button class="voting" @click="addWebsiteSurvey" :disabled="isDisabled" v-if="!isDisabled">投票</button>
+                            </div>
+                        </div>
                     </div>
+                    <!-- 投票 end ---------------------------------------->
                 </div>
-                <div class="innerRight">
+            </div>
+            <div class="innerRight">
+                <!-- 热点资讯1 -->
+                <div class="hotList1">
                     <DetailHotNews></DetailHotNews>
+                </div>
+                <!-- 热点资讯2 -->
+                <div class="hotList2">
                     <DetailHotNews2></DetailHotNews2>
                 </div>
             </div>
         </div>
-
-        <!-- 列表页广告二 -->
-        <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
-
-        <!-- 页面底部 -->
-        <HomeFoot1></HomeFoot1>
     </div>
+    <!-- 页面底部 -->
+    <HomeFoot1></HomeFoot1>
 </template>
 
 <script setup>
-//1.页面必备依赖 start ---------------------------------------->
-import { ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus'
+//1.页面依赖 start ---------------------------------------->
+import { onMounted } from 'vue'
+import { ElBreadcrumb, ElBreadcrumbItem,ElRadio, ElRadioGroup,ElCheckbox,ElCheckboxGroup,ElMessage,ElInput } from 'element-plus'
 import { ArrowRight } from '@element-plus/icons-vue'
-import { ref, onMounted } from 'vue';
-//当前列表名称
-const name = ref('')
-const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
 
-//格式化跳转路径
-const getLinkPathDetail = (item) => {
-    if (item.islink == 1) {
-        return `${item.linkurl}`;
-    } else {
-        //return `/${item.aLIas_pinyin}/${item.id}`;
-        //return `/newsDetail/${item.id}`
-        return `/${item.pinyin}/a/${item.id}.html`;
-    }
-}
-//1.页面必备依赖 end ---------------------------------------->
+const nuxtApp = useNuxtApp();
+const axios = nuxtApp.$axios;
 
-//1.获得路由id start ---------------------------------------->
+//1.1 获得跳转过来的id
 const route = useRoute();
-let articleId = 0;//路由id
-let pageNum = ref(2);
-let total = ref(1);
-let pageSize = ref(20);
+const articleId = parseInt(route.params.id);  //获得该页面的id
 
+//1.2 获得父级栏目的名称、id
 //获得当前的完整路径
 const fullPath = route.path;
 //拆分,取出来中间这一段,然后提取数字部分
 const segments = fullPath.split('/'); 
-const targetSegment = segments[2]; 
-//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
-//let routeId = 20 //排除路径错误可以打开这个
-//articleId = numberPart;
+const targetSegment = segments[1]; 
+// const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+// const routeId = numberPart;
+
 
+let routeId;
 //通过导航路径反向查询导航id
 const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
@@ -130,142 +173,139 @@ const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     },
 });
 if(getRouteId.code == 200){
-    articleId = getRouteId.data.category_id
+    routeId = getRouteId.data.category_id
 }else{
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     console.log("错误位置:通过url路径查询导航池id")
     console.log("后端错误反馈:",getRouteId.message)
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
 }
-//获得html前的数字
-const pageUrl = segments[3]; 
-const pageNumber = pageUrl.split('.')[0];
-console.log("当前URL中的页码:")
-console.log(pageNumber)//2
-pageNum.value = parseInt(pageNumber);
 
-//1.获得路由id end ---------------------------------------->
-
-//2.页面数据 start ---------------------------------------->
-//2.2新闻列表
-const newsList = ref([]);
-let newslists = async () => {
-    const listData = await requestDataPromise('/web/getWebsiteArticleList', {
-        method: 'GET',
-        query: {
-            'page': pageNum.value,
-            'pageSize': pageSize.value,
-            'catid': articleId
-        },
-    });
-    if (listData.code == 200) {
-        newsList.value = listData.data.rows;
-        total.value = listData.data.count;
-
-    } else {
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取新闻列表")
-        console.log("后端错误反馈:", listData.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-//获得列表
-newslists();
-
-//分页事件
-let changePage = (value) => {
-    console.log("当前页码", value);
-    navigateTo(`/${targetSegment}/${value}.html`)
-}
-
-//2.3获得页面名称
-let getPageName = async () => {
-    const pageName = await requestDataPromise('/web/getOneWebsiteCategory', {
-        method: 'GET',
-        query: {
-            'catid': articleId
-        },
-    });
-    if (pageName.code == 200) {
-        name.value = pageName.data.alias
-    } else {
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:设置页面标题")
-        console.log("后端错误反馈:", pageName.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-//获得列表
-getPageName();
-//2.页面数据 end ---------------------------------------->
-
-
-//3.二级栏目 start ---------------------------------------->
-//3.1通过id获取父栏目
-const parent_name = ref([]);
-const parent_id = ref([]);
+//面包屑导航
+const parent_name = ref("");
+const parent_id = ref("");
 const parent_pinyin = ref("");
 let getParentNav = async () => {
     const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
         method: 'GET',
         query: {
-            'catid': articleId
+            'catid': routeId
         },
     });
+    
     if (listData.code == 200) {
-        console.log(111999)
-        console.log(listData.data);
-        parent_name.value = listData.data.parent_name;
+        parent_name.value = listData.data.alias;
         parent_id.value = listData.data.parent_id;
-        parent_pinyin.value = listData.data.parent_pinyin;
+        parent_pinyin.value = listData.data.aLIas_pinyin;
+
     } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取新闻列表")
+        console.log("错误位置:获取面包屑导航")
         console.log("后端错误反馈:", listData.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
-    getSecondNav();
 }
 //获得父级栏目详情
 getParentNav();
+//1.页面依赖 end ---------------------------------------->
 
-// 3.2获取二级栏目
-const secondNav = ref([]);
-let getSecondNav = async () => {
-    const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
+//2.页面数据 start ---------------------------------------->
+//2.1 资讯详情
+const newsDetail = ref({})
+const routeNewsTtitle = ref("");
+//2.2 发布日期
+const time = ref("");
+//2.3 路径
+const routLevelTitle = ref("");
+const routLevelId = ref("");
+//是否展示投票
+const articleChoice = ref(false);
+//2.4获取详情
+async function getPageData() {
+    const mkdata =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
         method: 'GET',
         query: {
-            'placeid': 1,
-            'pid': parent_id.value,
-            'num': 8,
+            'articleid': articleId
         },
     });
-    console.log('listData', listData);
-
-    if (listData.code == 200) {
-        secondNav.value = listData.data;
-    } else {
+    if(mkdata.code==200){
+        //判断是否显示投票
+        if(mkdata.data.is_survey==1){
+            console.log("本篇文章含有投票!")
+            articleChoice.value = true;
+            getVoteList();
+        }
+        //获取内容
+        newsDetail.value = mkdata.data;
+        //获取路径
+        routLevelTitle.value = newsDetail.value.cat_name;
+        routLevelId.value = newsDetail.value.category_id;
+        //获取发布时间
+        time.value = newsDetail.value.updated_at.split(' ')[0];
+        //修正标题长度
+        if (newsDetail.value.title.length >= 30) {
+            routeNewsTtitle.value = newsDetail.value.title.substr(0, 30) + "...";
+        } else {
+            routeNewsTtitle.value = newsDetail.value.title
+        }
+    }else{
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取新闻列表")
-        console.log("后端错误反馈:", listData.message)
+        console.log("错误位置:获取详情内容")
+        console.log("后端错误反馈:",mkdata.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
 }
-//3.二级栏目 end ---------------------------------------->
+getPageData();
 
-//4.设置seo信息 start---------------------------------------->
-//4.1 设置seo信息
-const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+//2.5 获得广告
+//广告列表
+let adImg1 = ref([]);
+// async function getAdData(){
+//     const adData = await requestDataPromise('/web/getWebsiteAdvertisement',{method:'GET',query:{'ad_tag':'DETAIL'}});
+//     if(adData.code==200){
+//         for(let item of adData.data){
+//             if(item.ad_tag == 'DETAIL_0001'){
+//                 adImg1.value = item;
+//             }
+//         }
+//     }else{
+//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+//         console.log("错误位置:获取详情页广告列表")
+//         console.log("后端错误反馈:",adData.message)
+//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+//     }
+// }
+// getAdData();
+
+onMounted(async ()  => {
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_detail_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+})
+
+//2.页面数据 end ---------------------------------------->
+
+//3.设置seo信息 start---------------------------------------->
+//3.1 设置seo信息
+const setData =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
     method: 'GET',
     query: {
-        'catid': articleId
+        'articleid': articleId
     },
 });
-
-if (setData.code == 200) {
-    let seoTitle = setData.data.seo_title;
-    let seoDescription = setData.data.seo_description;
-    let seoKeywords = setData.data.seo_keywords;
+if(setData.code==200){
+    let seoTitle = setData.data.title;
+    let seoDescription = setData.data.introduce;
+    let seoKeywords = setData.data.keyword;
     let seoSuffix = setData.data.suffix;
     let seoName = setData.data.website_name;
 
@@ -276,51 +316,324 @@ if (setData.code == 200) {
             { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
         ]
     });
-} else {
+}else{
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    console.log("错误位置:设置列表页面SEO数据")
-    console.log("后端错误反馈:", setData.message)
+    console.log("错误位置:设置详情页面SEO数据")
+    console.log("后端错误反馈:",setData.message)
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
 }
-//4.设置seo信息 end---------------------------------------->
+//3.设置seo信息 end---------------------------------------->
 
+//4.投票 start---------------------------------------->
+const radio1 = ref(''); //单选
+const check1 = ref([]); //多选
+const isDisabled = ref(false);//是否禁用提交按钮
+const isRadio = ref(true);//是否渲染单选
 
-//5.广告 start---------------------------------------->
-let adImg1 = ref({});
-let adImg2 = ref({});
+const userSurId = ref('');//投票属于哪一篇文章
+const userChoice = ref('');//用于判断用户选择了其他选项以后,输入的值
+const userIsChoice = ref('');//用于判断其他选项目前是什么值
+const showUserChoice = ref(false);//是否显示其他输入框
+const websiteSurveyData = ref([]);//投票结果
 
-onMounted(async ()  => {
+//3.2获得投票列表
+let voteList = ref([]);
+async function getVoteList(){
+    const voteData = await requestHome('/web/getWebsiteSurvey',{method:'GET',query:{'art_id':articleId}});
+    console.log(778899)
+    console.log(voteData)
+    if(voteData.code == 200){
+        voteList.value = voteData.data;
+        console.log(voteList.value)
+        //判断显示单选还是多选
+        //survey_type 0是单选 1是多选
+        if(voteData.data[0].survey_type == 0){
+            isRadio.value = true;
+            console.log("1111")
+        }else{
+            isRadio.value = false;
+        }
+        //把最后一个的值拿出来 用于判断用户是否选择了其他
+        for(let item of voteData.data){
+            //如果含有其他
+            if(item.is_other==1){
+                userIsChoice.value = item.id;
+            }
+        }
+        //用户投票属于哪一篇文章
+        userSurId.value = voteData.data[0].sur_id;
 
-    //从客户端获取行政职能部门 加快打开速度
-    const { $webUrl, $CwebUrl } = useNuxtApp();
-    //广告1
-    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0001`
-    const responseAd1 = await fetch(url, {
-        headers: {
-            'Content-Type': 'application/json',
-            'Userurl': $CwebUrl,
-            'Origin': $CwebUrl
+    }else{
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:首页投票")
+        console.log("后端错误反馈:",voteData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->") 
+    }
+}
+
+
+//3.2当用户选择了选项,判断是否展示其他输入框
+const handleRadioChange = (value) => {
+    if(value == userIsChoice.value){
+        showUserChoice.value = true;
+    }else{
+        showUserChoice.value = false;
+    }
+}
+
+const handleCheckboxChange = (value) => {
+    if (value.includes(userIsChoice.value)) {
+        showUserChoice.value = true;
+    } else {
+        showUserChoice.value = false;
+    }
+}
+
+//3.2发起投票
+async function addWebsiteSurvey(){
+    //判断当前是单选还是多选
+    console.log(isRadio.value)
+    if(isRadio.value){
+        console.log("用户单选!")
+        if(radio1.value!=''){
+            //先判断一下是否使用了其他选项
+            if(showUserChoice.value){
+                if(userChoice.value!=''){
+                    //文章id
+                    // console.log(userSurId.value)
+                    // 用户输入的值
+                    // console.log(userChoice.value)
+                    //如果使用了其他,其他的选项需要增加进去
+                    const ChoiceData = await requestHome('/web/addWebsiteSurveyOption',{
+                        method:'GET',
+                        query:{
+                            'sur_id':userSurId.value,//投票的新闻id
+                            'choice_name':userChoice.value,//投票的选项id
+                        }
+                    });
+                    if(ChoiceData.code == 200){
+                        //提交完其他选项以后,再正式发起投票
+                        const mkData = await requestHome('/web/addWebsiteSurveyVote',{
+                            method:'GET',
+                            query:{
+                                'sur_id':userSurId.value,
+                                'choice_id':ChoiceData.data
+                            }
+                        });
+                        if(mkData.code == 200){
+                            ElMessage.success('投票成功!')
+                            //把投票结果显示到页面上 禁用投票按钮
+                            isDisabled.value = true;
+                            websiteSurveyData.value = mkData.data;
+                            //遍历一下,把用户选中的那个设置status为1
+                            let data = mkData.data;
+                            //遍历一下,把用户选中的那个设置status为1
+                            for(let item of data.data){
+                                for(let i of data.choice){
+                                    if(item.id == i){
+                                        console.log(item.id)
+                                        item.status = 1;
+                                    }
+                                }
+                            }
+                            websiteSurveyData.value = data;
+                        }else{
+                            ElMessage.error(mkData.message)
+                        }
+                    }else{
+                        ElMessage.error('其他投票失败!')
+                    }
+                }else{
+                    ElMessage.error('请输入选项内容!')
+                }
+            }else{
+                //如果没选择其他,直接提交选择的内容
+                const mkData = await requestHome('/web/addWebsiteSurveyVote',{
+                    method:'GET',
+                    query:{
+                        'sur_id':userSurId.value,
+                        'choice_id':radio1.value
+                    }
+                });
+                if(mkData.code == 200){
+                    ElMessage.success('投票成功!')
+                    //把投票结果显示到页面上 禁用投票按钮
+                    isDisabled.value = true;
+                    let data = mkData.data;
+                    //遍历一下,把用户选中的那个设置status为1
+                    for(let item of data.data){
+                        for(let i of data.choice){
+                            if(item.id == i){
+                                item.status = 1;
+                            }
+                        }
+                    }
+                    websiteSurveyData.value = data;
+                }else{
+                    ElMessage.error('投票失败!')
+                }
+            }
+        }else{
+            ElMessage.error('请选择一个选项')
         }
-    });
-    const resultAd1 = await responseAd1.json();
-    adImg1.value = resultAd1.data[0];
-    
-    //广告2
-    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0002`
-    const responseAd2 = await fetch(url2, {
-        headers: {
-            'Content-Type': 'application/json',
-            'Userurl': $CwebUrl,
-            'Origin': $CwebUrl
+    }else{
+        console.log("多选!")
+        //多选
+        if(check1.value!=[]){
+             //先判断一下是否使用了其他选项
+            if(showUserChoice.value){
+                if(userChoice.value!=''){
+                    //判断用户是否只选择了一个其他
+                    if(check1.value.length == 1){
+                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
+                            method:'GET',
+                            query:{
+                                'sur_id':userSurId.value,//投票的新闻id
+                                'choice_name':userChoice.value,//用户输入的其他选项文字
+                            }
+                        });
+                        if(ChoiceData.code == 200){
+                            //提交完其他选项以后,再正式发起投票
+                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
+                                method:'GET',
+                                query:{
+                                    'sur_id':userSurId.value,
+                                    'choice_id':ChoiceData.data
+                                }
+                            });
+                            if(mkData.code == 200){
+                                ElMessage.success('投票成功!')
+                                //把投票结果显示到页面上 禁用投票按钮
+                                isDisabled.value = true;
+                                websiteSurveyData.value = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                let data = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                for(let item of data.data){
+                                    for(let i of data.choice){
+                                        if(item.id == i){
+                                            console.log(item.id)
+                                            item.status = 1;
+                                        }
+                                    }
+                                }
+                                websiteSurveyData.value = data;
+                            }else{
+                                ElMessage.error(mkData.message)
+                            }
+                        }else{
+                            ElMessage.error('其他投票失败!')
+                        }
+
+                    }else{
+                        //用户选择了除了其他以外,还包括别的选项
+                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
+                            method:'GET',
+                            query:{
+                                'sur_id':userSurId.value,//投票的新闻id
+                                'choice_name':userChoice.value,//用户输入的其他选项文字
+                            }
+                        });
+                        if(ChoiceData.code == 200){
+                            let data = check1.value;
+                            //找到多选的数组,把其他默认值给替换掉
+                            for (let i = 0; i < data.length; i++) {
+                                if (data[i] == userIsChoice.value) {
+                                    data[i] = ChoiceData.data;
+                                }
+                            }
+                            let jsonArray = JSON.stringify(data);
+                            //提交完其他选项以后,再正式发起投票
+                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
+                                method:'GET',
+                                query:{
+                                    'sur_id':userSurId.value,
+                                    'choice_id':jsonArray
+                                }
+                            });
+                            
+                            if(mkData.code == 200){
+                                ElMessage.success('投票成功!')
+                                //把投票结果显示到页面上 禁用投票按钮
+                                isDisabled.value = true;
+                                websiteSurveyData.value = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                let data = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                for(let item of data.data){
+                                    for(let i of data.choice){
+                                        if(item.id == i){
+                                            //console.log(item.id)
+                                            item.status = 1;
+                                        }
+                                    }
+                                }
+                                websiteSurveyData.value = data;
+                            }else{
+                                ElMessage.error(mkData.message)
+                            }
+                        }else{
+                            ElMessage.error('其他投票失败!')
+                        }
+
+                    }
+                }else{
+                    ElMessage.error('请输入选项内容!')
+                }
+            }else{
+                let jsonArray = JSON.stringify(check1.value);
+                //如果没选择其他,直接提交选择的内容
+                const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
+                    method:'GET',
+                    query:{
+                        'sur_id':userSurId.value,
+                        'choice_id':jsonArray
+                    }
+                });
+                if(mkData.code == 200){
+                    ElMessage.success('投票成功!')
+                    //把投票结果显示到页面上 禁用投票按钮
+                    isDisabled.value = true;
+                    websiteSurveyData.value = mkData.data;
+                    //遍历一下,把用户选中的那个设置status为1
+                    let data = mkData.data;
+                    //遍历一下,把用户选中的那个设置status为1
+                    for(let item of data.data){
+                        for(let i of data.choice){
+                            if(item.id == i){
+                                console.log(item.id)
+                                item.status = 1;
+                            }
+                        }
+                    }
+                    websiteSurveyData.value = data;
+                }else{
+                    ElMessage.error('投票失败!')
+                }
+            }
+        }else{
+            ElMessage.error('请选择一个选项')
         }
-    });
-    const resultAd2 = await responseAd2.json();
-    adImg2.value = resultAd2.data[0];
+    }
+}
+//4.投票 end---------------------------------------->
 
-})
-//5.广告 end---------------------------------------->
+//5.页面图片放大 start---------------------------------------->
+const previewVisible = ref(false)
+const selectedImage = ref(' ')
+
+const openPreview = (event) => {
+    if (event.target.tagName === 'IMG') {
+        selectedImage.value = event.target.src;
+        previewVisible.value = true;
+    }
+}
+const closePreview = () => {
+    previewVisible.value = false;
+}
+//5.页面图片放大 end---------------------------------------->
 </script>
 
 <style lang="less" scoped>
-@import url('@/assets/css/list.less');
+@import url('@/assets/css/detail.less');
 </style>

+ 0 - 637
pages/[dir]/[dir]/a/[id].vue

@@ -1,637 +0,0 @@
-<template>
-    <!-- 页面头部 -->
-    <HomePageHead></HomePageHead>
-    <!-- 导航栏 -->
-    <HomePageNavigation1></HomePageNavigation1>
-    <!-- 列表页广告一 -->
-    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
-    <!-- 面包屑导航 -->
-    <div class="breadcrumb">
-        <div class="inner">
-            <span class="location">当前位置{{ parent_name }}:</span>
-            <el-breadcrumb :separator-icon="ArrowRight">
-                <el-breadcrumb-item>
-                    <NuxtLink to="/">首页</NuxtLink>
-                </el-breadcrumb-item>
-                <el-breadcrumb-item v-if="parent_name != ''">
-                    <NuxtLink :to="`/${parent_pinyin}/`"> 
-                        {{ parent_name }}
-                    </NuxtLink>
-                </el-breadcrumb-item>
-                <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
-            </el-breadcrumb>
-        </div>
-    </div>
-    <!-- 资讯列表 -->
-    <div class="newsDetail">
-        <div class="inner">
-            <div class="innerLeft">
-                <div class="LeftTop">
-                    <h1>{{ newsDetail.title }}</h1>
-                    <p>
-                        来源: <span>{{ newsDetail.copyfrom }}</span>
-                        作者: <span>{{ newsDetail.author }}</span>
-                        发布时间: <span>{{ time }}</span>
-                    </p>
-                    <!-- <img :src="newsDetail.imgurl" v-if="newsDetail.imgurl&&newsDetail.level==2||newsDetail.level==3"> -->
-                </div>
-                <!-- <div class="leftBottom" v-html="newsDetail.content" v-if="newsDetail.content"></div> -->
-                <div 
-                    class="leftBottom" 
-                    v-html="newsDetail.content" 
-                    v-if="newsDetail.content" 
-                    @click="openPreview">
-                </div>
-                <div v-if="previewVisible" class="preview-modal" @click="closePreview">
-                    <img :src="selectedImage" alt="Preview">
-                </div>
-                <!-- 免责声明: -->
-                <div class="disclaimer" v-if="newsDetail.copyfrom!='本网'">
-                    <p>原文链接:{{ newsDetail.fromurl }}</p>
-                    <p>[免责声明]本文来源于网络转载,仅供学习交流使用,不构成商业目的。 版权归原作者所有,如涉及作品内容,版权和其他问题,请在30日与本网联系,我们将第一时间处理。</p>
-                </div>
-                <div v-if="articleChoice">
-                    <!-- 投票 start ---------------------------------------->
-                    <div class="index_3_box_vote" v-if="articleChoice">
-                        <div class="voteTitle">投票区</div>
-                        <div class="inquire">
-                            <p v-if="voteList.length>0">{{voteList[0].survey_name}}</p>
-                            <div class="radioBox">
-                            <!--投票选项-->
-                            <div v-if="!isDisabled">
-                                <div class="radio" v-if="isRadio">
-                                    <el-radio-group v-model="radio1" @change="handleRadioChange">
-                                        <el-radio v-for="item in voteList" :key="item.id" :value="item.id" size="large">
-                                            <span v-if="item.is_other == 0">{{item.choice_name}}</span>
-                                            <span v-else>其他</span>
-                                        </el-radio>
-                                    </el-radio-group>
-                                    <el-input
-                                        v-if="showUserChoice"
-                                        v-model="userChoice"
-                                        :rows="2"
-                                        type="textarea"
-                                        resize="none"
-                                        placeholder="请输入.."
-                                    />
-                                </div>
-                                <div class="checkInputBox" v-else>
-                                    <el-checkbox-group v-model="check1" @change="handleCheckboxChange">
-                                        <span v-for="item in voteList" :key="item.id">
-                                            <span v-if="item.is_other == 0">
-                                                <el-checkbox size="large" :label="item.choice_name" :value="item.id"/>
-                                            </span>
-                                            <span v-else>
-                                                <el-checkbox size="large" label="其他" :value="item.id"/>
-                                            </span>
-                                        </span>
-                                    </el-checkbox-group>
-                                    <el-input
-                                        v-if="showUserChoice"
-                                        v-model="userChoice"
-                                        :rows="2"
-                                        type="textarea"
-                                        resize="none"
-                                        placeholder="请输入.."
-                                    />
-                                </div>
-                            </div>
-                            <!--投票结果-->
-                            <div class="inquireData" v-else>
-                                <div v-for="item in websiteSurveyData.data" :key="item.id">
-                                    <div class="inquireDataItem active" v-if="item.status == 1">
-                                        <div class="inquireDataItemTitle">
-                                            <span v-if="item.choice_name == ''">其他</span>
-                                            <span v-else>{{item.choice_name}}</span>
-                                        </div>
-                                        <div class="inquireDataItemNum">{{item.results}}票</div>
-                                    </div>
-                                    <div class="inquireDataItem" v-else>
-                                        <div class="inquireDataItemTitle">
-                                            <span v-if="item.choice_name == ''">其他</span>
-                                            <span v-else>{{item.choice_name}}</span>
-                                        </div>
-                                        <div class="inquireDataItemNum">{{item.results}}票</div>
-                                    </div>
-                                </div>
-                            </div>
-                            </div>
-                            <div class="btn">
-                                <button class="voting" @click="addWebsiteSurvey" :disabled="isDisabled" v-if="!isDisabled">投票</button>
-                            </div>
-                        </div>
-                    </div>
-                    <!-- 投票 end ---------------------------------------->
-                </div>
-            </div>
-            <div class="innerRight">
-                <!-- 热点资讯1 -->
-                <div class="hotList1">
-                    <DetailHotNews></DetailHotNews>
-                </div>
-                <!-- 热点资讯2 -->
-                <div class="hotList2">
-                    <DetailHotNews2></DetailHotNews2>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- 页面底部 -->
-    <HomeFoot1></HomeFoot1>
-</template>
-
-<script setup>
-//1.页面依赖 start ---------------------------------------->
-import { onMounted } from 'vue'
-import { ElBreadcrumb, ElBreadcrumbItem,ElRadio, ElRadioGroup,ElCheckbox,ElCheckboxGroup,ElMessage,ElInput } from 'element-plus'
-import { ArrowRight } from '@element-plus/icons-vue'
-
-const nuxtApp = useNuxtApp();
-const axios = nuxtApp.$axios;
-
-//1.1 获得跳转过来的id
-const route = useRoute();
-const articleId = parseInt(route.params.id);  //获得该页面的id
-
-//1.2 获得父级栏目的名称、id
-//获得当前的完整路径
-const fullPath = route.path;
-//拆分,取出来中间这一段,然后提取数字部分
-const segments = fullPath.split('/'); 
-const targetSegment = segments[1]; 
-// const numberPart = targetSegment.match(/\d+$/)?.[0]; 
-// const routeId = numberPart;
-
-let routeId;
-//通过导航路径反向查询导航id
-const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
-    method: 'GET',
-    query: {
-        'pinyin': targetSegment,
-    },
-});
-if(getRouteId.code == 200){
-    routeId = getRouteId.data.category_id
-}else{
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    console.log("错误位置:通过url路径查询导航池id")
-    console.log("后端错误反馈:",getRouteId.message)
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-}
-
-//面包屑导航
-const parent_name = ref("");
-const parent_id = ref("");
-const parent_pinyin = ref("");
-let getParentNav = async () => {
-    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
-        method: 'GET',
-        query: {
-            'catid': routeId
-        },
-    });
-    
-    if (listData.code == 200) {
-        parent_name.value = listData.data.alias;
-        parent_id.value = listData.data.parent_id;
-        parent_pinyin.value = listData.data.aLIas_pinyin;
-
-    } else {
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取面包屑导航")
-        console.log("后端错误反馈:", listData.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-//获得父级栏目详情
-getParentNav();
-//1.页面依赖 end ---------------------------------------->
-
-//2.页面数据 start ---------------------------------------->
-//2.1 资讯详情
-const newsDetail = ref({})
-const routeNewsTtitle = ref("");
-//2.2 发布日期
-const time = ref("");
-//2.3 路径
-const routLevelTitle = ref("");
-const routLevelId = ref("");
-//是否展示投票
-const articleChoice = ref(false);
-//2.4获取详情
-async function getPageData() {
-    const mkdata =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
-        method: 'GET',
-        query: {
-            'articleid': articleId
-        },
-    });
-    if(mkdata.code==200){
-        //判断是否显示投票
-        if(mkdata.data.is_survey==1){
-            console.log("本篇文章含有投票!")
-            articleChoice.value = true;
-            getVoteList();
-        }
-        //获取内容
-        newsDetail.value = mkdata.data;
-        //获取路径
-        routLevelTitle.value = newsDetail.value.cat_name;
-        routLevelId.value = newsDetail.value.category_id;
-        //获取发布时间
-        time.value = newsDetail.value.updated_at.split(' ')[0];
-        //修正标题长度
-        if (newsDetail.value.title.length >= 30) {
-            routeNewsTtitle.value = newsDetail.value.title.substr(0, 30) + "...";
-        } else {
-            routeNewsTtitle.value = newsDetail.value.title
-        }
-    }else{
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取详情内容")
-        console.log("后端错误反馈:",mkdata.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-getPageData();
-
-//2.5 获得广告
-//广告列表
-let adImg1 = ref([]);
-// async function getAdData(){
-//     const adData = await requestDataPromise('/web/getWebsiteAdvertisement',{method:'GET',query:{'ad_tag':'DETAIL'}});
-//     if(adData.code==200){
-//         for(let item of adData.data){
-//             if(item.ad_tag == 'DETAIL_0001'){
-//                 adImg1.value = item;
-//             }
-//         }
-//     }else{
-//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//         console.log("错误位置:获取详情页广告列表")
-//         console.log("后端错误反馈:",adData.message)
-//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//     }
-// }
-// getAdData();
-
-onMounted(async ()  => {
-    const { $webUrl, $CwebUrl } = useNuxtApp();
-    //广告1
-    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_detail_0001`
-    const responseAd1 = await fetch(url, {
-        headers: {
-            'Content-Type': 'application/json',
-            'Userurl': $CwebUrl,
-            'Origin': $CwebUrl
-        }
-    });
-    const resultAd1 = await responseAd1.json();
-    adImg1.value = resultAd1.data[0];
-})
-
-//2.页面数据 end ---------------------------------------->
-
-//3.设置seo信息 start---------------------------------------->
-//3.1 设置seo信息
-const setData =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
-    method: 'GET',
-    query: {
-        'articleid': articleId
-    },
-});
-if(setData.code==200){
-    let seoTitle = setData.data.title;
-    let seoDescription = setData.data.introduce;
-    let seoKeywords = setData.data.keyword;
-    let seoSuffix = setData.data.suffix;
-    let seoName = setData.data.website_name;
-
-    useSeoMeta({
-        title: seoTitle + "_" + seoName + "_" + seoSuffix,
-        meta: [
-            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix , tagPriority: 10 },
-            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
-        ]
-    });
-}else{
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    console.log("错误位置:设置详情页面SEO数据")
-    console.log("后端错误反馈:",setData.message)
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-}
-//3.设置seo信息 end---------------------------------------->
-
-//4.投票 start---------------------------------------->
-const radio1 = ref(''); //单选
-const check1 = ref([]); //多选
-const isDisabled = ref(false);//是否禁用提交按钮
-const isRadio = ref(true);//是否渲染单选
-
-const userSurId = ref('');//投票属于哪一篇文章
-const userChoice = ref('');//用于判断用户选择了其他选项以后,输入的值
-const userIsChoice = ref('');//用于判断其他选项目前是什么值
-const showUserChoice = ref(false);//是否显示其他输入框
-const websiteSurveyData = ref([]);//投票结果
-
-//3.2获得投票列表
-let voteList = ref([]);
-async function getVoteList(){
-    const voteData = await requestHome('/web/getWebsiteSurvey',{method:'GET',query:{'art_id':articleId}});
-    console.log(778899)
-    console.log(voteData)
-    if(voteData.code == 200){
-        voteList.value = voteData.data;
-        console.log(voteList.value)
-        //判断显示单选还是多选
-        //survey_type 0是单选 1是多选
-        if(voteData.data[0].survey_type == 0){
-            isRadio.value = true;
-            console.log("1111")
-        }else{
-            isRadio.value = false;
-        }
-        //把最后一个的值拿出来 用于判断用户是否选择了其他
-        for(let item of voteData.data){
-            //如果含有其他
-            if(item.is_other==1){
-                userIsChoice.value = item.id;
-            }
-        }
-        //用户投票属于哪一篇文章
-        userSurId.value = voteData.data[0].sur_id;
-
-    }else{
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:首页投票")
-        console.log("后端错误反馈:",voteData.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->") 
-    }
-}
-
-
-//3.2当用户选择了选项,判断是否展示其他输入框
-const handleRadioChange = (value) => {
-    if(value == userIsChoice.value){
-        showUserChoice.value = true;
-    }else{
-        showUserChoice.value = false;
-    }
-}
-
-const handleCheckboxChange = (value) => {
-    if (value.includes(userIsChoice.value)) {
-        showUserChoice.value = true;
-    } else {
-        showUserChoice.value = false;
-    }
-}
-
-//3.2发起投票
-async function addWebsiteSurvey(){
-    //判断当前是单选还是多选
-    console.log(isRadio.value)
-    if(isRadio.value){
-        console.log("用户单选!")
-        if(radio1.value!=''){
-            //先判断一下是否使用了其他选项
-            if(showUserChoice.value){
-                if(userChoice.value!=''){
-                    //文章id
-                    // console.log(userSurId.value)
-                    // 用户输入的值
-                    // console.log(userChoice.value)
-                    //如果使用了其他,其他的选项需要增加进去
-                    const ChoiceData = await requestHome('/web/addWebsiteSurveyOption',{
-                        method:'GET',
-                        query:{
-                            'sur_id':userSurId.value,//投票的新闻id
-                            'choice_name':userChoice.value,//投票的选项id
-                        }
-                    });
-                    if(ChoiceData.code == 200){
-                        //提交完其他选项以后,再正式发起投票
-                        const mkData = await requestHome('/web/addWebsiteSurveyVote',{
-                            method:'GET',
-                            query:{
-                                'sur_id':userSurId.value,
-                                'choice_id':ChoiceData.data
-                            }
-                        });
-                        if(mkData.code == 200){
-                            ElMessage.success('投票成功!')
-                            //把投票结果显示到页面上 禁用投票按钮
-                            isDisabled.value = true;
-                            websiteSurveyData.value = mkData.data;
-                            //遍历一下,把用户选中的那个设置status为1
-                            let data = mkData.data;
-                            //遍历一下,把用户选中的那个设置status为1
-                            for(let item of data.data){
-                                for(let i of data.choice){
-                                    if(item.id == i){
-                                        console.log(item.id)
-                                        item.status = 1;
-                                    }
-                                }
-                            }
-                            websiteSurveyData.value = data;
-                        }else{
-                            ElMessage.error(mkData.message)
-                        }
-                    }else{
-                        ElMessage.error('其他投票失败!')
-                    }
-                }else{
-                    ElMessage.error('请输入选项内容!')
-                }
-            }else{
-                //如果没选择其他,直接提交选择的内容
-                const mkData = await requestHome('/web/addWebsiteSurveyVote',{
-                    method:'GET',
-                    query:{
-                        'sur_id':userSurId.value,
-                        'choice_id':radio1.value
-                    }
-                });
-                if(mkData.code == 200){
-                    ElMessage.success('投票成功!')
-                    //把投票结果显示到页面上 禁用投票按钮
-                    isDisabled.value = true;
-                    let data = mkData.data;
-                    //遍历一下,把用户选中的那个设置status为1
-                    for(let item of data.data){
-                        for(let i of data.choice){
-                            if(item.id == i){
-                                item.status = 1;
-                            }
-                        }
-                    }
-                    websiteSurveyData.value = data;
-                }else{
-                    ElMessage.error('投票失败!')
-                }
-            }
-        }else{
-            ElMessage.error('请选择一个选项')
-        }
-    }else{
-        console.log("多选!")
-        //多选
-        if(check1.value!=[]){
-             //先判断一下是否使用了其他选项
-            if(showUserChoice.value){
-                if(userChoice.value!=''){
-                    //判断用户是否只选择了一个其他
-                    if(check1.value.length == 1){
-                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
-                            method:'GET',
-                            query:{
-                                'sur_id':userSurId.value,//投票的新闻id
-                                'choice_name':userChoice.value,//用户输入的其他选项文字
-                            }
-                        });
-                        if(ChoiceData.code == 200){
-                            //提交完其他选项以后,再正式发起投票
-                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
-                                method:'GET',
-                                query:{
-                                    'sur_id':userSurId.value,
-                                    'choice_id':ChoiceData.data
-                                }
-                            });
-                            if(mkData.code == 200){
-                                ElMessage.success('投票成功!')
-                                //把投票结果显示到页面上 禁用投票按钮
-                                isDisabled.value = true;
-                                websiteSurveyData.value = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                let data = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                for(let item of data.data){
-                                    for(let i of data.choice){
-                                        if(item.id == i){
-                                            console.log(item.id)
-                                            item.status = 1;
-                                        }
-                                    }
-                                }
-                                websiteSurveyData.value = data;
-                            }else{
-                                ElMessage.error(mkData.message)
-                            }
-                        }else{
-                            ElMessage.error('其他投票失败!')
-                        }
-
-                    }else{
-                        //用户选择了除了其他以外,还包括别的选项
-                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
-                            method:'GET',
-                            query:{
-                                'sur_id':userSurId.value,//投票的新闻id
-                                'choice_name':userChoice.value,//用户输入的其他选项文字
-                            }
-                        });
-                        if(ChoiceData.code == 200){
-                            let data = check1.value;
-                            //找到多选的数组,把其他默认值给替换掉
-                            for (let i = 0; i < data.length; i++) {
-                                if (data[i] == userIsChoice.value) {
-                                    data[i] = ChoiceData.data;
-                                }
-                            }
-                            let jsonArray = JSON.stringify(data);
-                            //提交完其他选项以后,再正式发起投票
-                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
-                                method:'GET',
-                                query:{
-                                    'sur_id':userSurId.value,
-                                    'choice_id':jsonArray
-                                }
-                            });
-                            
-                            if(mkData.code == 200){
-                                ElMessage.success('投票成功!')
-                                //把投票结果显示到页面上 禁用投票按钮
-                                isDisabled.value = true;
-                                websiteSurveyData.value = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                let data = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                for(let item of data.data){
-                                    for(let i of data.choice){
-                                        if(item.id == i){
-                                            //console.log(item.id)
-                                            item.status = 1;
-                                        }
-                                    }
-                                }
-                                websiteSurveyData.value = data;
-                            }else{
-                                ElMessage.error(mkData.message)
-                            }
-                        }else{
-                            ElMessage.error('其他投票失败!')
-                        }
-
-                    }
-                }else{
-                    ElMessage.error('请输入选项内容!')
-                }
-            }else{
-                let jsonArray = JSON.stringify(check1.value);
-                //如果没选择其他,直接提交选择的内容
-                const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
-                    method:'GET',
-                    query:{
-                        'sur_id':userSurId.value,
-                        'choice_id':jsonArray
-                    }
-                });
-                if(mkData.code == 200){
-                    ElMessage.success('投票成功!')
-                    //把投票结果显示到页面上 禁用投票按钮
-                    isDisabled.value = true;
-                    websiteSurveyData.value = mkData.data;
-                    //遍历一下,把用户选中的那个设置status为1
-                    let data = mkData.data;
-                    //遍历一下,把用户选中的那个设置status为1
-                    for(let item of data.data){
-                        for(let i of data.choice){
-                            if(item.id == i){
-                                console.log(item.id)
-                                item.status = 1;
-                            }
-                        }
-                    }
-                    websiteSurveyData.value = data;
-                }else{
-                    ElMessage.error('投票失败!')
-                }
-            }
-        }else{
-            ElMessage.error('请选择一个选项')
-        }
-    }
-}
-//4.投票 end---------------------------------------->
-
-//5.页面图片放大 start---------------------------------------->
-const previewVisible = ref(false)
-const selectedImage = ref(' ')
-
-const openPreview = (event) => {
-    if (event.target.tagName === 'IMG') {
-        selectedImage.value = event.target.src;
-        previewVisible.value = true;
-    }
-}
-const closePreview = () => {
-    previewVisible.value = false;
-}
-//5.页面图片放大 end---------------------------------------->
-</script>
-
-<style lang="less" scoped>
-@import url('@/assets/css/detail.less');
-</style>

+ 329 - 0
pages/[dir]/[dir]/list-[id].vue

@@ -0,0 +1,329 @@
+<template>
+    <div id="newsList">
+        <!-- 页面头部 -->
+        <HomePageHead></HomePageHead>
+
+        <!-- 导航栏 -->
+        <HomePageNavigation1></HomePageNavigation1>
+
+        <!-- 列表页广告一 -->
+        <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+
+        <!-- 二级标题-->
+        <div class="sannongzhichuang" v-if="parent_name != ''">
+            <div class="inner">
+                <h2>
+                    <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                    <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
+                </h2>
+                <p class="introduction">
+                    <strong>频道介绍</strong>
+                    <div v-for="(item, index) in secondNav" :key="index">
+                        <span v-if="index <= 7">
+                            <NuxtLink :to="{ path: `/${targetRoute}/${item.aLIas_pinyin}/list-1.html`}">{{ item.alias }}</NuxtLink>
+                        </span>
+                        <b v-else></b>
+                    </div>
+                </p>
+            </div>
+        </div>
+
+        <!-- 面包屑导航 -->
+        <div class="breadcrumb">
+            <div class="inner">
+                <span class="location">当前位置:</span>
+                <el-breadcrumb :separator-icon="ArrowRight">
+                    <el-breadcrumb-item>
+                        <NuxtLink to="/">首页</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item v-if="parent_name !=''">
+                        <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
+                </el-breadcrumb>
+            </div>
+        </div>
+        <!-- 资讯列表 -->
+        <div class="newsList">
+            <div class="inner">
+                <div class="innerLeft">
+                    <ul class="list">
+                        <li v-for="(item, index) in newsList" :key="index">
+                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
+                                {{ item.title }}
+                            </NuxtLink>
+                        </li>
+                    </ul>
+                    <!-- 分页器 -->
+                    <div class="pagination" v-if="total > 0">
+                        <el-pagination 
+                            size="small" 
+                            background 
+                            layout="prev, pager, next" 
+                            :total="total" 
+                            class="mt-4"
+                            :page-size="pageSize" 
+                            :current-page="pageNum"
+                            prev-text="上一页" 
+                            next-text="下一页" 
+                            @current-change="changePage" 
+                        />
+                    </div>
+                </div>
+                <div class="innerRight">
+                    <DetailHotNews></DetailHotNews>
+                    <DetailHotNews2></DetailHotNews2>
+                </div>
+            </div>
+        </div>
+
+        <!-- 列表页广告二 -->
+        <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
+
+        <!-- 页面底部 -->
+        <HomeFoot1></HomeFoot1>
+    </div>
+</template>
+
+<script setup>
+//1.页面必备依赖 start ---------------------------------------->
+import { ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus'
+import { ArrowRight } from '@element-plus/icons-vue'
+import { ref, onMounted } from 'vue';
+//当前列表名称
+const name = ref('')
+const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
+
+//格式化跳转路径
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/${item.id}.html`;
+    }
+}
+//1.页面必备依赖 end ---------------------------------------->
+
+//1.获得路由id start ---------------------------------------->
+const route = useRoute();
+let articleId = 0;//路由id
+let pageNum = ref(2);
+let total = ref(1);
+let pageSize = ref(20);
+
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/'); 
+const targetSegment = segments[2]; 
+const targetRoute = segments[1]; 
+
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//let routeId = 20 //排除路径错误可以打开这个
+//articleId = numberPart;
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if(getRouteId.code == 200){
+    articleId = getRouteId.data.category_id
+}else{
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:",getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//获得html前的数字
+// const pageUrl = segments[3]; 
+// const pageNumber = pageUrl.split('.')[0];
+// console.log("当前URL中的页码:")
+// console.log(pageNumber)//2
+// pageNum.value = parseInt(pageNumber);
+pageNum.value = parseInt(route.params.id);
+
+//1.获得路由id end ---------------------------------------->
+
+//2.页面数据 start ---------------------------------------->
+//2.2新闻列表
+const newsList = ref([]);
+let newslists = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteArticleList', {
+        method: 'GET',
+        query: {
+            'page': pageNum.value,
+            'pageSize': pageSize.value,
+            'catid': articleId
+        },
+    });
+    if (listData.code == 200) {
+        newsList.value = listData.data.rows;
+        total.value = listData.data.count;
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得列表
+newslists();
+
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    navigateTo(`/${targetSegment}/${value}.html`)
+}
+
+//2.3获得页面名称
+let getPageName = async () => {
+    const pageName = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': articleId
+        },
+    });
+    if (pageName.code == 200) {
+        name.value = pageName.data.alias
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:设置页面标题")
+        console.log("后端错误反馈:", pageName.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得列表
+getPageName();
+//2.页面数据 end ---------------------------------------->
+
+
+//3.二级栏目 start ---------------------------------------->
+//3.1通过id获取父栏目
+const parent_name = ref([]);
+const parent_id = ref([]);
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': articleId
+        },
+    });
+    if (listData.code == 200) {
+        console.log(111999)
+        console.log(listData.data);
+        parent_name.value = listData.data.parent_name;
+        parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.parent_pinyin;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+    getSecondNav();
+}
+//获得父级栏目详情
+getParentNav();
+
+// 3.2获取二级栏目
+const secondNav = ref([]);
+let getSecondNav = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
+        method: 'GET',
+        query: {
+            'placeid': 1,
+            'pid': parent_id.value,
+            'num': 8,
+        },
+    });
+    console.log('listData', listData);
+
+    if (listData.code == 200) {
+        secondNav.value = listData.data;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//3.二级栏目 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': articleId
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoName + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix , tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置列表页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+
+
+//5.广告 start---------------------------------------->
+let adImg1 = ref({});
+let adImg2 = ref({});
+
+onMounted(async ()  => {
+
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+    
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+
+})
+//5.广告 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import url('@/assets/css/list.less');
+</style>

+ 543 - 230
pages/[dir]/[id].vue

@@ -1,126 +1,166 @@
 <template>
-    <div id="newsList">
-        <!-- 页面头部 -->
-        <HomePageHead></HomePageHead>
-
-        <!-- 导航栏 -->
-        <HomePageNavigation1></HomePageNavigation1>
-
-        <!-- 列表页广告一 -->
-        <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
-
-        <!-- 二级标题-->
-        <div class="sannongzhichuang" v-if="parent_name != ''">
-            <div class="inner">
-                <h2>
-                    <NuxtLink :to="`/${parent_pinyin}`"> {{ parent_name }}</NuxtLink>
-                    <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
-                </h2>
-                <p class="introduction">
-                    <strong>频道介绍</strong>
-                    <div v-for="(item, index) in secondNav" :key="index">
-                        <span v-if="index <= 7">
-                            <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}">{{ item.alias }}</NuxtLink>
-                        </span>
-                        <b v-else></b>
-                    </div>
-                </p>
-            </div>
-        </div>
-
-        <!-- 面包屑导航 -->
-        <div class="breadcrumb">
-            <div class="inner">
-                <span class="location">当前位置:</span>
-                <el-breadcrumb :separator-icon="ArrowRight">
-                    <el-breadcrumb-item>
-                        <NuxtLink to="/">首页</NuxtLink>
-                    </el-breadcrumb-item>
-                    <el-breadcrumb-item v-if="parent_name != ''">
-                        <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
-                    </el-breadcrumb-item>
-                    <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
-                </el-breadcrumb>
-            </div>
+    <!-- 页面头部 -->
+    <HomePageHead></HomePageHead>
+    <!-- 导航栏 -->
+    <HomePageNavigation1></HomePageNavigation1>
+    <!-- 列表页广告一 -->
+    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+    <!-- 面包屑导航 -->
+    <div class="breadcrumb">
+        <div class="inner">
+            <span class="location">当前位置:</span>
+            <el-breadcrumb :separator-icon="ArrowRight">
+                <el-breadcrumb-item>
+                    <NuxtLink to="/">首页</NuxtLink>
+                </el-breadcrumb-item>
+                <el-breadcrumb-item>
+                    <NuxtLink :to="`/${parent_pinyin}/list-1.html`"> {{ parent_name }}</NuxtLink>
+                </el-breadcrumb-item>
+                <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
+            </el-breadcrumb>
         </div>
-        <!-- 资讯列表 -->
-        <div class="newsList">
-            <div class="inner">
-                <div class="innerLeft">
-                    <ul class="list">
-                        <li v-for="(item, index) in newsList" :key="index">
-                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
-                                {{ item.title }}
-                            </NuxtLink>
-                        </li>
-                    </ul>
-                    <!-- 分页器 -->
-                    <div class="pagination" v-if="total > 0">
-                        <el-pagination 
-                            size="small" 
-                            background 
-                            layout="prev, pager, next" 
-                            :total="total" 
-                            class="mt-4"
-                            :page-size="pageSize" 
-                            :current-page="pageNum"
-                            prev-text="上一页" 
-                            next-text="下一页" 
-                            @current-change="changePage" 
-                        />
+    </div>
+    <!-- 资讯列表 -->
+    <div class="newsDetail">
+        <div class="inner">
+            <div class="innerLeft">
+                <div class="LeftTop">
+                    <h1>{{ newsDetail.title }}</h1>
+                    <p>
+                        来源: <span>{{ newsDetail.copyfrom }}</span>
+                        作者: <span>{{ newsDetail.author }}</span>
+                        发布时间: <span>{{ time }}</span>
+                    </p>
+                    <!-- <img :src="newsDetail.imgurl" v-if="newsDetail.imgurl&&newsDetail.level==2||newsDetail.level==3"> -->
+                </div>
+                <!-- <div class="leftBottom" v-html="newsDetail.content" v-if="newsDetail.content"></div> -->
+                <div 
+                    class="leftBottom" 
+                    v-html="newsDetail.content" 
+                    v-if="newsDetail.content" 
+                    @click="openPreview">
+                </div>
+                <div v-if="previewVisible" class="preview-modal" @click="closePreview">
+                    <img :src="selectedImage" alt="Preview">
+                </div>
+                <!-- 免责声明: -->
+                <div class="disclaimer" v-if="newsDetail.copyfrom!='本网'">
+                    <p>原文链接:{{ newsDetail.fromurl }}</p>
+                    <p>[免责声明]本文来源于网络转载,仅供学习交流使用,不构成商业目的。 版权归原作者所有,如涉及作品内容,版权和其他问题,请在30日与本网联系,我们将第一时间处理。</p>
+                </div>
+                <div v-if="articleChoice">
+                    <!-- 投票 start ---------------------------------------->
+                    <div class="index_3_box_vote" v-if="articleChoice">
+                        <div class="voteTitle">投票区</div>
+                        <div class="inquire">
+                            <p v-if="voteList.length>0">{{voteList[0].survey_name}}</p>
+                            <div class="radioBox">
+                            <!--投票选项-->
+                            <div v-if="!isDisabled">
+                                <div class="radio" v-if="isRadio">
+                                    <el-radio-group v-model="radio1" @change="handleRadioChange">
+                                        <el-radio v-for="item in voteList" :key="item.id" :value="item.id" size="large">
+                                            <span v-if="item.is_other == 0">{{item.choice_name}}</span>
+                                            <span v-else>其他</span>
+                                        </el-radio>
+                                    </el-radio-group>
+                                    <el-input
+                                        v-if="showUserChoice"
+                                        v-model="userChoice"
+                                        :rows="2"
+                                        type="textarea"
+                                        resize="none"
+                                        placeholder="请输入.."
+                                    />
+                                </div>
+                                <div class="checkInputBox" v-else>
+                                    <el-checkbox-group v-model="check1" @change="handleCheckboxChange">
+                                        <span v-for="item in voteList" :key="item.id">
+                                            <span v-if="item.is_other == 0">
+                                                <el-checkbox size="large" :label="item.choice_name" :value="item.id"/>
+                                            </span>
+                                            <span v-else>
+                                                <el-checkbox size="large" label="其他" :value="item.id"/>
+                                            </span>
+                                        </span>
+                                    </el-checkbox-group>
+                                    <el-input
+                                        v-if="showUserChoice"
+                                        v-model="userChoice"
+                                        :rows="2"
+                                        type="textarea"
+                                        resize="none"
+                                        placeholder="请输入.."
+                                    />
+                                </div>
+                            </div>
+                            <!--投票结果-->
+                            <div class="inquireData" v-else>
+                                <div v-for="item in websiteSurveyData.data" :key="item.id">
+                                    <div class="inquireDataItem active" v-if="item.status == 1">
+                                        <div class="inquireDataItemTitle">
+                                            <span v-if="item.choice_name == ''">其他</span>
+                                            <span v-else>{{item.choice_name}}</span>
+                                        </div>
+                                        <div class="inquireDataItemNum">{{item.results}}票</div>
+                                    </div>
+                                    <div class="inquireDataItem" v-else>
+                                        <div class="inquireDataItemTitle">
+                                            <span v-if="item.choice_name == ''">其他</span>
+                                            <span v-else>{{item.choice_name}}</span>
+                                        </div>
+                                        <div class="inquireDataItemNum">{{item.results}}票</div>
+                                    </div>
+                                </div>
+                            </div>
+                            </div>
+                            <div class="btn">
+                                <button class="voting" @click="addWebsiteSurvey" :disabled="isDisabled" v-if="!isDisabled">投票</button>
+                            </div>
+                        </div>
                     </div>
+                    <!-- 投票 end ---------------------------------------->
                 </div>
-                <div class="innerRight">
+            </div>
+            <div class="innerRight">
+                <!-- 热点资讯1 -->
+                <div class="hotList1">
                     <DetailHotNews></DetailHotNews>
+                </div>
+                <!-- 热点资讯2 -->
+                <div class="hotList2">
                     <DetailHotNews2></DetailHotNews2>
                 </div>
             </div>
         </div>
-
-        <!-- 列表页广告二 -->
-        <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
-
-        <!-- 页面底部 -->
-        <HomeFoot1></HomeFoot1>
     </div>
+    <!-- 页面底部 -->
+    <HomeFoot1></HomeFoot1>
 </template>
 
 <script setup>
-//1.页面必备依赖 start ---------------------------------------->
-import { ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus'
+//1.页面依赖 start ---------------------------------------->
+import { onMounted } from 'vue'
+import { ElBreadcrumb, ElBreadcrumbItem,ElRadio, ElRadioGroup,ElCheckbox,ElCheckboxGroup,ElMessage,ElInput } from 'element-plus'
 import { ArrowRight } from '@element-plus/icons-vue'
-import { ref, onMounted } from 'vue';
-//当前列表名称
-const name = ref('')
-const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
 
-//格式化跳转路径
-const getLinkPathDetail = (item) => {
-    if (item.islink == 1) {
-        return `${item.linkurl}`;
-    } else {
-        //return `/${item.aLIas_pinyin}/${item.id}`;
-        //return `/newsDetail/${item.id}`
-        return `/${item.pinyin}/a/${item.id}.html`;
-    }
-}
-//1.页面必备依赖 end ---------------------------------------->
+const nuxtApp = useNuxtApp();
+const axios = nuxtApp.$axios;
 
-//1.获得路由id start ---------------------------------------->
+//1.1 获得跳转过来的id
 const route = useRoute();
-let articleId = 0;//路由id
-let pageNum = ref(2);
-let total = ref(1);
-let pageSize = ref(20);
+//获得详情id
+const articleId = parseInt(route.params.id); //获得该页面的id
 
 //获得当前的完整路径
 const fullPath = route.path;
 //拆分,取出来中间这一段,然后提取数字部分
 const segments = fullPath.split('/'); 
 const targetSegment = segments[1]; 
-//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
-//let routeId = 20 //排除路径错误可以打开这个
-
+// const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+// let routeId = 20 //排除路径错误可以打开这个
+// const routeId = numberPart;
+let routeId;
 //通过导航路径反向查询导航id
 const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     method: 'GET',
@@ -129,7 +169,7 @@ const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
     },
 });
 if(getRouteId.code == 200){
-    articleId = getRouteId.data.category_id
+    routeId = getRouteId.data.category_id
 }else{
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     console.log("错误位置:通过url路径查询导航池id")
@@ -137,135 +177,135 @@ if(getRouteId.code == 200){
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
 }
 
-//获得html前的数字
-const pageUrl = segments[2]; 
-const pageNumber = pageUrl.split('.')[0];
-console.log("当前URL中的页码:")
-console.log(pageNumber)//2
-pageNum.value = parseInt(pageNumber);
-
-//1.获得路由id end ---------------------------------------->
-
-//2.页面数据 start ---------------------------------------->
-//2.2新闻列表
-const newsList = ref([]);
-let newslists = async () => {
-    const listData = await requestDataPromise('/web/getWebsiteArticleList', {
-        method: 'GET',
-        query: {
-            'page': pageNum.value,
-            'pageSize': pageSize.value,
-            'catid': articleId
-        },
-    });
-    if (listData.code == 200) {
-        newsList.value = listData.data.rows;
-        total.value = listData.data.count;
-
-    } else {
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取新闻列表")
-        console.log("后端错误反馈:", listData.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-//获得列表
-newslists();
-
-//分页事件
-let changePage = (value) => {
-    console.log("当前页码", value);
-    navigateTo(`/${targetSegment}/${value}.html`)
-}
 
-//2.3获得页面名称
-let getPageName = async () => {
-    const pageName = await requestDataPromise('/web/getOneWebsiteCategory', {
-        method: 'GET',
-        query: {
-            'catid': articleId
-        },
-    });
-    if (pageName.code == 200) {
-        name.value = pageName.data.alias
-    } else {
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:设置页面标题")
-        console.log("后端错误反馈:", pageName.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-//获得列表
-getPageName();
-//2.页面数据 end ---------------------------------------->
-
-
-//3.二级栏目 start ---------------------------------------->
-//3.1通过id获取父栏目
+//1.2 获得父级栏目的名称、id
 const parent_name = ref([]);
 const parent_id = ref([]);
 const parent_pinyin = ref("");
+const parent_children_count = ref(0)
 let getParentNav = async () => {
     const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
         method: 'GET',
         query: {
-            'catid': articleId
+            'catid': routeId
         },
     });
+    console.log("获取父级栏目数据")
+    console.log(listData)
     if (listData.code == 200) {
-        console.log(111999)
         console.log(listData.data);
-        parent_name.value = listData.data.parent_name;
+        parent_name.value = listData.data.alias;
         parent_id.value = listData.data.parent_id;
-        parent_pinyin.value = listData.data.parent_pinyin;
+        parent_pinyin.value = listData.data.aLIas_pinyin;
+        parent_children_count = listData.data.children_coun;
     } else {
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取新闻列表")
+        console.log("错误位置:获取面包屑导航")
         console.log("后端错误反馈:", listData.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
-    getSecondNav();
 }
-//获得列表
+//获得父级栏目详情
 getParentNav();
+//1.页面依赖 end ---------------------------------------->
 
-// 3.2获取二级栏目
-const secondNav = ref([]);
-let getSecondNav = async () => {
-    const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
+//2.页面数据 start ---------------------------------------->
+//2.1 资讯详情
+const newsDetail = ref({})
+const routeNewsTtitle = ref("");
+//2.2 发布日期
+const time = ref("");
+//2.3 路径
+const routLevelTitle = ref("");
+const routLevelId = ref("");
+//是否展示投票
+const articleChoice = ref(false);
+//2.4获取详情
+async function getPageData() {
+    const mkdata =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
         method: 'GET',
         query: {
-            'placeid': 1,
-            'pid': parent_id.value,
-            'num': 8,
+            'articleid': articleId
         },
     });
-    console.log('listData', listData);
-
-    if (listData.code == 200) {
-        secondNav.value = listData.data
-    } else {
+    if(mkdata.code==200){
+        //判断是否显示投票
+        if(mkdata.data.is_survey==1){
+            console.log("本篇文章含有投票!")
+            articleChoice.value = true;
+            getVoteList();
+        }
+        //获取内容
+        newsDetail.value = mkdata.data;
+        //获取路径
+        routLevelTitle.value = newsDetail.value.cat_name;
+        routLevelId.value = newsDetail.value.category_id;
+        //获取发布时间
+        time.value = newsDetail.value.updated_at.split(' ')[0];
+        //修正标题长度
+        if (newsDetail.value.title.length >= 30) {
+            routeNewsTtitle.value = newsDetail.value.title.substr(0, 30) + "...";
+        } else {
+            routeNewsTtitle.value = newsDetail.value.title
+        }
+    }else{
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取新闻列表")
-        console.log("后端错误反馈:", listData.message)
+        console.log("错误位置:获取详情内容")
+        console.log("后端错误反馈:",mkdata.message)
         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
     }
 }
-//3.二级栏目 end ---------------------------------------->
+getPageData();
+
+//2.5 获得广告
+//广告列表
+let adImg1 = ref([]);
+// async function getAdData(){
+//     const adData = await requestDataPromise('/web/getWebsiteAdvertisement',{method:'GET',query:{'ad_tag':'DETAIL'}});
+//     if(adData.code==200){
+//         for(let item of adData.data){
+//             if(item.ad_tag == 'DETAIL_0001'){
+//                 adImg1.value = item;
+//             }
+//         }
+//     }else{
+//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+//         console.log("错误位置:获取详情页广告列表")
+//         console.log("后端错误反馈:",adData.message)
+//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+//     }
+// }
+// getAdData();
 
-//4.设置seo信息 start---------------------------------------->
-//4.1 设置seo信息
-const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+onMounted(async ()  => {
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_detail_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+})
+
+//2.页面数据 end ---------------------------------------->
+
+//3.设置seo信息 start---------------------------------------->
+//3.1 设置seo信息
+const setData =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
     method: 'GET',
     query: {
-        'catid': articleId
+        'articleid': articleId
     },
 });
-
-if (setData.code == 200) {
-    let seoTitle = setData.data.seo_title;
-    let seoDescription = setData.data.seo_description;
-    let seoKeywords = setData.data.seo_keywords;
+if(setData.code==200){
+    let seoTitle = setData.data.title;
+    let seoDescription = setData.data.introduce;
+    let seoKeywords = setData.data.keyword;
     let seoSuffix = setData.data.suffix;
     let seoName = setData.data.website_name;
 
@@ -276,51 +316,324 @@ if (setData.code == 200) {
             { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
         ]
     });
-} else {
+}else{
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    console.log("错误位置:设置列表页面SEO数据")
-    console.log("后端错误反馈:", setData.message)
+    console.log("错误位置:设置详情页面SEO数据")
+    console.log("后端错误反馈:",setData.message)
     console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
 }
-//4.设置seo信息 end---------------------------------------->
+//3.设置seo信息 end---------------------------------------->
 
+//4.投票 start---------------------------------------->
+const radio1 = ref(''); //单选
+const check1 = ref([]); //多选
+const isDisabled = ref(false);//是否禁用提交按钮
+const isRadio = ref(true);//是否渲染单选
 
-//5.广告 start---------------------------------------->
-let adImg1 = ref({});
-let adImg2 = ref({});
+const userSurId = ref('');//投票属于哪一篇文章
+const userChoice = ref('');//用于判断用户选择了其他选项以后,输入的值
+const userIsChoice = ref('');//用于判断其他选项目前是什么值
+const showUserChoice = ref(false);//是否显示其他输入框
+const websiteSurveyData = ref([]);//投票结果
 
-onMounted(async ()  => {
+//3.2获得投票列表
+let voteList = ref([]);
+async function getVoteList(){
+    const voteData = await requestHome('/web/getWebsiteSurvey',{method:'GET',query:{'art_id':articleId}});
+    console.log(778899)
+    console.log(voteData)
+    if(voteData.code == 200){
+        voteList.value = voteData.data;
+        console.log(voteList.value)
+        //判断显示单选还是多选
+        //survey_type 0是单选 1是多选
+        if(voteData.data[0].survey_type == 0){
+            isRadio.value = true;
+            console.log("1111")
+        }else{
+            isRadio.value = false;
+        }
+        //把最后一个的值拿出来 用于判断用户是否选择了其他
+        for(let item of voteData.data){
+            //如果含有其他
+            if(item.is_other==1){
+                userIsChoice.value = item.id;
+            }
+        }
+        //用户投票属于哪一篇文章
+        userSurId.value = voteData.data[0].sur_id;
 
-    //从客户端获取行政职能部门 加快打开速度
-    const { $webUrl, $CwebUrl } = useNuxtApp();
-    //广告1
-    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0001`
-    const responseAd1 = await fetch(url, {
-        headers: {
-            'Content-Type': 'application/json',
-            'Userurl': $CwebUrl,
-            'Origin': $CwebUrl
+    }else{
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:首页投票")
+        console.log("后端错误反馈:",voteData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->") 
+    }
+}
+
+
+//3.2当用户选择了选项,判断是否展示其他输入框
+const handleRadioChange = (value) => {
+    if(value == userIsChoice.value){
+        showUserChoice.value = true;
+    }else{
+        showUserChoice.value = false;
+    }
+}
+
+const handleCheckboxChange = (value) => {
+    if (value.includes(userIsChoice.value)) {
+        showUserChoice.value = true;
+    } else {
+        showUserChoice.value = false;
+    }
+}
+
+//3.2发起投票
+async function addWebsiteSurvey(){
+    //判断当前是单选还是多选
+    console.log(isRadio.value)
+    if(isRadio.value){
+        console.log("用户单选!")
+        if(radio1.value!=''){
+            //先判断一下是否使用了其他选项
+            if(showUserChoice.value){
+                if(userChoice.value!=''){
+                    //文章id
+                    // console.log(userSurId.value)
+                    // 用户输入的值
+                    // console.log(userChoice.value)
+                    //如果使用了其他,其他的选项需要增加进去
+                    const ChoiceData = await requestHome('/web/addWebsiteSurveyOption',{
+                        method:'GET',
+                        query:{
+                            'sur_id':userSurId.value,//投票的新闻id
+                            'choice_name':userChoice.value,//投票的选项id
+                        }
+                    });
+                    if(ChoiceData.code == 200){
+                        //提交完其他选项以后,再正式发起投票
+                        const mkData = await requestHome('/web/addWebsiteSurveyVote',{
+                            method:'GET',
+                            query:{
+                                'sur_id':userSurId.value,
+                                'choice_id':ChoiceData.data
+                            }
+                        });
+                        if(mkData.code == 200){
+                            ElMessage.success('投票成功!')
+                            //把投票结果显示到页面上 禁用投票按钮
+                            isDisabled.value = true;
+                            websiteSurveyData.value = mkData.data;
+                            //遍历一下,把用户选中的那个设置status为1
+                            let data = mkData.data;
+                            //遍历一下,把用户选中的那个设置status为1
+                            for(let item of data.data){
+                                for(let i of data.choice){
+                                    if(item.id == i){
+                                        console.log(item.id)
+                                        item.status = 1;
+                                    }
+                                }
+                            }
+                            websiteSurveyData.value = data;
+                        }else{
+                            ElMessage.error(mkData.message)
+                        }
+                    }else{
+                        ElMessage.error('其他投票失败!')
+                    }
+                }else{
+                    ElMessage.error('请输入选项内容!')
+                }
+            }else{
+                //如果没选择其他,直接提交选择的内容
+                const mkData = await requestHome('/web/addWebsiteSurveyVote',{
+                    method:'GET',
+                    query:{
+                        'sur_id':userSurId.value,
+                        'choice_id':radio1.value
+                    }
+                });
+                if(mkData.code == 200){
+                    ElMessage.success('投票成功!')
+                    //把投票结果显示到页面上 禁用投票按钮
+                    isDisabled.value = true;
+                    let data = mkData.data;
+                    //遍历一下,把用户选中的那个设置status为1
+                    for(let item of data.data){
+                        for(let i of data.choice){
+                            if(item.id == i){
+                                item.status = 1;
+                            }
+                        }
+                    }
+                    websiteSurveyData.value = data;
+                }else{
+                    ElMessage.error('投票失败!')
+                }
+            }
+        }else{
+            ElMessage.error('请选择一个选项')
         }
-    });
-    const resultAd1 = await responseAd1.json();
-    adImg1.value = resultAd1.data[0];
-    
-    //广告2
-    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0002`
-    const responseAd2 = await fetch(url2, {
-        headers: {
-            'Content-Type': 'application/json',
-            'Userurl': $CwebUrl,
-            'Origin': $CwebUrl
+    }else{
+        console.log("多选!")
+        //多选
+        if(check1.value!=[]){
+             //先判断一下是否使用了其他选项
+            if(showUserChoice.value){
+                if(userChoice.value!=''){
+                    //判断用户是否只选择了一个其他
+                    if(check1.value.length == 1){
+                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
+                            method:'GET',
+                            query:{
+                                'sur_id':userSurId.value,//投票的新闻id
+                                'choice_name':userChoice.value,//用户输入的其他选项文字
+                            }
+                        });
+                        if(ChoiceData.code == 200){
+                            //提交完其他选项以后,再正式发起投票
+                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
+                                method:'GET',
+                                query:{
+                                    'sur_id':userSurId.value,
+                                    'choice_id':ChoiceData.data
+                                }
+                            });
+                            if(mkData.code == 200){
+                                ElMessage.success('投票成功!')
+                                //把投票结果显示到页面上 禁用投票按钮
+                                isDisabled.value = true;
+                                websiteSurveyData.value = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                let data = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                for(let item of data.data){
+                                    for(let i of data.choice){
+                                        if(item.id == i){
+                                            console.log(item.id)
+                                            item.status = 1;
+                                        }
+                                    }
+                                }
+                                websiteSurveyData.value = data;
+                            }else{
+                                ElMessage.error(mkData.message)
+                            }
+                        }else{
+                            ElMessage.error('其他投票失败!')
+                        }
+
+                    }else{
+                        //用户选择了除了其他以外,还包括别的选项
+                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
+                            method:'GET',
+                            query:{
+                                'sur_id':userSurId.value,//投票的新闻id
+                                'choice_name':userChoice.value,//用户输入的其他选项文字
+                            }
+                        });
+                        if(ChoiceData.code == 200){
+                            let data = check1.value;
+                            //找到多选的数组,把其他默认值给替换掉
+                            for (let i = 0; i < data.length; i++) {
+                                if (data[i] == userIsChoice.value) {
+                                    data[i] = ChoiceData.data;
+                                }
+                            }
+                            let jsonArray = JSON.stringify(data);
+                            //提交完其他选项以后,再正式发起投票
+                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
+                                method:'GET',
+                                query:{
+                                    'sur_id':userSurId.value,
+                                    'choice_id':jsonArray
+                                }
+                            });
+                            
+                            if(mkData.code == 200){
+                                ElMessage.success('投票成功!')
+                                //把投票结果显示到页面上 禁用投票按钮
+                                isDisabled.value = true;
+                                websiteSurveyData.value = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                let data = mkData.data;
+                                //遍历一下,把用户选中的那个设置status为1
+                                for(let item of data.data){
+                                    for(let i of data.choice){
+                                        if(item.id == i){
+                                            //console.log(item.id)
+                                            item.status = 1;
+                                        }
+                                    }
+                                }
+                                websiteSurveyData.value = data;
+                            }else{
+                                ElMessage.error(mkData.message)
+                            }
+                        }else{
+                            ElMessage.error('其他投票失败!')
+                        }
+
+                    }
+                }else{
+                    ElMessage.error('请输入选项内容!')
+                }
+            }else{
+                let jsonArray = JSON.stringify(check1.value);
+                //如果没选择其他,直接提交选择的内容
+                const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
+                    method:'GET',
+                    query:{
+                        'sur_id':userSurId.value,
+                        'choice_id':jsonArray
+                    }
+                });
+                if(mkData.code == 200){
+                    ElMessage.success('投票成功!')
+                    //把投票结果显示到页面上 禁用投票按钮
+                    isDisabled.value = true;
+                    websiteSurveyData.value = mkData.data;
+                    //遍历一下,把用户选中的那个设置status为1
+                    let data = mkData.data;
+                    //遍历一下,把用户选中的那个设置status为1
+                    for(let item of data.data){
+                        for(let i of data.choice){
+                            if(item.id == i){
+                                console.log(item.id)
+                                item.status = 1;
+                            }
+                        }
+                    }
+                    websiteSurveyData.value = data;
+                }else{
+                    ElMessage.error('投票失败!')
+                }
+            }
+        }else{
+            ElMessage.error('请选择一个选项')
         }
-    });
-    const resultAd2 = await responseAd2.json();
-    adImg2.value = resultAd2.data[0];
+    }
+}
+//4.投票 end---------------------------------------->
 
-})
-//5.广告 end---------------------------------------->
+//5.页面图片放大 start---------------------------------------->
+const previewVisible = ref(false)
+const selectedImage = ref(' ')
+
+const openPreview = (event) => {
+    if (event.target.tagName === 'IMG') {
+        selectedImage.value = event.target.src;
+        previewVisible.value = true;
+    }
+}
+const closePreview = () => {
+    previewVisible.value = false;
+}
+//5.页面图片放大 end---------------------------------------->
 </script>
 
 <style lang="less" scoped>
-@import url('@/assets/css/list.less');
+@import url('@/assets/css/detail.less');
 </style>

+ 0 - 637
pages/[dir]/a/[id].vue

@@ -1,637 +0,0 @@
-<template>
-    <!-- 页面头部 -->
-    <HomePageHead></HomePageHead>
-    <!-- 导航栏 -->
-    <HomePageNavigation1></HomePageNavigation1>
-    <!-- 列表页广告一 -->
-    <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
-    <!-- 面包屑导航 -->
-    <div class="breadcrumb">
-        <div class="inner">
-            <span class="location">当前位置:</span>
-            <el-breadcrumb :separator-icon="ArrowRight">
-                <el-breadcrumb-item>
-                    <NuxtLink to="/">首页</NuxtLink>
-                </el-breadcrumb-item>
-                <el-breadcrumb-item v-if="parent_name != ''">
-                    <NuxtLink :to="`/${parent_pinyin}/`"> {{ parent_name }}</NuxtLink>
-                </el-breadcrumb-item>
-                <el-breadcrumb-item>{{ routeNewsTtitle }}</el-breadcrumb-item>
-            </el-breadcrumb>
-        </div>
-    </div>
-    <!-- 资讯列表 -->
-    <div class="newsDetail">
-        <div class="inner">
-            <div class="innerLeft">
-                <div class="LeftTop">
-                    <h1>{{ newsDetail.title }}</h1>
-                    <p>
-                        来源: <span>{{ newsDetail.copyfrom }}</span>
-                        作者: <span>{{ newsDetail.author }}</span>
-                        发布时间: <span>{{ time }}</span>
-                    </p>
-                    <!-- <img :src="newsDetail.imgurl" v-if="newsDetail.imgurl&&newsDetail.level==2||newsDetail.level==3"> -->
-                </div>
-                <!-- <div class="leftBottom" v-html="newsDetail.content" v-if="newsDetail.content"></div> -->
-                <div 
-                    class="leftBottom" 
-                    v-html="newsDetail.content" 
-                    v-if="newsDetail.content" 
-                    @click="openPreview">
-                </div>
-                <div v-if="previewVisible" class="preview-modal" @click="closePreview">
-                    <img :src="selectedImage" alt="Preview">
-                </div>
-                <!-- 免责声明: -->
-                <div class="disclaimer" v-if="newsDetail.copyfrom!='本网'">
-                    <p>原文链接:{{ newsDetail.fromurl }}</p>
-                    <p>[免责声明]本文来源于网络转载,仅供学习交流使用,不构成商业目的。 版权归原作者所有,如涉及作品内容,版权和其他问题,请在30日与本网联系,我们将第一时间处理。</p>
-                </div>
-                <div v-if="articleChoice">
-                    <!-- 投票 start ---------------------------------------->
-                    <div class="index_3_box_vote" v-if="articleChoice">
-                        <div class="voteTitle">投票区</div>
-                        <div class="inquire">
-                            <p v-if="voteList.length>0">{{voteList[0].survey_name}}</p>
-                            <div class="radioBox">
-                            <!--投票选项-->
-                            <div v-if="!isDisabled">
-                                <div class="radio" v-if="isRadio">
-                                    <el-radio-group v-model="radio1" @change="handleRadioChange">
-                                        <el-radio v-for="item in voteList" :key="item.id" :value="item.id" size="large">
-                                            <span v-if="item.is_other == 0">{{item.choice_name}}</span>
-                                            <span v-else>其他</span>
-                                        </el-radio>
-                                    </el-radio-group>
-                                    <el-input
-                                        v-if="showUserChoice"
-                                        v-model="userChoice"
-                                        :rows="2"
-                                        type="textarea"
-                                        resize="none"
-                                        placeholder="请输入.."
-                                    />
-                                </div>
-                                <div class="checkInputBox" v-else>
-                                    <el-checkbox-group v-model="check1" @change="handleCheckboxChange">
-                                        <span v-for="item in voteList" :key="item.id">
-                                            <span v-if="item.is_other == 0">
-                                                <el-checkbox size="large" :label="item.choice_name" :value="item.id"/>
-                                            </span>
-                                            <span v-else>
-                                                <el-checkbox size="large" label="其他" :value="item.id"/>
-                                            </span>
-                                        </span>
-                                    </el-checkbox-group>
-                                    <el-input
-                                        v-if="showUserChoice"
-                                        v-model="userChoice"
-                                        :rows="2"
-                                        type="textarea"
-                                        resize="none"
-                                        placeholder="请输入.."
-                                    />
-                                </div>
-                            </div>
-                            <!--投票结果-->
-                            <div class="inquireData" v-else>
-                                <div v-for="item in websiteSurveyData.data" :key="item.id">
-                                    <div class="inquireDataItem active" v-if="item.status == 1">
-                                        <div class="inquireDataItemTitle">
-                                            <span v-if="item.choice_name == ''">其他</span>
-                                            <span v-else>{{item.choice_name}}</span>
-                                        </div>
-                                        <div class="inquireDataItemNum">{{item.results}}票</div>
-                                    </div>
-                                    <div class="inquireDataItem" v-else>
-                                        <div class="inquireDataItemTitle">
-                                            <span v-if="item.choice_name == ''">其他</span>
-                                            <span v-else>{{item.choice_name}}</span>
-                                        </div>
-                                        <div class="inquireDataItemNum">{{item.results}}票</div>
-                                    </div>
-                                </div>
-                            </div>
-                            </div>
-                            <div class="btn">
-                                <button class="voting" @click="addWebsiteSurvey" :disabled="isDisabled" v-if="!isDisabled">投票</button>
-                            </div>
-                        </div>
-                    </div>
-                    <!-- 投票 end ---------------------------------------->
-                </div>
-            </div>
-            <div class="innerRight">
-                <!-- 热点资讯1 -->
-                <div class="hotList1">
-                    <DetailHotNews></DetailHotNews>
-                </div>
-                <!-- 热点资讯2 -->
-                <div class="hotList2">
-                    <DetailHotNews2></DetailHotNews2>
-                </div>
-            </div>
-        </div>
-    </div>
-    <!-- 页面底部 -->
-    <HomeFoot1></HomeFoot1>
-</template>
-
-<script setup>
-//1.页面依赖 start ---------------------------------------->
-import { onMounted } from 'vue'
-import { ElBreadcrumb, ElBreadcrumbItem,ElRadio, ElRadioGroup,ElCheckbox,ElCheckboxGroup,ElMessage,ElInput } from 'element-plus'
-import { ArrowRight } from '@element-plus/icons-vue'
-
-const nuxtApp = useNuxtApp();
-const axios = nuxtApp.$axios;
-
-//1.1 获得跳转过来的id
-const route = useRoute();
-//获得详情id
-const articleId = parseInt(route.params.id); //获得该页面的id
-
-//获得当前的完整路径
-const fullPath = route.path;
-//拆分,取出来中间这一段,然后提取数字部分
-const segments = fullPath.split('/'); 
-const targetSegment = segments[1]; 
-// const numberPart = targetSegment.match(/\d+$/)?.[0]; 
-// let routeId = 20 //排除路径错误可以打开这个
-// const routeId = numberPart;
-let routeId;
-//通过导航路径反向查询导航id
-const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
-    method: 'GET',
-    query: {
-        'pinyin': targetSegment,
-    },
-});
-if(getRouteId.code == 200){
-    routeId = getRouteId.data.category_id
-}else{
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    console.log("错误位置:通过url路径查询导航池id")
-    console.log("后端错误反馈:",getRouteId.message)
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-}
-
-
-//1.2 获得父级栏目的名称、id
-const parent_name = ref([]);
-const parent_id = ref([]);
-const parent_pinyin = ref("");
-let getParentNav = async () => {
-    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
-        method: 'GET',
-        query: {
-            'catid': routeId
-        },
-    });
-    console.log("获取父级栏目数据")
-    console.log(listData)
-    if (listData.code == 200) {
-        console.log(listData.data);
-        parent_name.value = listData.data.alias;
-        parent_id.value = listData.data.parent_id;
-        parent_pinyin.value = listData.data.aLIas_pinyin;
-    } else {
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取面包屑导航")
-        console.log("后端错误反馈:", listData.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-//获得父级栏目详情
-getParentNav();
-//1.页面依赖 end ---------------------------------------->
-
-//2.页面数据 start ---------------------------------------->
-//2.1 资讯详情
-const newsDetail = ref({})
-const routeNewsTtitle = ref("");
-//2.2 发布日期
-const time = ref("");
-//2.3 路径
-const routLevelTitle = ref("");
-const routLevelId = ref("");
-//是否展示投票
-const articleChoice = ref(false);
-//2.4获取详情
-async function getPageData() {
-    const mkdata =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
-        method: 'GET',
-        query: {
-            'articleid': articleId
-        },
-    });
-    if(mkdata.code==200){
-        //判断是否显示投票
-        if(mkdata.data.is_survey==1){
-            console.log("本篇文章含有投票!")
-            articleChoice.value = true;
-            getVoteList();
-        }
-        //获取内容
-        newsDetail.value = mkdata.data;
-        //获取路径
-        routLevelTitle.value = newsDetail.value.cat_name;
-        routLevelId.value = newsDetail.value.category_id;
-        //获取发布时间
-        time.value = newsDetail.value.updated_at.split(' ')[0];
-        //修正标题长度
-        if (newsDetail.value.title.length >= 30) {
-            routeNewsTtitle.value = newsDetail.value.title.substr(0, 30) + "...";
-        } else {
-            routeNewsTtitle.value = newsDetail.value.title
-        }
-    }else{
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:获取详情内容")
-        console.log("后端错误反馈:",mkdata.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    }
-}
-getPageData();
-
-//2.5 获得广告
-//广告列表
-let adImg1 = ref([]);
-// async function getAdData(){
-//     const adData = await requestDataPromise('/web/getWebsiteAdvertisement',{method:'GET',query:{'ad_tag':'DETAIL'}});
-//     if(adData.code==200){
-//         for(let item of adData.data){
-//             if(item.ad_tag == 'DETAIL_0001'){
-//                 adImg1.value = item;
-//             }
-//         }
-//     }else{
-//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//         console.log("错误位置:获取详情页广告列表")
-//         console.log("后端错误反馈:",adData.message)
-//         console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-//     }
-// }
-// getAdData();
-
-onMounted(async ()  => {
-    const { $webUrl, $CwebUrl } = useNuxtApp();
-    //广告1
-    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_detail_0001`
-    const responseAd1 = await fetch(url, {
-        headers: {
-            'Content-Type': 'application/json',
-            'Userurl': $CwebUrl,
-            'Origin': $CwebUrl
-        }
-    });
-    const resultAd1 = await responseAd1.json();
-    adImg1.value = resultAd1.data[0];
-})
-
-//2.页面数据 end ---------------------------------------->
-
-//3.设置seo信息 start---------------------------------------->
-//3.1 设置seo信息
-const setData =  await requestDataPromise('/web/selectWebsiteArticleInfo', {
-    method: 'GET',
-    query: {
-        'articleid': articleId
-    },
-});
-if(setData.code==200){
-    let seoTitle = setData.data.title;
-    let seoDescription = setData.data.introduce;
-    let seoKeywords = setData.data.keyword;
-    let seoSuffix = setData.data.suffix;
-    let seoName = setData.data.website_name;
-
-    useSeoMeta({
-        title: seoTitle + "_" + seoName + "_" + seoSuffix,
-        meta: [
-            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix , tagPriority: 10 },
-            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
-        ]
-    });
-}else{
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-    console.log("错误位置:设置详情页面SEO数据")
-    console.log("后端错误反馈:",setData.message)
-    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-}
-//3.设置seo信息 end---------------------------------------->
-
-//4.投票 start---------------------------------------->
-const radio1 = ref(''); //单选
-const check1 = ref([]); //多选
-const isDisabled = ref(false);//是否禁用提交按钮
-const isRadio = ref(true);//是否渲染单选
-
-const userSurId = ref('');//投票属于哪一篇文章
-const userChoice = ref('');//用于判断用户选择了其他选项以后,输入的值
-const userIsChoice = ref('');//用于判断其他选项目前是什么值
-const showUserChoice = ref(false);//是否显示其他输入框
-const websiteSurveyData = ref([]);//投票结果
-
-//3.2获得投票列表
-let voteList = ref([]);
-async function getVoteList(){
-    const voteData = await requestHome('/web/getWebsiteSurvey',{method:'GET',query:{'art_id':articleId}});
-    console.log(778899)
-    console.log(voteData)
-    if(voteData.code == 200){
-        voteList.value = voteData.data;
-        console.log(voteList.value)
-        //判断显示单选还是多选
-        //survey_type 0是单选 1是多选
-        if(voteData.data[0].survey_type == 0){
-            isRadio.value = true;
-            console.log("1111")
-        }else{
-            isRadio.value = false;
-        }
-        //把最后一个的值拿出来 用于判断用户是否选择了其他
-        for(let item of voteData.data){
-            //如果含有其他
-            if(item.is_other==1){
-                userIsChoice.value = item.id;
-            }
-        }
-        //用户投票属于哪一篇文章
-        userSurId.value = voteData.data[0].sur_id;
-
-    }else{
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
-        console.log("错误位置:首页投票")
-        console.log("后端错误反馈:",voteData.message)
-        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->") 
-    }
-}
-
-
-//3.2当用户选择了选项,判断是否展示其他输入框
-const handleRadioChange = (value) => {
-    if(value == userIsChoice.value){
-        showUserChoice.value = true;
-    }else{
-        showUserChoice.value = false;
-    }
-}
-
-const handleCheckboxChange = (value) => {
-    if (value.includes(userIsChoice.value)) {
-        showUserChoice.value = true;
-    } else {
-        showUserChoice.value = false;
-    }
-}
-
-//3.2发起投票
-async function addWebsiteSurvey(){
-    //判断当前是单选还是多选
-    console.log(isRadio.value)
-    if(isRadio.value){
-        console.log("用户单选!")
-        if(radio1.value!=''){
-            //先判断一下是否使用了其他选项
-            if(showUserChoice.value){
-                if(userChoice.value!=''){
-                    //文章id
-                    // console.log(userSurId.value)
-                    // 用户输入的值
-                    // console.log(userChoice.value)
-                    //如果使用了其他,其他的选项需要增加进去
-                    const ChoiceData = await requestHome('/web/addWebsiteSurveyOption',{
-                        method:'GET',
-                        query:{
-                            'sur_id':userSurId.value,//投票的新闻id
-                            'choice_name':userChoice.value,//投票的选项id
-                        }
-                    });
-                    if(ChoiceData.code == 200){
-                        //提交完其他选项以后,再正式发起投票
-                        const mkData = await requestHome('/web/addWebsiteSurveyVote',{
-                            method:'GET',
-                            query:{
-                                'sur_id':userSurId.value,
-                                'choice_id':ChoiceData.data
-                            }
-                        });
-                        if(mkData.code == 200){
-                            ElMessage.success('投票成功!')
-                            //把投票结果显示到页面上 禁用投票按钮
-                            isDisabled.value = true;
-                            websiteSurveyData.value = mkData.data;
-                            //遍历一下,把用户选中的那个设置status为1
-                            let data = mkData.data;
-                            //遍历一下,把用户选中的那个设置status为1
-                            for(let item of data.data){
-                                for(let i of data.choice){
-                                    if(item.id == i){
-                                        console.log(item.id)
-                                        item.status = 1;
-                                    }
-                                }
-                            }
-                            websiteSurveyData.value = data;
-                        }else{
-                            ElMessage.error(mkData.message)
-                        }
-                    }else{
-                        ElMessage.error('其他投票失败!')
-                    }
-                }else{
-                    ElMessage.error('请输入选项内容!')
-                }
-            }else{
-                //如果没选择其他,直接提交选择的内容
-                const mkData = await requestHome('/web/addWebsiteSurveyVote',{
-                    method:'GET',
-                    query:{
-                        'sur_id':userSurId.value,
-                        'choice_id':radio1.value
-                    }
-                });
-                if(mkData.code == 200){
-                    ElMessage.success('投票成功!')
-                    //把投票结果显示到页面上 禁用投票按钮
-                    isDisabled.value = true;
-                    let data = mkData.data;
-                    //遍历一下,把用户选中的那个设置status为1
-                    for(let item of data.data){
-                        for(let i of data.choice){
-                            if(item.id == i){
-                                item.status = 1;
-                            }
-                        }
-                    }
-                    websiteSurveyData.value = data;
-                }else{
-                    ElMessage.error('投票失败!')
-                }
-            }
-        }else{
-            ElMessage.error('请选择一个选项')
-        }
-    }else{
-        console.log("多选!")
-        //多选
-        if(check1.value!=[]){
-             //先判断一下是否使用了其他选项
-            if(showUserChoice.value){
-                if(userChoice.value!=''){
-                    //判断用户是否只选择了一个其他
-                    if(check1.value.length == 1){
-                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
-                            method:'GET',
-                            query:{
-                                'sur_id':userSurId.value,//投票的新闻id
-                                'choice_name':userChoice.value,//用户输入的其他选项文字
-                            }
-                        });
-                        if(ChoiceData.code == 200){
-                            //提交完其他选项以后,再正式发起投票
-                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
-                                method:'GET',
-                                query:{
-                                    'sur_id':userSurId.value,
-                                    'choice_id':ChoiceData.data
-                                }
-                            });
-                            if(mkData.code == 200){
-                                ElMessage.success('投票成功!')
-                                //把投票结果显示到页面上 禁用投票按钮
-                                isDisabled.value = true;
-                                websiteSurveyData.value = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                let data = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                for(let item of data.data){
-                                    for(let i of data.choice){
-                                        if(item.id == i){
-                                            console.log(item.id)
-                                            item.status = 1;
-                                        }
-                                    }
-                                }
-                                websiteSurveyData.value = data;
-                            }else{
-                                ElMessage.error(mkData.message)
-                            }
-                        }else{
-                            ElMessage.error('其他投票失败!')
-                        }
-
-                    }else{
-                        //用户选择了除了其他以外,还包括别的选项
-                        const ChoiceData = await requestDataPromise('/web/addWebsiteSurveyOption',{
-                            method:'GET',
-                            query:{
-                                'sur_id':userSurId.value,//投票的新闻id
-                                'choice_name':userChoice.value,//用户输入的其他选项文字
-                            }
-                        });
-                        if(ChoiceData.code == 200){
-                            let data = check1.value;
-                            //找到多选的数组,把其他默认值给替换掉
-                            for (let i = 0; i < data.length; i++) {
-                                if (data[i] == userIsChoice.value) {
-                                    data[i] = ChoiceData.data;
-                                }
-                            }
-                            let jsonArray = JSON.stringify(data);
-                            //提交完其他选项以后,再正式发起投票
-                            const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
-                                method:'GET',
-                                query:{
-                                    'sur_id':userSurId.value,
-                                    'choice_id':jsonArray
-                                }
-                            });
-                            
-                            if(mkData.code == 200){
-                                ElMessage.success('投票成功!')
-                                //把投票结果显示到页面上 禁用投票按钮
-                                isDisabled.value = true;
-                                websiteSurveyData.value = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                let data = mkData.data;
-                                //遍历一下,把用户选中的那个设置status为1
-                                for(let item of data.data){
-                                    for(let i of data.choice){
-                                        if(item.id == i){
-                                            //console.log(item.id)
-                                            item.status = 1;
-                                        }
-                                    }
-                                }
-                                websiteSurveyData.value = data;
-                            }else{
-                                ElMessage.error(mkData.message)
-                            }
-                        }else{
-                            ElMessage.error('其他投票失败!')
-                        }
-
-                    }
-                }else{
-                    ElMessage.error('请输入选项内容!')
-                }
-            }else{
-                let jsonArray = JSON.stringify(check1.value);
-                //如果没选择其他,直接提交选择的内容
-                const mkData = await requestDataPromise('/web/addWebsiteSurveyVote',{
-                    method:'GET',
-                    query:{
-                        'sur_id':userSurId.value,
-                        'choice_id':jsonArray
-                    }
-                });
-                if(mkData.code == 200){
-                    ElMessage.success('投票成功!')
-                    //把投票结果显示到页面上 禁用投票按钮
-                    isDisabled.value = true;
-                    websiteSurveyData.value = mkData.data;
-                    //遍历一下,把用户选中的那个设置status为1
-                    let data = mkData.data;
-                    //遍历一下,把用户选中的那个设置status为1
-                    for(let item of data.data){
-                        for(let i of data.choice){
-                            if(item.id == i){
-                                console.log(item.id)
-                                item.status = 1;
-                            }
-                        }
-                    }
-                    websiteSurveyData.value = data;
-                }else{
-                    ElMessage.error('投票失败!')
-                }
-            }
-        }else{
-            ElMessage.error('请选择一个选项')
-        }
-    }
-}
-//4.投票 end---------------------------------------->
-
-//5.页面图片放大 start---------------------------------------->
-const previewVisible = ref(false)
-const selectedImage = ref(' ')
-
-const openPreview = (event) => {
-    if (event.target.tagName === 'IMG') {
-        selectedImage.value = event.target.src;
-        previewVisible.value = true;
-    }
-}
-const closePreview = () => {
-    previewVisible.value = false;
-}
-//5.页面图片放大 end---------------------------------------->
-</script>
-
-<style lang="less" scoped>
-@import url('@/assets/css/detail.less');
-</style>

+ 24 - 22
pages/[dir]/index.vue → pages/[dir]/index.html.vue

@@ -331,7 +331,7 @@ import { ElMessage } from 'element-plus';
 const getLinkPath = (item) => {
     //return `/${item.url}/1.html`;
     //return `/newsList/${item.cid}?page=1`;
-    return `/${item.aLIas_pinyin}/1.html`;
+    return `/${item.aLIas_pinyin}/list-1.html`;
 }
 //首页跳转到详情,这里需要考虑外链
 const getLinkPathDetail = (item) => {
@@ -340,7 +340,7 @@ const getLinkPathDetail = (item) => {
     } else {
         //return `/${item.aLIas_pinyin}/${item.id}`;
         //return `/newsDetail/${item.id}`
-        return `/${item.pinyin}/a/${item.id}.html`;
+        return `/${item.pinyin}/${item.id}.html`;
     }
 }
 //0.加载页面依赖 end ---------------------------------------->
@@ -506,7 +506,7 @@ try {
                 cid: navigateData.data[index].category_id,
                 children_count: navigateData.data[index].children_count,
                 alias: navigateData.data[index].alias,
-                aLIas_pinyin: navigateData.data[index].aLIas_pinyin,
+                aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
                 data:[],
                 data1:[],
                 data2:[],
@@ -538,14 +538,14 @@ try {
         // await getPageData7();
         // await getPageData8();
         let getJson = [
-            {"parent":pageData.value[0].cid + ",5,8","child":""},//模块1理论前沿
-            {"parent":pageData.value[1].cid + ",5,0","child":""},//模块2典型经验
-            {"parent":pageData.value[2].cid + ",1,6","child":""},//模块3农业天地
-            {"parent":pageData.value[3].cid + ",1,6","child":""},//模块4美丽乡村
-            {"parent":pageData.value[4].cid + ",1,6","child":""},//模块5农民之家
-            {"parent":pageData.value[5].cid + ",6,3","child":""},//模块6农业天地
-            {"parent":pageData.value[6].cid + ",2,3","child":""},//模块7农村建设
-            {"parent":pageData.value[7].cid + ",4,0","child":""},//模块8高端资讯
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",5,8"},//模块1理论前沿
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",5,0"},//模块2典型经验
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",1,6"},//模块3农业天地
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",1,6"},//模块4美丽乡村
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",1,6"},//模块5农民之家
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",6,3"},//模块6农业天地
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",2,3"},//模块7农村建设
+            {"parent":routeId + ",0,0","child":pageData.value[0].cid + ",4,0"},//模块8高端资讯
         ]
 
         let jsonString = JSON.stringify(getJson);
@@ -574,23 +574,25 @@ async function getPageAllData(jsonString){
     });
 
     if(mkdata.code==200){
+        console.log(778899)
+        console.log(mkdata.data)
         //模块1理论前沿
-        if(mkdata.data[0].imgnum.length > 0){
-            pageData.value[0].data.push(mkdata.data[0].imgnum[0]);
+        if(mkdata.data[0].child.imgnum.length > 0){
+            pageData.value[0].data.push(mkdata.data[0].child.imgnum[0]);
         }
-        if(mkdata.data[0].imgnum.length > 1){
-            pageData.value[0].data2.push(mkdata.data[0].imgnum[1]);
+        if(mkdata.data[0].child.imgnum.length > 1){
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[1]);
         }
-        if(mkdata.data[0].imgnum.length > 2){
-            pageData.value[0].data2.push(mkdata.data[0].imgnum[2]);
+        if(mkdata.data[0].child.imgnum.length > 2){
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[2]);
         }
-        if(mkdata.data[0].imgnum.length > 3){
-            pageData.value[0].data2.push(mkdata.data[0].imgnum[3]);
+        if(mkdata.data[0].child.imgnum.length > 3){
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[3]);
         }
-        if(mkdata.data[0].imgnum.length > 4){
-            pageData.value[0].data2.push(mkdata.data[0].imgnum[4]);
+        if(mkdata.data[0].child.imgnum.length > 4){
+            pageData.value[0].data2.push(mkdata.data[0].child.imgnum[4]);
         }
-        pageData.value[0].data3 = mkdata.data[0].textnum;
+        pageData.value[0].data3 = mkdata.data[0].child.textnum;
         //模块2典型经验
         pageData.value[1].data = mkdata.data[1].imgnum;
         //模块3农业天地

+ 327 - 0
pages/[dir]/list-[id].vue

@@ -0,0 +1,327 @@
+<template>
+    <div id="newsList">
+        <!-- 页面头部 -->
+        <HomePageHead></HomePageHead>
+
+        <!-- 导航栏 -->
+        <HomePageNavigation1></HomePageNavigation1>
+
+        <!-- 列表页广告一 -->
+        <HomeTopTen :imgurl="adImg1" v-if="adImg1"></HomeTopTen>
+
+        <!-- 二级标题-->
+        <div class="sannongzhichuang" v-if="parent_name != ''">
+            <div class="inner">
+                <h2>
+                    <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                    <em class="iconfont icon-xingzhuang-zhijiaosanjiaoxing-copy"></em>
+                </h2>
+                <p class="introduction">
+                    <strong>频道介绍</strong>
+                    <div v-for="(item, index) in secondNav" :key="index">
+                        <span v-if="index <= 7">
+                            <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html`}">{{ item.alias }}</NuxtLink>
+                        </span>
+                        <b v-else></b>
+                    </div>
+                </p>
+            </div>
+        </div>
+
+        <!-- 面包屑导航 -->
+        <div class="breadcrumb">
+            <div class="inner">
+                <span class="location">当前位置:</span>
+                <el-breadcrumb :separator-icon="ArrowRight">
+                    <el-breadcrumb-item>
+                        <NuxtLink to="/">首页</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item v-if="parent_name !=''">
+                        <NuxtLink :to="`/${parent_pinyin}/index.html`"> {{ parent_name }}</NuxtLink>
+                    </el-breadcrumb-item>
+                    <el-breadcrumb-item>{{ name }}</el-breadcrumb-item>
+                </el-breadcrumb>
+            </div>
+        </div>
+        <!-- 资讯列表 -->
+        <div class="newsList">
+            <div class="inner">
+                <div class="innerLeft">
+                    <ul class="list">
+                        <li v-for="(item, index) in newsList" :key="index">
+                            <NuxtLink :href="getLinkPathDetail(item)" :title="item.alias">
+                                {{ item.title }}
+                            </NuxtLink>
+                        </li>
+                    </ul>
+                    <!-- 分页器 -->
+                    <div class="pagination" v-if="total > 0">
+                        <el-pagination 
+                            size="small" 
+                            background 
+                            layout="prev, pager, next" 
+                            :total="total" 
+                            class="mt-4"
+                            :page-size="pageSize" 
+                            :current-page="pageNum"
+                            prev-text="上一页" 
+                            next-text="下一页" 
+                            @current-change="changePage" 
+                        />
+                    </div>
+                </div>
+                <div class="innerRight">
+                    <DetailHotNews></DetailHotNews>
+                    <DetailHotNews2></DetailHotNews2>
+                </div>
+            </div>
+        </div>
+
+        <!-- 列表页广告二 -->
+        <HomeTopTen :imgurl="adImg2" v-if="adImg2"></HomeTopTen>
+
+        <!-- 页面底部 -->
+        <HomeFoot1></HomeFoot1>
+    </div>
+</template>
+
+<script setup>
+//1.页面必备依赖 start ---------------------------------------->
+import { ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus'
+import { ArrowRight } from '@element-plus/icons-vue'
+import { ref, onMounted } from 'vue';
+//当前列表名称
+const name = ref('')
+const { $webUrl, $CwebUrl, $BwebUrl } = useNuxtApp()
+
+//格式化跳转路径
+const getLinkPathDetail = (item) => {
+    if (item.islink == 1) {
+        return `${item.linkurl}`;
+    } else {
+        //return `/${item.aLIas_pinyin}/${item.id}`;
+        //return `/newsDetail/${item.id}`
+        return `/${item.pinyin}/${item.id}.html`;
+    }
+}
+//1.页面必备依赖 end ---------------------------------------->
+
+//1.获得路由id start ---------------------------------------->
+const route = useRoute();
+let articleId = 0;//路由id
+let pageNum = ref(2);
+let total = ref(1);
+let pageSize = ref(20);
+
+//获得当前的完整路径
+const fullPath = route.path;
+//拆分,取出来中间这一段,然后提取数字部分
+const segments = fullPath.split('/'); 
+const targetSegment = segments[1]; 
+//const numberPart = targetSegment.match(/\d+$/)?.[0]; 
+//let routeId = 20 //排除路径错误可以打开这个
+
+//通过导航路径反向查询导航id
+const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
+    method: 'GET',
+    query: {
+        'pinyin': targetSegment,
+    },
+});
+if(getRouteId.code == 200){
+    articleId = getRouteId.data.category_id
+}else{
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:通过url路径查询导航池id")
+    console.log("后端错误反馈:",getRouteId.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+
+//获得html前的数字
+// const pageUrl = segments[2]; 
+// const pageNumber = pageUrl.split('.')[0];
+// console.log("当前URL中的页码:")
+// console.log(pageNumber)//2
+// pageNum.value = parseInt(pageNumber);
+pageNum.value = parseInt(route.params.id);
+
+//1.获得路由id end ---------------------------------------->
+
+//2.页面数据 start ---------------------------------------->
+//2.2新闻列表
+const newsList = ref([]);
+let newslists = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteArticleList', {
+        method: 'GET',
+        query: {
+            'page': pageNum.value,
+            'pageSize': pageSize.value,
+            'catid': articleId
+        },
+    });
+    if (listData.code == 200) {
+        newsList.value = listData.data.rows;
+        total.value = listData.data.count;
+
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得列表
+newslists();
+
+//分页事件
+let changePage = (value) => {
+    console.log("当前页码", value);
+    navigateTo(`/${targetSegment}/list-${value}.html`)
+}
+
+//2.3获得页面名称
+let getPageName = async () => {
+    const pageName = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': articleId
+        },
+    });
+    if (pageName.code == 200) {
+        name.value = pageName.data.alias
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:设置页面标题")
+        console.log("后端错误反馈:", pageName.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//获得列表
+getPageName();
+//2.页面数据 end ---------------------------------------->
+
+
+//3.二级栏目 start ---------------------------------------->
+//3.1通过id获取父栏目
+const parent_name = ref([]);
+const parent_id = ref([]);
+const parent_pinyin = ref("");
+let getParentNav = async () => {
+    const listData = await requestDataPromise('/web/getOneWebsiteCategory', {
+        method: 'GET',
+        query: {
+            'catid': articleId
+        },
+    });
+    if (listData.code == 200) {
+        console.log(111999)
+        console.log(listData.data);
+        parent_name.value = listData.data.parent_name;
+        parent_id.value = listData.data.parent_id;
+        parent_pinyin.value = listData.data.parent_pinyin;
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+    getSecondNav();
+}
+//获得列表
+getParentNav();
+
+// 3.2获取二级栏目
+const secondNav = ref([]);
+let getSecondNav = async () => {
+    const listData = await requestDataPromise('/web/getWebsiteModelCategory', {
+        method: 'GET',
+        query: {
+            'placeid': 1,
+            'pid': parent_id.value,
+            'num': 8,
+        },
+    });
+    console.log('listData', listData);
+
+    if (listData.code == 200) {
+        secondNav.value = listData.data
+    } else {
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+        console.log("错误位置:获取新闻列表")
+        console.log("后端错误反馈:", listData.message)
+        console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    }
+}
+//3.二级栏目 end ---------------------------------------->
+
+//4.设置seo信息 start---------------------------------------->
+//4.1 设置seo信息
+const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
+    method: 'GET',
+    query: {
+        'catid': articleId
+    },
+});
+
+if (setData.code == 200) {
+    let seoTitle = setData.data.seo_title;
+    let seoDescription = setData.data.seo_description;
+    let seoKeywords = setData.data.seo_keywords;
+    let seoSuffix = setData.data.suffix;
+    let seoName = setData.data.website_name;
+
+    useSeoMeta({
+        title: seoTitle + "_" + seoName + "_" + seoSuffix,
+        meta: [
+            { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix , tagPriority: 10 },
+            { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix , tagPriority: 10 }
+        ]
+    });
+} else {
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+    console.log("错误位置:设置列表页面SEO数据")
+    console.log("后端错误反馈:", setData.message)
+    console.log("SSR waring ---------- SSR waring ---------- SSR waring ---------->")
+}
+//4.设置seo信息 end---------------------------------------->
+
+
+//5.广告 start---------------------------------------->
+let adImg1 = ref({});
+let adImg2 = ref({});
+
+onMounted(async ()  => {
+
+    //从客户端获取行政职能部门 加快打开速度
+    const { $webUrl, $CwebUrl } = useNuxtApp();
+    //广告1
+    let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0001`
+    const responseAd1 = await fetch(url, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd1 = await responseAd1.json();
+    adImg1.value = resultAd1.data[0];
+    
+    //广告2
+    let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snzxw_list_0002`
+    const responseAd2 = await fetch(url2, {
+        headers: {
+            'Content-Type': 'application/json',
+            'Userurl': $CwebUrl,
+            'Origin': $CwebUrl
+        }
+    });
+    const resultAd2 = await responseAd2.json();
+    adImg2.value = resultAd2.data[0];
+
+})
+//5.广告 end---------------------------------------->
+</script>
+
+<style lang="less" scoped>
+@import url('@/assets/css/list.less');
+</style>

+ 4 - 4
pages/about/[dir]/zhaopin/[id].vue → pages/about/[dir]/[dir]/[id].vue

@@ -30,19 +30,19 @@
                 <div class="rightMenuTitle">导航列表</div>
                 <ul>
                     <li v-for="(item, index) in bottomMenu" :key="index">
-                        <NuxtLink :to="`/about/${item.name_pinyin}/`" :title="item.name"
+                        <NuxtLink :to="`/about/${item.name_pinyin}/index.html`" :title="item.name"
                             v-if="item.id == pageId && item.id != 7" class="active">
                             {{ item.name }}
                         </NuxtLink>
-                        <NuxtLink :to="`/about/${item.name_pinyin}/`" :title="item.name"
+                        <NuxtLink :to="`/about/${item.name_pinyin}/index.html`" :title="item.name"
                             v-else-if="item.id != pageId && item.id != 7">
                             {{ item.name }}
                         </NuxtLink>
-                        <NuxtLink :to="`/about/${item.name_pinyin}/1.html`" :title="item.name"
+                        <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name"
                             v-if="item.id == 7 && pageId == 7 " class="active">
                             {{item.name }}
                         </NuxtLink>
-                        <NuxtLink :to="`/about/${item.name_pinyin}/1.html`" :title="item.name" v-else-if="item.id == 7">
+                        <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name" v-else-if="item.id == 7">
                             {{ item.name}}
                         </NuxtLink>
                     </li>

+ 4 - 4
pages/about/[dir]/index.vue → pages/about/[dir]/index.html.vue

@@ -30,19 +30,19 @@
                 <div class="rightMenuTitle">导航列表</div>
                 <ul>
                     <li v-for="(item, index) in bottomMenu" :key="index">
-                        <NuxtLink :to="`/about/${item.name_pinyin}/`" :title="item.name"
+                        <NuxtLink :to="`/about/${item.name_pinyin}/index.html`" :title="item.name"
                             v-if="item.id == pageId && item.id != 7" class="active">
                             {{ item.name }}
                         </NuxtLink>
-                        <NuxtLink :to="`/about/${item.name_pinyin}/`" :title="item.name"
+                        <NuxtLink :to="`/about/${item.name_pinyin}/index.html`" :title="item.name"
                             v-else-if="item.id != pageId && item.id != 7">
                             {{ item.name }}
                         </NuxtLink>
-                        <NuxtLink :to="`/about/${item.name_pinyin}/1.html`" :title="item.name"
+                        <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name"
                             v-if="item.id == 7 && pageId == 7 && routeHref == '/specialList/7'" class="active">
                             {{item.name }}
                         </NuxtLink>
-                        <NuxtLink :to="`/about/${item.name_pinyin}/1.html`" :title="item.name" v-else-if="item.id == 7">
+                        <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name" v-else-if="item.id == 7">
                             {{ item.name}}
                         </NuxtLink>
                     </li>

+ 4 - 4
pages/about/[dir]/[id].vue → pages/about/[dir]/list-[id].vue

@@ -42,19 +42,19 @@
                     <div class="rightMenuTitle">导航列表</div>
                     <ul>
                         <li v-for="(item, index) in bottomMenu" :key="index">
-                            <NuxtLink :to="`/about/${item.name_pinyin}/`" :title="item.name"
+                            <NuxtLink :to="`/about/${item.name_pinyin}/index.html`" :title="item.name"
                                 v-if="item.id == pageId && item.id != 7" class="active">
                                 {{ item.name }}
                             </NuxtLink>
-                            <NuxtLink :to="`/about/${item.name_pinyin}/`" :title="item.name"
+                            <NuxtLink :to="`/about/${item.name_pinyin}/index.html`" :title="item.name"
                                 v-else-if="item.id != pageId && item.id != 7">
                                 {{ item.name }}
                             </NuxtLink>
-                            <NuxtLink :to="`/about/${item.name_pinyin}/1.html`" :title="item.name"
+                            <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name"
                                 v-if="item.id == 7 && pageId == 7" class="active">
                                 {{item.name }}
                             </NuxtLink>
-                            <NuxtLink :to="`/about/${item.name_pinyin}/1.html`" :title="item.name" v-else-if="item.id == 7">
+                            <NuxtLink :to="`/about/${item.name_pinyin}/list-1.html`" :title="item.name" v-else-if="item.id == 7">
                                 {{ item.name}}
                             </NuxtLink>
                         </li>

+ 12 - 12
pages/index.vue

@@ -557,12 +557,12 @@
                         </span>
                     </div>
                     <div class="right" v-if="tabsData3==1">
-                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}"  v-for="item in boxData14menu" :title="item.alias">
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html`}"  v-for="item in boxData14menu" :title="item.alias">
                             {{item.alias}}
                         </NuxtLink>
                     </div>
                     <div class="right" v-if="tabsData3==2">
-                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html}`}" v-if="pageData[14].cid" v-for="item in boxData15menu" :title="item.alias">
+                        <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html}`}" v-if="pageData[14].cid" v-for="item in boxData15menu" :title="item.alias">
                             {{item.alias}}
                         </NuxtLink>
                     </div>
@@ -594,12 +594,12 @@
                         <div class="title">
                             <h3 v-if="boxData14menu[0]">
                                 <NuxtLink
-                                    :to="{ path: `/${boxData14childpinyin}/1.html`}"
+                                    :to="{ path: `/${boxData14childpinyin}/list-1.html`}"
                                     v-if="boxData14menu[0]" class="leftTitle" :title="boxData14menu[0].alias">
                                     {{ boxData14menu[0].alias }}
                                 </NuxtLink>
                                 <NuxtLink
-                                    :to="{ path: `/${boxData14childpinyin}/1.html`}"
+                                    :to="{ path: `/${boxData14childpinyin}/list-1.html`}"
                                     v-if="boxData14menu[0]" :title="boxData14menu[0].alias">
                                     查看更多
                                 </NuxtLink>
@@ -645,12 +645,12 @@
                         <div class="title">
                             <h3 v-if="boxData15menu[0]">
                                 <NuxtLink
-                                    :to="{ path: `/${boxData15childpinyin}/1.html`}"
+                                    :to="{ path: `/${boxData15childpinyin}/list-1.html`}"
                                     v-if="boxData15menu[0]" class="leftTitle" :title="boxData15menu[0].alias">
                                     {{ boxData15menu[0].alias }}
                                 </NuxtLink>
                                 <NuxtLink
-                                    :to="{ path: `/${boxData15childpinyin}/1.html`}"
+                                    :to="{ path: `/${boxData15childpinyin}/list-1.html`}"
                                     v-if="boxData15menu[0]" :title="boxData15menu[0].alias">
                                     查看更多
                                 </NuxtLink>
@@ -686,7 +686,7 @@
                     </div>
                 </div>
                 <div class="index_2_head_a_box clearfix">
-                    <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/1.html`}" v-if="pageData[15].cid" v-for="item in boxData16menu" :title="item.alias">
+                    <NuxtLink :to="{ path: `/${item.aLIas_pinyin}/list-1.html`}" v-if="pageData[15].cid" v-for="item in boxData16menu" :title="item.alias">
                         {{item.alias}}
                     </NuxtLink>
                 </div>
@@ -749,12 +749,12 @@
                     <div class="index_1_box_right">
                         <div class="index_1_head_box clearfix index_1_head_box_line_none">
                             <NuxtLink
-                                :to="{ path: `/${boxData16childpinyin}/1.html`}"
+                                :to="{ path: `/${boxData16childpinyin}/list-1.html`}"
                                 v-if="boxData16menu[0]" class="leftTitle" :title="boxData16menu[0].alias">
                                 {{ boxData16menu[0].alias }}
                             </NuxtLink>
                             <NuxtLink
-                                :to="{ path: `/${boxData16childpinyin}/1.html`}"
+                                :to="{ path: `/${boxData16childpinyin}/list-1.html`}"
                                 v-if="boxData16menu[0]" :title="boxData16menu[0].alias">
                                 查看更多
                             </NuxtLink>
@@ -797,10 +797,10 @@ import { useSeoMeta } from '#imports';
 const getLinkPath = (item) => {
     if (item.children_count == 0) {
         //return `/newsList/${item.cid}?page=1`;
-        return `/${item.aLIas_pinyin}/1.html`;
+        return `/${item.aLIas_pinyin}/list-1.html`;
     } else {
         //return `/primaryNavigation/${item.cid}`;
-        return `/${item.aLIas_pinyin}/`;
+        return `/${item.aLIas_pinyin}/index.html`;
     }
 }
 //首页跳转到详情,这里需要考虑外链
@@ -808,7 +808,7 @@ const getLinkPathDetail = (item) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
-        return `/${item.pinyin}/a/${item.id}.html`;
+        return `/${item.pinyin}/${item.id}.html`;
     }
 }
 //1.加载页面必备组件 end---------------------------------------->

+ 1 - 1
pages/search/[id].vue

@@ -96,7 +96,7 @@ const getLinkPathDetail = (item) => {
     if (item.islink == 1) {
         return `${item.linkurl}`;
     } else {
-        return `/${item.pinyin}/a/${item.id}.html`;
+        return `/${item.pinyin}/${item.id}.html`;
     }
 }
 //1.页面依赖 end ---------------------------------------->

Някои файлове не бяха показани, защото твърде много файлове са промени