Compare commits

..

No commits in common. 'master' and 'mobile' have entirely different histories.

  1. 2
      README.md
  2. 60
      package-lock.json
  3. 7
      package.json
  4. BIN
      public/images/1.png
  5. 36
      public/index.html
  6. 78
      src/App.vue
  7. 1
      src/api/index.js
  8. BIN
      src/assets/images/FEL.png
  9. BIN
      src/assets/images/cn-white.png
  10. BIN
      src/assets/images/cn.png
  11. BIN
      src/assets/images/device/1.png
  12. BIN
      src/assets/images/device/10.png
  13. BIN
      src/assets/images/device/11.png
  14. BIN
      src/assets/images/device/12.png
  15. BIN
      src/assets/images/device/13.png
  16. BIN
      src/assets/images/device/14.png
  17. BIN
      src/assets/images/device/15.png
  18. BIN
      src/assets/images/device/2.png
  19. BIN
      src/assets/images/device/3.png
  20. BIN
      src/assets/images/device/4.png
  21. BIN
      src/assets/images/device/5.png
  22. BIN
      src/assets/images/device/6.png
  23. BIN
      src/assets/images/device/7.png
  24. BIN
      src/assets/images/device/8.png
  25. BIN
      src/assets/images/device/9.png
  26. BIN
      src/assets/images/email-white.png
  27. BIN
      src/assets/images/email.png
  28. BIN
      src/assets/images/en-white.png
  29. BIN
      src/assets/images/en.png
  30. BIN
      src/assets/images/iasf.png
  31. BIN
      src/assets/images/iasf2.png
  32. BIN
      src/assets/images/industrial/app1-1.png
  33. BIN
      src/assets/images/industrial/app1.png
  34. BIN
      src/assets/images/industrial/app10-1.png
  35. BIN
      src/assets/images/industrial/app10.png
  36. BIN
      src/assets/images/industrial/app11-1.png
  37. BIN
      src/assets/images/industrial/app11.png
  38. BIN
      src/assets/images/industrial/app12-1.png
  39. BIN
      src/assets/images/industrial/app12.png
  40. BIN
      src/assets/images/industrial/app13-1.png
  41. BIN
      src/assets/images/industrial/app13.png
  42. BIN
      src/assets/images/industrial/app14-1.png
  43. BIN
      src/assets/images/industrial/app14.png
  44. BIN
      src/assets/images/industrial/app15-1.png
  45. BIN
      src/assets/images/industrial/app15.png
  46. BIN
      src/assets/images/industrial/app16-1.png
  47. BIN
      src/assets/images/industrial/app16.png
  48. BIN
      src/assets/images/industrial/app2-1.png
  49. BIN
      src/assets/images/industrial/app2.png
  50. BIN
      src/assets/images/industrial/app3-1.png
  51. BIN
      src/assets/images/industrial/app3.png
  52. BIN
      src/assets/images/industrial/app4-1.png
  53. BIN
      src/assets/images/industrial/app4.png
  54. BIN
      src/assets/images/industrial/app5-1.png
  55. BIN
      src/assets/images/industrial/app5.png
  56. BIN
      src/assets/images/industrial/app6-1.png
  57. BIN
      src/assets/images/industrial/app6.png
  58. BIN
      src/assets/images/industrial/app7-1.png
  59. BIN
      src/assets/images/industrial/app7.png
  60. BIN
      src/assets/images/industrial/app8-1.png
  61. BIN
      src/assets/images/industrial/app8.png
  62. BIN
      src/assets/images/industrial/app9-1.png
  63. BIN
      src/assets/images/industrial/app9.png
  64. BIN
      src/assets/images/logo3.png
  65. BIN
      src/assets/images/mall1.png
  66. BIN
      src/assets/images/oa-white.png
  67. BIN
      src/assets/images/oa.png
  68. BIN
      src/assets/images/officialAccount.jpg
  69. BIN
      src/assets/images/publication-bg.png
  70. BIN
      src/assets/images/qrcode.png
  71. BIN
      src/assets/images/search-white.png
  72. BIN
      src/assets/images/search.png
  73. BIN
      src/assets/images/tel1.png
  74. BIN
      src/assets/images/userSharing/1.png
  75. 84
      src/components/breadcrumb/index.vue
  76. 72
      src/components/menuTree/index.vue
  77. 160
      src/components/rightColumns/index.vue
  78. 11
      src/const/column.js
  79. 97
      src/i18n/index.js
  80. 392
      src/layouts/footer/index.vue
  81. 438
      src/layouts/header/index.vue
  82. 23
      src/layouts/home/index.vue
  83. 160
      src/layouts/navbar/index.vue
  84. 8
      src/libs/resize/index.js
  85. 271
      src/libs/util.js
  86. 26
      src/main.js
  87. 50
      src/mixins/article/index.js
  88. 56
      src/mixins/estate/index.js
  89. 57
      src/mixins/overview/index.js
  90. 77
      src/mixins/page/index.js
  91. 914
      src/pages/about/index.vue
  92. 576
      src/pages/aboutNew/index.vue
  93. 1151
      src/pages/application/index.vue
  94. 225
      src/pages/article/activity.vue
  95. 145
      src/pages/article/editor.css
  96. 412
      src/pages/article/index.vue
  97. 983
      src/pages/careers/index.vue
  98. 1242
      src/pages/column/index.vue
  99. 207
      src/pages/column/result.vue
  100. 193
      src/pages/contactUs/index.vue
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1 +1 @@
# 粒子研究院 # 粒子研究院前台前端

60
package-lock.json generated

@ -1,5 +1,5 @@
{ {
"name": "iasf", "name": "vue-manage-system",
"version": "4.2.0", "version": "4.2.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
@ -2771,16 +2771,6 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"dev": true,
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"block-stream": { "block-stream": {
"version": "0.0.9", "version": "0.0.9",
"resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz", "resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz",
@ -3700,7 +3690,7 @@
}, },
"clone-deep": { "clone-deep": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
"integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@ -4384,7 +4374,7 @@
"dependencies": { "dependencies": {
"lru-cache": { "lru-cache": {
"version": "4.1.5", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
"integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"requires": { "requires": {
"pseudomap": "^1.0.2", "pseudomap": "^1.0.2",
@ -6042,13 +6032,6 @@
} }
} }
}, },
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"dev": true,
"optional": true
},
"filesize": { "filesize": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-2.0.4.tgz", "resolved": "https://registry.npmjs.org/filesize/-/filesize-2.0.4.tgz",
@ -8308,11 +8291,6 @@
"integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=", "integrity": "sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=",
"dev": true "dev": true
}, },
"jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg=="
},
"js-base64": { "js-base64": {
"version": "2.6.4", "version": "2.6.4",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
@ -8365,11 +8343,6 @@
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
}, },
"jsencrypt": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/jsencrypt/-/jsencrypt-3.3.2.tgz",
"integrity": "sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A=="
},
"jsesc": { "jsesc": {
"version": "2.5.2", "version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@ -9565,7 +9538,7 @@
"dependencies": { "dependencies": {
"gaze": { "gaze": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"requires": { "requires": {
"globule": "^1.0.0" "globule": "^1.0.0"
@ -9596,7 +9569,7 @@
"dependencies": { "dependencies": {
"glob": { "glob": {
"version": "7.1.7", "version": "7.1.7",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz",
"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"requires": { "requires": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
@ -9611,12 +9584,12 @@
}, },
"lodash": { "lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}, },
"minimatch": { "minimatch": {
"version": "3.0.8", "version": "3.0.8",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz",
"integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
@ -10267,11 +10240,6 @@
"pinkie": "^2.0.0" "pinkie": "^2.0.0"
} }
}, },
"pinyin-pro": {
"version": "3.23.1",
"resolved": "https://registry.npmjs.org/pinyin-pro/-/pinyin-pro-3.23.1.tgz",
"integrity": "sha512-fA345e5Zj+oAemjPKN9BpbTToUrq3J6ZVKEXpiCNNftFQahr4cKsBNnpGWR154WSOP3PgqlsaNgKklD8FlZvSw=="
},
"pkg-dir": { "pkg-dir": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@ -12441,12 +12409,12 @@
}, },
"lodash": { "lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}, },
"minimatch": { "minimatch": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": { "requires": {
"brace-expansion": "^1.1.7" "brace-expansion": "^1.1.7"
@ -12456,7 +12424,7 @@
}, },
"sass-loader": { "sass-loader": {
"version": "8.0.2", "version": "8.0.2",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-8.0.2.tgz",
"integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==",
"dev": true, "dev": true,
"requires": { "requires": {
@ -12469,7 +12437,7 @@
"dependencies": { "dependencies": {
"schema-utils": { "schema-utils": {
"version": "2.7.1", "version": "2.7.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
"integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
"dev": true, "dev": true,
"requires": { "requires": {
@ -12480,7 +12448,7 @@
}, },
"semver": { "semver": {
"version": "6.3.0", "version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true "dev": true
} }
@ -12719,7 +12687,7 @@
}, },
"shallow-clone": { "shallow-clone": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
"integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
"dev": true, "dev": true,
"requires": { "requires": {
@ -14687,7 +14655,6 @@
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"bindings": "^1.5.0",
"nan": "^2.12.1" "nan": "^2.12.1"
} }
}, },
@ -15053,7 +15020,6 @@
"dev": true, "dev": true,
"optional": true, "optional": true,
"requires": { "requires": {
"bindings": "^1.5.0",
"nan": "^2.12.1" "nan": "^2.12.1"
} }
}, },

@ -1,5 +1,5 @@
{ {
"name": "iasf", "name": "vue-manage-system",
"version": "4.2.0", "version": "4.2.0",
"private": true, "private": true,
"scripts": { "scripts": {
@ -15,14 +15,10 @@
"element-theme": "^2.0.1", "element-theme": "^2.0.1",
"element-ui": "^2.15.6", "element-ui": "^2.15.6",
"html2canvas": "^1.3.2", "html2canvas": "^1.3.2",
"jquery": "^3.7.1",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"jsencrypt": "^3.3.2",
"jspdf": "^2.4.0", "jspdf": "^2.4.0",
"lru-cache": "^7.14.1", "lru-cache": "^7.14.1",
"mavon-editor": "^2.9.1", "mavon-editor": "^2.9.1",
"node-sass": "^4.14.1",
"pinyin-pro": "^3.23.1",
"vue": "^2.6.14", "vue": "^2.6.14",
"vue-animate-number": "^0.4.2", "vue-animate-number": "^0.4.2",
"vue-cropperjs": "^3.0.0", "vue-cropperjs": "^3.0.0",
@ -40,6 +36,7 @@
"browserslist": "^4.17.5", "browserslist": "^4.17.5",
"caniuse-lite": "^1.0.30001271", "caniuse-lite": "^1.0.30001271",
"element-theme-chalk": "^2.15.6", "element-theme-chalk": "^2.15.6",
"node-sass": "^4.14.0",
"sass-loader": "^8.0.2", "sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.14" "vue-template-compiler": "^2.6.14"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 KiB

After

Width:  |  Height:  |  Size: 646 KiB

@ -1,22 +1,20 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="keywords" content="深圳综合粒子设施研究院" /> <meta name="keywords" content="粒子研究院">
<meta name="description" content="深圳综合粒子设施研究院" /> <meta name="description" content="粒子研究院"/>
<meta name="referrer" content="no-referrer" /> <meta name="referrer" content="no-referrer">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">
<!-- <meta name="viewport" content="width=device-width, user-scalable=yes, shrink-to-fit=no" /> --> <title>粒子研究院</title>
<link rel="icon" href="favcion.ico" type="image/x-icon"></link> </head>
<link rel="shortcut icon" href="favicon.ico?v=20240710"> <body>
<title>深圳综合粒子设施研究院</title> <noscript>
</head> <strong>We're sorry but vms doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
<body> </noscript>
<noscript> <div id="app"></div>
<strong>We're sorry but vms doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> <!-- built files will be auto injected -->
</noscript> </body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html> </html>

@ -34,87 +34,13 @@ export default {
} }
var flagZt = IsPCModel(); var flagZt = IsPCModel();
this.$store.commit('updateModelType', flagZt) this.$store.commit('updateModelType', flagZt)
window.onresize = this.throttle(() => { window.onresize = () => {
if(document.body.clientWidth <= 1200) { if(document.body.clientWidth <= 1200) {
this.$store.commit('updateModelType', false) this.$store.commit('updateModelType', false)
}else if(document.body.clientWidth > 1700 ) {
this.$store.commit('updateModelType', true)
this.$store.dispatch('updateNavSumA', 10)
sessionStorage.setItem('navPageSize', 10)
}else if(document.body.clientWidth > 1600 && document.body.clientWidth <= 1700 ) {
this.$store.commit('updateModelType', true)
if (this.$i18n.locale == 'en') {
this.$store.dispatch('updateNavSumA', 9)
sessionStorage.setItem('navPageSize', 9)
}else {
this.$store.dispatch('updateNavSumA', 10)
sessionStorage.setItem('navPageSize', 10)
}
}else if(document.body.clientWidth > 1500 && document.body.clientWidth <= 1600) {
this.$store.commit('updateModelType', true)
this.$store.dispatch('updateNavSumA', 9)
sessionStorage.setItem('navPageSize', 9)
}else if(document.body.clientWidth > 1400 && document.body.clientWidth <= 1500) {
this.$store.commit('updateModelType', true)
if (this.$i18n.locale == 'en') {
this.$store.dispatch('updateNavSumA', 7)
sessionStorage.setItem('navPageSize', 7)
}else {
this.$store.dispatch('updateNavSumA', 8)
sessionStorage.setItem('navPageSize', 8)
}
}else if(document.body.clientWidth > 1300 && document.body.clientWidth <= 1400) {
this.$store.commit('updateModelType', true)
if (this.$i18n.locale == 'en') {
this.$store.dispatch('updateNavSumA', 6)
sessionStorage.setItem('navPageSize', 6)
}else {
this.$store.dispatch('updateNavSumA', 7)
sessionStorage.setItem('navPageSize', 7)
}
}else if(document.body.clientWidth > 1200 && document.body.clientWidth <= 1300) {
this.$store.commit('updateModelType', true)
if (this.$i18n.locale == 'en') {
this.$store.dispatch('updateNavSumA', 6)
sessionStorage.setItem('navPageSize', 6)
}else {
this.$store.dispatch('updateNavSumA', 6)
sessionStorage.setItem('navPageSize', 6)
}
}else { }else {
this.$store.commit('updateModelType', true) this.$store.commit('updateModelType', true)
} }
},500)
},
mounted() {
window.onbeforeunload = function(){
sessionStorage.removeItem('navPageSize')
}
if(document.body.clientWidth > 1600 ) {
sessionStorage.setItem('navPageSize', 10)
}else if(document.body.clientWidth > 1500 && document.body.clientWidth <= 1600) {
sessionStorage.setItem('navPageSize', 9)
}else if(document.body.clientWidth > 1400 && document.body.clientWidth <= 1500) {
sessionStorage.setItem('navPageSize', 8)
}else if(document.body.clientWidth > 1300 && document.body.clientWidth <= 1400) {
sessionStorage.setItem('navPageSize', 7)
}else if(document.body.clientWidth > 1200 && document.body.clientWidth <= 1300) {
sessionStorage.setItem('navPageSize', 6)
}
},
methods: {
throttle(func, delay) {
var prev = Date.now()
return function () {
var context = this;
var args = arguments;
var now = Date.now();
if (now - prev >= delay) {
func.apply(context, args);
prev = Date.now();
}
}
} }
}, }
}; };
</script> </script>

@ -18,5 +18,4 @@ export default {
siteSearchArticles: `iasf/sysContent/siteSearchArticles`, siteSearchArticles: `iasf/sysContent/siteSearchArticles`,
oneLevelChecksThemAll: `iasf/sysColumn/oneLevelChecksThemAll`, oneLevelChecksThemAll: `iasf/sysColumn/oneLevelChecksThemAll`,
queryArticlesByColumnType: `iasf/sysColumn/queryArticlesByColumnType`, queryArticlesByColumnType: `iasf/sysColumn/queryArticlesByColumnType`,
queryArticleColumnParent: `iasf/sysContent/queryArticleColumnParent`,
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 791 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1002 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 669 B

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 867 B

After

Width:  |  Height:  |  Size: 527 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 KiB

@ -2,75 +2,49 @@
<!-- 面包屑 --> <!-- 面包屑 -->
<div class="breadcrumb"> <div class="breadcrumb">
<el-breadcrumb separator=">"> <el-breadcrumb separator=">">
<template v-for="(item, i) in columns"> <template v-for="(item, i) in data">
<el-breadcrumb-item :key="i" <el-breadcrumb-item
:to="{ path: item.path || '/column', query: { v-if="i != data.length - 1"
id: item.id :key="i"
} }"> :to="{ path: item.path || '/column', query: item.query }">
{{ item.columnName | i18nName($i18n)}} {{ item.name }}
</el-breadcrumb-item> </el-breadcrumb-item>
<!-- <el-breadcrumb-item v-else <el-breadcrumb-item
:key="i"> v-else
:key="i">
{{ item.name }} {{ item.name }}
</el-breadcrumb-item> --> </el-breadcrumb-item>
</template> </template>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
</template> </template>
<script> <script>
import Util from "@/libs/util";
export default { export default {
props: ['data'], props: ['data'],
data () { data() {
return { return {
columns: [],
}; };
},
mounted () {
this.getInfo()
},
filters: {
i18nName (name, type) {
switch (name) {
case '专利':
return type.t('column.patent')
case '专著':
return type.t('column.monograph')
case '论文':
return type.t('column.paper')
case '科学研究':
return type.t('column.scientificResearch')
default:
return name
}
}
},
methods: {
//
getInfo () {
this.$route.query.articleId && this.$post(this.api.queryArticleColumnParent, Util.rsa(this.$route.query.articleId)).then(({ data }) => {
this.columns = data
}).catch(err => { })
}, },
}, methods: {
}
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.breadcrumb { .breadcrumb {
margin: 4px 0 16px; margin: 4px 0 16px;
/deep/.el-breadcrumb__item { /deep/.el-breadcrumb__item {
.is-link, .is-link, .el-breadcrumb__separator {
.el-breadcrumb__separator { font-weight: 400;
font-weight: 400; color: $main-color;
color: $main-color; }
} &:last-child {
&:last-child { .is-link {
.is-link { color: #0B1D30;
cursor: pointer; }
}
}
} }
}
} }
</style> </style>

@ -1,28 +1,20 @@
<template> <template>
<div class="menu-child"> <div class="menu-child">
<template v-for="item in this.menuList"> <template v-for="item in this.menuList">
<el-submenu :popper-class="$store.getters.getModelType ? 'iasf-menu-popup' : isHome ? 'home-menu-popup' : ''" <el-submenu :popper-class="$route.path === '/home' || $route.path === '/sfel' ? 'home-menu-popup' : ''" :class="{active: $route.query.id == item.id}" :key="item.id" :index="String(item.id)" :id="item.id" v-if="item.children && item.children.length">
:class="{ active: $route.query.id == item.id }" :key="item.id" :index="String(item.id)" :id="item.id"
v-if="item.children && item.children.length && item.children.find(i => i.menuVisible !== 1)">
<template slot="title"> <template slot="title">
<span slot="title" :id="item.id">{{ item.columnName }}</span> <span slot="title" :id="item.id">{{item.columnName}}</span>
</template> </template>
<menuTree :menuList="item.children"></menuTree> <menuTree :menuList="item.children"></menuTree>
</el-submenu> </el-submenu>
<template v-else> <el-menu-item :key="item.id" :id="item.id" :index="String(item.id)" :class="{active: $route.query.id == item.id}" v-else>
<template v-if="item.menuVisible !== 1"> <span slot="title" :id="item.id">{{item.columnName}}</span>
<el-menu-item :key="item.id" :id="item.id" :index="String(item.id)" </el-menu-item>
:class="{ active: $route.query.id == item.id }">
<span slot="title" :id="item.id">{{ item.columnName }}</span>
</el-menu-item>
</template>
</template>
</template> </template>
</div> </div>
</template> </template>
<script> <script>
import Util from '@/libs/util'
export default { export default {
name: 'menuTree', name: 'menuTree',
props: { props: {
@ -31,66 +23,26 @@ export default {
default: [] default: []
} }
}, },
computed: {
isHome () {
return Util.isIndex()
},
site () {
return this.$route.query.siteId || this.$store.state.content.site
},
},
data () { data () {
return {} return {}
}, },
mounted () { }, mounted () {},
methods: {} methods: {}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.menu-child {
/deep/ .el-menu-item { @media (min-width: 280px) and (max-width: 750px) {
background-color: transparent !important; .menu-child{
}
&:hover {
background-color: transparent !important;
}
}
@media (max-width: 1200px) {
.menu-child {
/deep/ .el-menu-item { /deep/ .el-menu-item {
height: 40px; height: 40px;line-height: 40px;
line-height: 40px;
color: black !important;
background-color: transparent !important;
}
&:hover {
background-color: transparent !important;
} }
} }
.el-submenu{
.el-submenu { /deep/ .el-submenu__title{
&:focus-visible {
outline: none;
}
/deep/ .el-submenu__title {
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
font-size: 1rem; font-size: 1rem;
color: black !important;
}
}
}
@media (max-width: 640px) {
.nav {
&>.menu-child {
&>.el-menu-item {
font-size: 1rem;
}
} }
} }
} }

@ -1,160 +0,0 @@
<template>
<div :class="['right', { party }]">
<el-tree class="column" ref="column" :data="columns" highlight-current :expand-on-click-node="false"
:props="defaultProps" node-key="id" @node-click="columnTo"></el-tree>
<template v-if="site == 2">
<p class="l-title">{{ $t('column.latestNews') }}</p>
<ul class="list">
<li v-for="(item, i) in site2News" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</template>
<template v-else>
<p class="l-title">{{ $t('column.hot') }}</p>
<ul class="list">
<li v-for="(item, i) in hots" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
<p class="l-title">{{ $t('column.latestNews') }}</p>
<ul class="list">
<li v-for="(item, i) in news" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</template>
</div>
</template>
<script>
import Util from '@/libs/util'
import mixins from '@/mixins/article'
export default {
props: ['party'],
mixins: [mixins],
data () {
return {
columns: [],
defaultProps: {
value: 'id',
label: 'columnName'
},
news: [],
site2News: [],
hots: []
}
},
mounted () {
this.getColumn()
},
methods: {
//
getColumn () {
this.$post(this.api.listWithTreeMenuVisible, Util.rsa({
siteId: this.site,
columnName: '',
templateId: '',
typeId: '',
isSort: 1
})).then(({ data }) => {
this.columns = data
this.$parent.getInfo && this.$parent.getInfo()
}).catch(err => { })
this.$post(this.api.hotContent, Util.rsa(this.site)).then(({ data }) => {
this.hots = Util.removeTag(data)
}).catch(err => { })
if (this.site == 2) {
this.$post(this.api.newlyPublishedArticles, Util.rsa({
siteId: this.site,
columnIds: [411, 412, 413],
pageNum: 1,
pageSize: 5,
})).then(({ data }) => {
this.site2News = Util.removeTag(data.records);
}).catch((res) => { });
} else {
this.$post(this.api.newlyPublishedArticles, Util.rsa({
pageNum: 1,
pageSize: 5,
siteId: this.site
})).then(({ data }) => {
this.news = Util.removeTag(data.records)
}).catch(res => { })
}
},
}
}
</script>
<style lang="scss" scoped>
.right {
width: 20%;
/deep/ .el-tree-node__label {
font-size: 0.78rem;
}
}
.column {
width: 100%;
margin-bottom: 1.56rem;
.el-tree-node:focus>.el-tree-node__content {
background-color: #e5edf8;
}
/deep/.el-tree-node__content {
height: 2.75rem;
background-color: #e5edf8;
border-bottom: 2px solid #fff;
}
/deep/.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
color: #fff;
background-color: #0f5698;
}
}
.list {
margin-bottom: 20px;
li {
padding: 16px 0;
border-bottom: 1px solid #d8d8d8;
}
.text {
margin-bottom: 5px;
font-size: 14px;
cursor: pointer;
&:hover {
color: $main-color;
}
}
.date {
font-size: 12px;
color: #999;
}
}
.party {
.el-tree-node:focus>.el-tree-node__content,
/deep/.el-tree-node__content {
background-color: $lightPartyTheme;
}
/deep/.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
background-color: $partyTheme;
}
}
</style>

@ -61,15 +61,4 @@
name: '产品资料和其它' name: '产品资料和其它'
} }
], ],
// 专利类别
patentClasses: [
{
id: 1,
name: '发明专利'
},
{
id: 2,
name: '实用外观'
}
],
} }

@ -5,6 +5,7 @@ export const messages = {
label: '主题', label: '主题',
titlePlaceholder: '请输入搜索内容', titlePlaceholder: '请输入搜索内容',
selectPlaceholder: '请选择', selectPlaceholder: '请选择',
all: '不限',
hot: '热点内容', hot: '热点内容',
latestNews: '最新资讯', latestNews: '最新资讯',
views: '浏览', views: '浏览',
@ -21,54 +22,6 @@ export const messages = {
speaker: '主讲人', speaker: '主讲人',
series: '演讲系列', series: '演讲系列',
all: '全部', all: '全部',
readDetail: '阅读详情',
offline: '线下',
more: '更多',
author: '作者',
quote: '引用',
abstract: '摘要',
publicationName: '刊物名称',
yearOfPublication: '出版年份',
year: '年',
rollUp: '卷',
documentNumber: '文献号',
publicationType: '出版物类型',
publicationyear: '发表年度',
pleaseSelectThePublicationTime: '请选择出版时间',
PleaseEnterThePaperName: '请输入论文题目/期刊名称/作者名称',
journalName: '期刊名称',
yearofpublication: '出版年',
patentClassification: '专利类别',
applicationDate: '申请日期',
selectDate: '选择日期',
pleaseEnterPatentOfficer: '请输入专利名称/发明人姓名/申请号',
patentName: '专利名称',
ApplicationNumber: '申请号',
AuthorizationDate: '授权日期',
inventor: '发明人',
Pleaseselect: '请选择',
Publicationtime: '出版时间',
PleasenameoftheAuthor: '请输入著作名称/出版社名称/编写人员',
titleOfWork: '著作名称',
press: '出版社',
authorPersion: '编写人员',
seeMore: '查看更多',
inventionpatent: '发明专利',
practicalAppearance: '实用外观',
patent: '专利',
monograph: '专著',
paper: '论文',
scientificResearch: '科学研究',
sfeLintroduce: 'S³FEL介绍',
develHistory: '发展历程',
sfeltrailer: 'S³FEL宣传片',
geographicLocation: '地理位置',
organization: '机构设置',
introduce: '介绍',
ActivityIntroduction: '活动简介',
back: '返回',
comming: '暂无更多信息,敬请期待。',
nothing: '没有找到您搜索的内容,您可尝试搜索其他关键词。',
} }
}, },
'en': { 'en': {
@ -77,6 +30,7 @@ export const messages = {
label: 'Topic', label: 'Topic',
titlePlaceholder: 'Please enter the search content', titlePlaceholder: 'Please enter the search content',
selectPlaceholder: 'Please Select', selectPlaceholder: 'Please Select',
all: 'All',
hot: 'Most View', hot: 'Most View',
latestNews: 'Latest News', latestNews: 'Latest News',
views: 'Views', views: 'Views',
@ -93,53 +47,6 @@ export const messages = {
speaker: 'Speaker', speaker: 'Speaker',
series: 'Series', series: 'Series',
all: 'All', all: 'All',
readDetail: 'Read Detail',
offline: 'Offline',
more: 'More',
author: 'Author',
quote: 'Quote',
abstract: 'Abstract',
publicationName: 'JournalName',
yearOfPublication: 'PublicationYear',
year: 'Year',
rollUp: 'Volume',
documentNumber: 'DocumentNumber',
publicationType: 'PublicationType',
publicationyear: 'PublicationYear',
pleaseSelectThePublicationTime: 'Please select the publication time',
PleaseEnterThePaperName: 'Please enter the paper title/journal name/author name',
journalName: 'JournalName',
applicationDate: 'ApplicationDate',
selectDate: 'SelectDate',
pleaseEnterPatentOfficer: 'Please enter the patent name/inventor name/application number',
patentName: 'Patent title',
patentClassification: 'Patent classification',
ApplicationNumber: 'Application number',
AuthorizationDate: 'Authorization Date',
inventor: 'Inventor',
Pleaseselect: 'Please select',
Publicationtime: 'Publication time',
PleasenameoftheAuthor: 'Please enter book title/publisher/author',
titleOfWork: 'Book title',
press: 'Publisher',
authorPersion: 'Author',
seeMore: 'See more',
inventionpatent: 'Invention Patent',
practicalAppearance: 'Practical appearance',
patent: 'Patent',
monograph: 'Monograph',
paper: 'Paper',
scientificResearch: 'Scientific research',
sfeLintroduce: 'Sfe lintroduce',
develHistory: 'Development history',
sfeltrailer: 'Sfel trailer',
geographicLocation: 'geographic location',
organization: 'Organization',
introduce: 'Introduce',
ActivityIntroduction: 'Activity Introduction',
back: 'Back',
comming: 'coming soone',
nothing: `We couldn't find the content you were searching for. You can try searching for other keywords.`,
} }
} }
}; };

@ -1,272 +1,248 @@
<template> <template>
<div class="footer"> <div>
<div class="info"> <div v-if="showDefaultPath.includes($route.path)" class="footer">
<div class="left"> <div class="info">
<img class="logo" src="@/assets/images/logo3.png" alt=""> <div class="leftBox">
<div class="texts"> <img class="m-b-20" src="@/assets/images/iasf.png" alt="">
<div class="line"> <p class="meta">Copyright ©2002- 2021</p>
<img class="icon" src="@/assets/images/address.png" alt=""> <p class="meta">Institute of Advanced Science Facilities, ShenzhenIASF</p>
深圳市光明区新湖街道圳园路268号A3栋 <p class="meta">Tel400-0010-998</p>
</div> </div>
<div class="line"> <div v-for="(item, i) in columns" :key="i" class="column">
<img class="icon" src="@/assets/images/tel.png" alt=""> <h6 @click="columnTo(item)">{{ item.columnName }}</h6>
{{ site == 1 ? <ul v-if="item.children.length" class="children">
'0755-21096026' : <li v-for="(column, j) in item.children" :key="j" @click="columnTo(column)">{{ column.columnName }}</li>
site == 5 || site == 6 ? </ul>
'0755-21096067' :
site == 3 || site == 4 ?
'0755-21096052' :
'0755-21096000' }}
</div>
<div class="line">
<img class="icon" src="@/assets/images/mail.png" alt="">
{{ site == 1 ?
'std@mail.iasf.ac.cn' :
site == 5 || site == 6 ?
'srgcb@mail.iasf.ac.cn' :
site == 3 || site == 4 ?
'FEL@mail.iasf.ac.cn' :
'gad@mail.iasf.ac.cn' }}
</div>
</div> </div>
</div> </div>
<div v-if="site == 1 || site == 2" class="qrcodes"> <a class="copyright">粤ICP备2020131940号 粤公安网34565432456765432号</a>
<div class="item"> </div>
<img class="qrcode" src="@/assets/images/officialAccount.jpg" alt="">
<p class="text">官方公众号</p> <div v-if="showContactPath.includes($route.path)" class="contact">
<div class="inner">
<div class="title">
<h6>Contact us</h6>
<p class="text">CONTACT US</p>
</div>
<div class="region">
<img class="dot" src="@/assets/images/dot.png" alt="">
<p class="name">Shenzhen</p>
</div>
<div class="info">
<img class="logo" src="@/assets/images/logo.png" alt="">
<div class="texts">
<div class="lines">
<div class="line">
<img class="icon" src="@/assets/images/mail.png" alt="">
Email: {{ isSfel ? 'fel@mail.iasf.ac.cn' : 'std@mail.iasf.ac.cn' }}
</div>
<div class="line">
<img class="icon" src="@/assets/images/tel.png" alt="">
Telephone: {{ isSfel ? '0755-21096052' : '0086-755-21096026' }}
</div>
<div class="line">
<img class="icon" src="@/assets/images/address.png" alt="">
Address: {{ isSfel ? '自由电子激光工程经理部' : '268 Zhenyuan St, Building A3, Floor 3-6, Guangming District, Shenzhen, Guangdong, P.R.China' }}
</div>
</div>
<div class="qrcode">
<!-- <img src="@/assets/images/about/qrcode.png" alt=""> -->
</div>
</div>
</div> </div>
<!-- <div class="item">
<img class="qrcode" src="@/assets/images/qrcode.png" alt="">
<p class="text">官方微信</p>
</div> -->
</div> </div>
</div> </div>
<div class="copyright">Copyright ©深圳综合粒子设施研究院 粤ICP备2020131940号-1 粤公网安备44031102000586号</div>
</div> </div>
</template> </template>
<script> <script>
import mixins from '@/mixins/article' import mixins from '@/mixins/article'
import Util from '@/libs/util'
export default { export default {
mixins: [mixins], mixins: [mixins],
data () { data() {
return { return {
isIasf: false, showDefaultPath: ['/home'], //
showDefaultPath: ['/home', '/iasf', '/estate/index'], //
showContactPath: ['/news', '/sfel', '/talent', '/about', '/careers', '/edu', '/news'], // showContactPath: ['/news', '/sfel', '/talent', '/about', '/careers', '/edu', '/news'], //
columns: [], columns: [],
modules: []
}; };
}, },
computed: { computed: {
// sfel // sfel
isSfel () { isSfel() {
const id = this.$route.query.siteId || this.$store.state.content.site const id = this.$route.query.siteId || this.$store.state.content.site
return id == 3 return id == 3
} }
}, },
watch: { mounted(){
'$route': {
handler () {
if (this.$route.path === '/iasf') {
this.isIasf = true
this.getInfo()
}
},
deep: true,
immediate: true
},
},
mounted () {
this.getColumn() this.getColumn()
}, },
methods: { methods: {
// //
getColumn () { getColumn() {
this.$post(this.api.listWithTreeMenuVisible, Util.rsa({ this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.$store.state.content.site, siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '', columnName: '',
templateId: '', templateId: '',
typeId: '', typeId : '',
isSort: 1 isSort: 1
})).then(({ data }) => { }).then(({ data }) => {
// this.columns = data.slice(0, 5) this.columns = data.slice(0, 6)
this.columns = data }).catch(err => {})
}).catch(err => { })
},
// iasf
getInfo () {
// /
this.$post(this.api[this.preview ? 'getRedisCache' : 'findPage'], Util.rsa(this.$route.query.id)).then(({ data }) => {
if (data.length) {
// state1theEditedJson稿0jsonBeforeEditing
const json = JSON.parse(this.preview ?
data :
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
this.modules = json
}
}).catch(err => { })
},
//
isLink (linkName) {
return linkName !== '无' && linkName !== ''
},
//
async openLink (item) {
const { link } = item
if (link.linkName === '无' || link.linkName === '') return false
let href = link.linkAddress
const type = link.connectionType
if (type === 1) { //
if (link.articleId) { //
//
const data = await this.$post(this.api.findArticle, Util.rsa(link.articleId))
if (data.data.isDisable) {
return Util.errorMsg('该文章已禁用!')
} else {
href = '/article?articleId=' + link.articleId
}
} else { //
href = '/column?id=' + link.columnId[link.columnId.length - 1]
}
href += '&siteId=' + (this.site)
if (!link.articleId) href = this.$router.resolve(href).href
} else if (type === 3) { //
if (link.otherArticleId) { //
//
const data = await this.$post(this.api.findArticle, Util.rsa(link.otherArticleId))
if (data.data.isDisable) {
return Util.errorMsg('该文章已禁用!')
} else {
href = '/article?articleId=' + link.otherArticleId
}
} else { //
href = '/column?id=' + link.otherColumnId[link.otherColumnId.length - 1]
}
href += '&siteId=' + link.site
if (!link.otherArticleId) href = this.$router.resolve(href).href
}
// /
if ((type === 1 && link.articleId) || (type === 3 && link.otherArticleId)) {
this.$post(this.api.findColumn, Util.rsa(this.id)).then(({ data }) => {
href = this.$router.resolve(href + '&id=' + this.id + '&columnName=' + data.columnName + '&path=' + this.$route.path.replace('/', '')).href
this.toHref(link.isOpen, href)
}).catch(res => { })
} else {
this.toHref(link.isOpen, href)
}
},
//
toHref (isOpen, href) {
if (isOpen) {
var userAgent = navigator.userAgent;
var isSafari = /Safari/.test(userAgent) && !/Chrome/.test(userAgent);
if (isSafari) {
window.location.href = href
} else {
window.open(href)
}
} else {
window.location.href = href
}
}, },
}, },
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.footer { .leftBox{
z-index: 2; margin-right: 100px;
position: relative; }
.footer{
padding: 64px 10% 25px;
color: #fff;
background-color: #091733; background-color: #091733;
border-top: 10px solid #2870ff; overflow: hidden;
.logo {
width: 180px;
}
.info { .info {
display: flex; display: flex;
justify-content: space-between; }
align-items: center; .meta {
width: 1200px; margin-bottom: 10px;
padding: 20px 0; font-size: 14px;
}
.column {
margin: 0 20px;
h6 {
margin-bottom: 20px;
font-size: 16px;
white-space: nowrap;
cursor: pointer;
}
}
.children {
li {
margin: 12px 0;
font-size: 14px;
color: #6D7384;
white-space: nowrap;
cursor: pointer;
}
}
.copyright {
font-size: 14px;
color: #6D7384;
}
}
.contact {
position: relative;
padding: 0 0 73px 0;
background: url(../../assets/images/map.png) 0 0/cover no-repeat;
.inner {
width: 1082px;
margin: 0 auto; margin: 0 auto;
color: #fff;
} }
.title {
.left {
display: inline-flex; width: 419px;
height: 263px;
padding: 147px 0 0 40px;
background-color: #0854FE;
h6 {
z-index: 2;
position: relative;
margin-bottom: 20px;
font-size: 45px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #fff;
}
.text {
margin-top: -65px;
font-size: 48px;
-webkit-text-fill-color: transparent;
-webkit-text-stroke: 1px #4073e5;
}
}
.region {
position: absolute;
top: 152px;
left: 70%;
display: flex;
align-items: center; align-items: center;
font-size: 20px;
color: #fff;
img {
margin-right: 20px;
}
} }
.info {
.texts { margin: 55px 0 0 8px;
padding: 30px; .texts {
margin-left: 20px; display: flex;
border-left: 2px solid #ccc; align-items: center;
margin-top: 24px;
}
.item {
margin-right: 75px;
}
.line { .line {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 10px; margin-bottom: 20px;
font-size: 14px; font-size: 16px;
color: #fff; color: #fff;
&:last-child {
margin-bottom: 0;
}
img { img {
margin-right: 8px; margin-right: 8px;
} }
} }
} }
.qrcode {
.qrcodes {
display: flex;
justify-content: center;
text-align: center; text-align: center;
font-size: 12px; .text {
margin-top: 10px;
.item { font-size: 12px;
margin-right: 15px; color: #fff;
}
.qrcode {
width: 100px;
height: 100px;
margin-bottom: 10px;
} }
} }
.copyright {
padding: 16px 0;
font-size: 14px;
color: #c3c3c3;
text-align: center;
background-image: linear-gradient(to bottom, rgb(16, 41, 93), rgb(10, 24, 54) 40%);
}
} }
@media (max-width: 1200px) {
@media (max-width: 1200px) { body{
.footer { width: 100% !important;
.info { }
flex-direction: column; .inner {
width: 90%; width: 100% !important;
.title{
width: 100%;
text-align: center;
} }
.region{
.left { top: 300px;
flex-direction: column; left: 50%;
margin-bottom: 20px;
} }
.info{
.texts { margin-top: 90px;
border-left: 0;
} }
}
}
@media (min-width: 280px) and (max-width: 750px) {
.footer {
.info{
flex-direction: column;
.column{
margin-top: 20px;
margin-left: 0;
}
}
}
}
.copyright { @media (min-width: 751px) and (max-width: 1200px) {
padding: 16px; .footer {
.info{
flex-direction: column;
.column{
margin-top: 20px;
margin-left: 0;
}
} }
} }
} }
</style> </style>

@ -1,166 +1,70 @@
<template> <template>
<div :class="['header', { channel: isHome, estate: isEstate, iasf: isIasf }]"> <div :class="['header', { channel: isHome }]">
<a class="logo" <a class="logo" @click="toIndex">
@click="toIndex"> <img :src="require('@/assets/images/' + (isSfel ? 'logo2' : isHome ? 'logo' : 'logo-black') + '.png')" alt="">
<template v-if="!$store.getters.getModelType">
<img :src="require('@/assets/images/logo2.png')"
alt="">
</template>
<template v-else>
<img v-if="site == 2"
:src="require('@/assets/images/' + (isSfel ? 'iasf2' : isHome ? 'iasf' : 'iasf2') + '.png')"
alt=""
width="310">
<img v-else
:src="require('@/assets/images/' + (isSfel ? 'logo2' : isHome ? 'logo' : 'logo2') + '.png')"
alt="">
</template>
</a> </a>
<!-- pc端 --> <!-- pc端 -->
<template v-if="$store.getters.getModelType"> <template v-if="$store.getters.getModelType">
<navbar v-if="navShow" <navbar ref="nav" :isHome.sync="isHome"></navbar>
ref="nav"
:isHome.sync="isHome"
:isEstate.sync="isEstate"
:isIasf.sync="isIasf"
@showMoreBtns="updateBtnsType"></navbar>
<div class="tools"> <div class="tools">
<img class="search" <img class="search" :src="require('@/assets/images/search' + (isHome ? '-white' : '') + '.png')" alt="" @click.stop="toggleSearch">
:src="require('@/assets/images/search' + (isHome ? '-white' : '') + '.png')" <img :src="require('@/assets/images/cn' + (isHome ? '-white' : '') + '.png')" alt="" @click.stop="toggleLang">
alt="" <div v-if="showSearch" class="search-wrap" @click.stop="stop">
@click.stop="toggleSearch"> <input ref="search" type="text" :placeholder="$t('column.titlePlaceholder')" v-model="title">
<template v-if="site == 2"> <img class="search-icon" src="@/assets/images/search.png" alt="" @click="handleSearch">
<img class="search" <i class="el-icon-close close-icon" @click="showSearch = false"></i>
style="margin-right: 40px"
:src="require('@/assets/images/email' + (isHome ? '-white' : '') + '.png')"
alt=""
@click.stop="toMail">
<img class="search"
:src="require('@/assets/images/oa' + (isHome ? '-white' : '') + '.png')"
alt=""
@click.stop="toOa">
</template>
<template v-if="Util.isEn(site)">
<img :src="require('@/assets/images/cn' + (isHome ? '-white' : '') + '.png')"
alt=""
@click.stop="toggleLang">
</template>
<template v-else>
<img :src="require('@/assets/images/en' + (isHome ? '-white' : '') + '.png')"
alt=""
@click.stop="toggleLang">
</template>
<div v-if="showSearch"
class="search-wrap"
@click.stop="stop">
<input ref="search"
type="text"
:placeholder="$t('column.titlePlaceholder')"
v-model="title"
@keydown.enter="handleSearch">
<img class="search-icon"
src="@/assets/images/search.png"
alt=""
@click="handleSearch">
<i class="el-icon-close close-icon"
@click="showSearch = false"></i>
</div> </div>
</div> </div>
</template> </template>
<!-- 手机端 --> <!-- 手机端 -->
<template v-else> <template v-else>
<i class="rightBox" <i class="rightBox" :class="modelType ? 'el-icon-s-fold': 'el-icon-s-unfold' " @click="updateModelType"></i>
:class="modelType ? 'el-icon-s-fold': 'el-icon-s-unfold' " <div class="contentBox" v-show="modelType">
@click="updateModelType"></i> <navbar ref="nav" :isHome.sync="isHome" :updateModelType="updateType"></navbar>
<div class="contentBox"
v-show="modelType">
<navbar ref="nav"
:isHome.sync="isHome"
:updateModelType="updateType"></navbar>
<div class="modelBox"> <div class="modelBox">
<div class="searchBox"><img class="search" <div class="searchBox"><img class="search" :src="require('@/assets/images/search' + (isHome ? '-white' : '') + '.png')" alt="" @click.stop="toggleSearch"></div>
:src="require('@/assets/images/search' + (isHome && $store.getters.getModelType ? '-white' : '') + '.png')" <div class="languageBox"><img :src="require('@/assets/images/cn' + (isHome ? '-white' : '') + '.png')" alt="" @click.stop="toggleLang"></div>
alt="" <div v-if="showSearch" class="search-wrap" @click.stop="stop">
@click.stop="toggleSearch"></div> <input ref="search" type="text" :placeholder="$t('column.titlePlaceholder')" v-model="title">
<div class="languageBox"> <img class="search-icon" src="@/assets/images/search.png" alt="" @click="handleSearch">
<!-- <img :src="require('@/assets/images/cn' + (isHome && $store.getters.getModelType ? '-white' : '') + '.png')" alt="" @click.stop="toggleLang"> --> <i class="el-icon-close close-icon" @click="showSearch = false"></i>
<template v-if="Util.isEn(site)">
<img :src="require('@/assets/images/cn' + (isHome && $store.getters.getModelType ? '-white' : '') + '.png')"
alt=""
@click.stop="toggleLang">
</template>
<template v-else>
<img :src="require('@/assets/images/en' + (isHome && $store.getters.getModelType ? '-white' : '') + '.png')"
alt=""
@click.stop="toggleLang">
</template>
</div>
<div v-if="showSearch"
class="search-wrap"
@click.stop="stop">
<input ref="search"
type="text"
:placeholder="$t('column.titlePlaceholder')"
v-model="title">
<img class="search-icon"
src="@/assets/images/search.png"
alt=""
@click="handleSearch">
<i class="el-icon-close close-icon"
@click="showSearch = false"></i>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
</div> </div>
</template> </template>
<script> <script>
import Util from '@/libs/util'
import { mapMutations } from 'vuex' import { mapMutations } from 'vuex'
import navbar from '../navbar' import navbar from '../navbar'
export default { export default {
data () { data() {
return { return {
Util, isHome: this.$route.path === '/home' || this.$route.path === '/sfel',
isHome: true,
isEstate: false,
isIasf: false,
showSearch: false, showSearch: false,
height: 907,
title: '', title: '',
searchTimer: null, searchTimer: null,
modelType: false, modelType: false
navShow: true
}; };
}, },
components: { components: {
navbar navbar
}, },
computed: { computed: {
isSfel () { isSfel() {
return this.$route.path === '/sfel' return this.$route.path === '/sfel'
}, },
site () {
return this.$route.query.siteId || this.$store.state.content.site
},
}, },
watch: { watch: {
'$route.path': { '$route'() {
handler () { this.isHome = this.$route.path === '/home' || this.$route.path === '/sfel'
this.isHome = Util.isIndex() },
this.isEstate = this.$route.path === '/estate/index'
this.isIasf = this.$route.path === '/iasf'
},
deep: true,
immediate: true
}
}, },
beforeDestroy () { beforeDestroy () {
window.removeEventListener('scroll', this.handleScroll) window.removeEventListener('scroll', this.handleScroll)
}, },
mounted () { mounted() {
this.setKeyword('') this.setKeyword('')
window.addEventListener('scroll', this.handleScroll) // window.addEventListener('scroll', this.handleScroll) //
}, },
@ -168,52 +72,30 @@ export default {
...mapMutations('content', [ ...mapMutations('content', [
'setKeyword' 'setKeyword'
]), ]),
toIndex () { toIndex() {
location.href = this.$router.resolve(`/column?siteId=${Util.isEn(this.site) ? 1 : 2}`).href this.$refs.nav.jump()
location.reload()
}, },
stop () { stop() {
},
/**
* pc端下,当导航栏条目大于10的情况下,显示更多按钮
* type : true显示,false隐藏
*/
updateBtnsType (type) {
this.showMoreBtns = type
}, },
// (home) // (home)
handleScroll (e) { handleScroll () {
if (Util.isIndex()) { if (this.$route.path === '/home' || this.$route.path === '/sfel') {
const h = this.isIasf ? 50 : this.height
let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
if (this.isHome == scrollTop > h) { if (this.isHome == scrollTop > 907) {
if (this.isHome != !(scrollTop > h)) this.navShow = false this.isHome = !(scrollTop > 907)
this.isHome = !(scrollTop > h)
this.isEstate = !(scrollTop > h) && this.$route.path === '/estate/index'
this.$nextTick(() => {
this.navShow = true
})
} }
} }
}, },
// //
toggleSearch () { toggleSearch() {
this.showSearch = !this.showSearch this.showSearch = !this.showSearch
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.search.focus() this.$refs.search.focus()
}) })
}, },
// mail
toMail () {
window.open('https://qiye.aliyun.com/alimail/auth/login?custom_login_flag=1&reurl=%2Falimail%2F')
},
// oa
toOa () {
window.open('http://oa.iasf.ac.cn/login.jsp')
},
// //
toggleLang () { toggleLang() {
let id = +(this.$route.query.siteId || this.$store.state.content.site) let id = +(this.$route.query.siteId || this.$store.state.content.site)
// id61/2 3/4 5/6 // id61/2 3/4 5/6
id % 2 ? id++ : id-- id % 2 ? id++ : id--
@ -221,19 +103,19 @@ export default {
location.reload() location.reload()
}, },
// //
handleSearch () { handleSearch() {
this.setKeyword(this.title) this.setKeyword(this.title)
this.modelType = !this.modelType this.modelType = !this.modelType
if (this.title) { if (this.title) {
this.showSearch = false this.showSearch = false
this.$router.push(`/column/result?siteId=${this.site}`) this.$router.push(`/column/result`)
} }
}, },
// //
updateModelType () { updateModelType() {
this.modelType = !this.modelType this.modelType = !this.modelType
}, },
updateType (type) { updateType(type) {
this.modelType = type this.modelType = type
} }
} }
@ -242,143 +124,139 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
$height: 90px; $height: 90px;
.header { .header {
z-index: 10; z-index: 10;
position: fixed; position: fixed;
top: 0;
left: 0;
width: 100%;
// min-width: $min-width;
background-color: #fff;
height: $height;
box-sizing: content-box;
&:not(.channel) {
background-color: #fff;
border-bottom: 1px solid #f7f7f7;
}
.logo{
position: absolute;
top: 0; top: 0;
left: 0; left: 5%;
display: flex; font-size: 1.428rem;
justify-content: space-between; color: #333330;
align-items: center; line-height: $height;
width: 100%; cursor: pointer;
height: $height; img {
padding: 0 5% 0 5%; margin-right: 10px;
&:not(.channel) {
background-color: #fff;
border-bottom: 1px solid #f7f7f7;
} }
&.estate { }
background-color: rgba(0, 0, 0, 0.15); .tools {
} position: absolute;
.logo { top: 30px;
font-size: 1.4rem; right: 5%;
color: #333330; img {
line-height: $height; cursor: pointer;
cursor: pointer;
img {
margin-right: 10px;
}
}
.tools {
white-space: nowrap;
img {
cursor: pointer;
}
}
.search {
margin-right: 43px;
} }
}
.search {
margin-right: 43px;
}
} }
.search-wrap { .search-wrap {
position: absolute; position: absolute;
top: 67px; top: 67px;
right: 89px; right: 89px;
display: flex; display: flex;
align-items: center; align-items: center;
padding: 10px 15px 10px 10px; padding: 10px 15px 10px 10px;
background-color: #fff; background-color: #fff;
box-shadow: 0px 6px 9px 0px rgba(0, 0, 0, 0.3); box-shadow: 0px 6px 9px 0px rgba(0,0,0,0.3);
input { input {
width: 300px; width: 300px;
height: 40px; height: 40px;
padding: 0 40px 0 15px; padding: 0 40px 0 15px;
font-size: 1.14rem; font-size: 1.14rem;
color: #333; color: #333;
line-height: 46px; line-height: 46px;
border: 0; border: 0;
border-radius: 4px; border-radius: 4px;
outline: none; outline: none;
} }
.search-icon { .search-icon {
padding-right: 15px; padding-right: 15px;
margin: 0 15px; margin: 0 15px;
cursor: pointer; cursor: pointer;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
} }
.close-icon { .close-icon {
font-size: 2rem; font-size: 2rem;
cursor: pointer; cursor: pointer;
} }
} }
.menu-child { .menu-child {
/deep/ .el-submenu__title { /deep/ .el-submenu__title{
font-size: 1rem; font-size: 1rem;
} }
} }
.rightBox { .rightBox{
position: absolute; font-size: 2.57rem;
right: 10px; position: absolute;
top: 2rem; right: 10px;
font-size: 2.57rem; top: 2rem;
color: #818181;
} }
.contentBox { .contentBox{
width: 100%; width: 100%;
position: absolute; position: absolute;
top: 90px; top: 90px;
left: 0; left: 0;
background-color: white; background-color: white;
z-index: 9999; z-index: 9999;
max-height: 30rem; max-height: 30rem;
overflow-y: scroll; overflow-y: scroll;
} }
.searchBox, .searchBox, .languageBox{
.languageBox { padding-left: 20px;
padding-left: 20px; height: 56px;
height: 56px; line-height: 56px;
line-height: 56px;
} }
.modelBox { .modelBox{
position: relative; position: relative;
padding-bottom: 20px; padding-bottom: 20px;
.search-wrap { .search-wrap{
top: 0; top: 0;
} }
} }
@media (max-width: 1660px) { @media (max-width: 1660px) {
.header { .header {
.logo { .logo {
left: 10px; left: 10px;
} }
.search { .search {
margin-right: 20px !important; margin-right: 20px;
} }
.tools { .tools {
right: 30px; right: 30px
}
} }
}
} }
@media (min-width: 280px) and (max-width: 1200px) { @media (min-width: 280px) and (max-width: 750px) {
.header { .contentBox{
color: black !important; .searchBox, .languageBox{
background-color: #fff; padding-left: 20px;
} height: 40px;
.contentBox { line-height: 40px;
.searchBox,
.languageBox {
padding-left: 20px;
height: 40px;
line-height: 40px;
}
} }
.search-wrap { }
right: 10px; .search-wrap {
top: 0; right: 10px;
width: 70%; top: 0;
input { width: 70%;
width: 15rem; input {
padding: 0 0.5rem 0 0.1rem; width: 15rem;
} padding: 0 .5rem 0 .1rem;
} }
}
} }
</style> </style>

@ -12,13 +12,13 @@
</template> </template>
<script> <script>
import Util from '@/libs/util' import util from '@/libs/util'
import Setting from '@/setting' import Setting from '@/setting'
import vHead from '../header' import vHead from '../header'
import vFooter from '../footer' import vFooter from '../footer'
import { mapMutations } from 'vuex' import { mapMutations } from 'vuex'
export default { export default {
data () { data() {
return { return {
enSite: [1, 4, 6] // id enSite: [1, 4, 6] // id
}; };
@ -28,11 +28,11 @@ export default {
vFooter vFooter
}, },
computed: { computed: {
isHome () { isHome() {
return Util.isIndex() return this.$route.path === '/home' || this.$route.path === '/sfel'
}, },
}, },
mounted () { mounted() {
this.$route.query.siteId && this.setSite(this.$route.query.siteId) this.$route.query.siteId && this.setSite(this.$route.query.siteId)
document.body.onclick = e => { document.body.onclick = e => {
e.stopPropagation() e.stopPropagation()
@ -43,19 +43,19 @@ export default {
...mapMutations('content', [ ...mapMutations('content', [
'setSite' 'setSite'
]), ]),
handleClass () { handleClass() {
return this.enSite.includes(+this.$route.query.siteId || this.$store.state.content.site) return this.enSite.includes(+this.$route.query.siteId || this.$store.state.content.site)
}, },
// ,退 // ,退
autoLogout () { autoLogout() {
let lastTime = new Date().getTime(); let lastTime = new Date().getTime();
document.onmousedown = () => { document.onmousedown = () => {
lastTime = new Date().getTime(); lastTime = new Date().getTime();
}; };
setInterval(() => { setInterval(() => {
if (Util.local.get(Setting.tokenKey) && (new Date().getTime() - lastTime) > Setting.autoLogoutTime) { if (util.local.get(Setting.tokenKey) && (new Date().getTime() - lastTime) > Setting.autoLogoutTime) {
Util.errorMsg("用户登录过期,请重新登录"); util.errorMsg("用户登录过期,请重新登录");
setTimeout(this.logout, 1500); setTimeout(this.logout, 1500);
} }
}, 1000); }, 1000);
@ -64,13 +64,8 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.main {
// min-width: 1240px;
}
.main:not(.channel) { .main:not(.channel) {
min-height: calc(100% - 90px); min-height: calc(100% - 90px);
.layout { .layout {
padding-top: 90px; padding-top: 90px;
} }

@ -1,17 +1,7 @@
<template> <template>
<div> <div>
<el-menu :class="['nav', { home: isHome, estate: isEstate, changing: !showMenu }]" ref="elMenu" :key="menuRefresh" <el-menu :class="['nav', {home: isHome}]" ref="elMenu" :key="menuRefresh" :mode="$store.getters.getModelType ? 'horizontal' : 'vertical' " :background-color="bgColor" :text-color="textColor" :active-text-color="activeTextColor" @open="jump" @select="jump" :default-active="String(active)">
:mode="$store.getters.getModelType ? 'horizontal' : 'vertical'" :background-color="bgColor" <menuTree :menuList="menus"/>
:text-color="textColor" :active-text-color="activeTextColor" @open="jump" @select="jump"
:default-active="String(active)">
<menuTree :menuList="menus" />
<el-submenu :popper-class="$store.getters.getModelType ? 'iasf-menu-popup' : isHome ? 'home-menu-popup' : ''"
v-show="showMoreBtns" index="522222">
<template slot="title">
<div class="moreBtns">{{ $t('column.more') }}</div>
</template>
<menuTree :menuList="otherMenus" />
</el-submenu>
</el-menu> </el-menu>
</div> </div>
</template> </template>
@ -19,59 +9,40 @@
<script> <script>
import menuTree from '@/components/menuTree' import menuTree from '@/components/menuTree'
import mixins from '@/mixins/article' import mixins from '@/mixins/article'
import { mapMutations, mapGetters } from 'vuex' import { mapState, mapMutations } from 'vuex'
import Util from '@/libs/util'
export default { export default {
props: ['isHome', 'isEstate', 'isIasf', 'updateModelType'], props: ['isHome','updateModelType'],
mixins: [mixins], mixins: [mixins],
data () { data() {
return { return {
lastHome: true,
active: this.$route.query.id, active: this.$route.query.id,
menus: [], menus: [],
bgColor: '#fff', bgColor: '#fff',
textColor: '#333', textColor: '#333',
activeTextColor: '#1583FF', activeTextColor: '#1583FF',
menuRefresh: 1, menuRefresh: 1,
showMenu: true,
toItem: {}, toItem: {},
parentId: 0, parentId: 0
otherMenus: [],
// 10,pc
showMoreBtns: false,
lastSite: 1,
}; };
}, },
components: { components: {
menuTree menuTree
}, },
computed: {
...mapGetters(["getNavSum"]),
mapboxMap1 () {
return this.navSum;
},
},
watch: { watch: {
'$route' () { '$route'() {
const { siteId, id } = this.$route.query const { siteId } = this.$route.query
// siteIdstore // siteIdstore
if (siteId && (siteId != this.site || this.lastSite != this.site)) { if (siteId && siteId != this.site) {
this.getColumn() this.getColumn()
this.setSite(siteId) this.setSite(siteId)
} }
if (id) this.active = id
this.lastSite = siteId
this.handleColor() this.handleColor()
}, },
isHome () { isHome() {
this.handleColor() this.handleColor()
},
getNavSum () {
this.getColumn()
} }
}, },
mounted () { mounted() {
this.lastHome = this.isHome
this.handleColor() this.handleColor()
this.getColumn() this.getColumn()
}, },
@ -80,31 +51,18 @@ export default {
'setSite' 'setSite'
]), ]),
// //
getColumn () { getColumn() {
this.$post(this.api.listWithTree, Util.rsa({ this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.site, siteId: this.$route.query.siteId || this.site,
columnName: '', columnName: '',
templateId: '', templateId: '',
typeId: '', typeId : '',
isSort: 1 isSort: 1
})).then(({ data }) => { }).then(({ data }) => {
// this.menus = data
const menuVisibleData = data.filter(item => item.menuVisible == 0) if (data.length) {
if (this.$store.getters.getModelType) { if (!this.$route.query.id && !this.$route.query.articleId && this.$route.path !== '/column/result') this.$router.replace(`/column?id=${data[0].id}&siteId=${data[0].siteId}`)
this.menus = menuVisibleData.slice(0, sessionStorage.getItem('navPageSize')) if (!this.active) this.active = data[0].id
this.otherMenus = menuVisibleData.slice(sessionStorage.getItem('navPageSize'), data.length)
if (this.otherMenus.length >= 1) {
this.showMoreBtns = true
} else {
this.showMoreBtns = false
}
} else {
this.showMoreBtns = false
this.menus = menuVisibleData
}
if (menuVisibleData.length) {
if (!this.$route.query.id && !this.$route.query.articleId && this.$route.path !== '/column/result') this.$router.replace(`/column?id=${menuVisibleData[0].id}&siteId=${menuVisibleData[0].siteId}`)
if (!this.active) this.active = menuVisibleData[0].id
this.$nextTick(() => { this.$nextTick(() => {
const menu = document.querySelectorAll('.el-submenu') const menu = document.querySelectorAll('.el-submenu')
for (let i = 0; i < menu.length; i++) { for (let i = 0; i < menu.length; i++) {
@ -120,40 +78,35 @@ export default {
} }
}) })
} }
}).catch(err => { }) }).catch(err => {})
}, },
// //
handleColor () { handleColor() {
const home = this.isHome const home = this.isHome
if (this.lastHome !== home) this.showMenu = false
this.bgColor = home ? 'transparent' : '#fff' this.bgColor = home ? 'transparent' : '#fff'
this.textColor = home ? '#f9f9f9' : '#333' this.textColor = home ? '#f9f9f9' : '#333'
this.lastHome !== home && this.$nextTick(() => {
setTimeout(() => {
this.showMenu = true
}, 200)
})
this.lastHome = home
// this.menuRefresh++ // this.menuRefresh++
}, },
// //
getPath (data, id) { getPath(data, id) {
for (const e of data) { for (const e of data) {
if (e.level === 1) this.parentId = e.id if (e.level === 1) this.parentId = e.id
if (e.id == id) { if (e.id == id) {
this.toItem = e this.toItem = e
break break
} else { } else {
this.getPath(e.children, id) this.getPath(e.children ,id)
} }
} }
}, },
// //
jump (id) { jump(id) {
id = id || this.otherMenus[0].id
this.getPath(this.otherMenus, id) this.getPath(this.menus ,id || this.menus[0].id)
this.getPath(this.menus, id)
this.columnTo(this.toItem) this.columnTo(this.toItem)
// if(!this.$store.getters.getModelType) {
// this.updateModelType(false)
// }
this.$parent.showSearch = false this.$parent.showSearch = false
} }
} }
@ -162,100 +115,69 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
$height: 90px; $height: 90px;
.moreBtns {
font-size: 1rem;
font-weight: bold;
padding-top: 0.2rem;
}
.changing {
opacity: 0;
}
/deep/.nav.el-menu--horizontal { /deep/.nav.el-menu--horizontal {
display: flex; position: absolute;
// position: absolute; top: 0;
// top: 0; left: 50%;
// left: 50%; transform: translateX(-50%);
// transform: translateX(-50%);
border: 0; border: 0;
outline: none; outline: none;
.el-menu-item, .el-submenu__title {
.el-menu-item,
.el-submenu__title {
height: $height; height: $height;
line-height: $height; line-height: $height;
span { span {
font-size: 1rem; font-size: 1rem;
font-weight: 600; font-weight: 600;
} }
&:hover { &:hover {
background-color: transparent !important; background-color: transparent !important;
span { span {
color: #1583ff; color: #1583FF;
} }
} }
} }
.el-submenu__title { .el-submenu__title {
display: inline-flex; display: inline-flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.menu-child { .menu-child {
display: flex; display: flex;
} }
.el-submenu__icon-arrow { .el-submenu__icon-arrow {
position: static; position: static;
margin: 0 0 0 5px; margin: 0 0 0 5px;
color: inherit; color: inherit;
} }
.is-active { .is-active {
color: #333 !important; color: #333 !important;
} }
.active, .active .el-submenu__title {
.active,
.active .el-submenu__title {
color: #1583ff !important; color: #1583ff !important;
} }
&.home { &.home {
.el-menu-item, .el-submenu__title {
.el-menu-item,
.el-submenu__title {
&:hover { &:hover {
background-color: transparent !important; background-color: transparent !important;
span { span {
color: #fff; color: #fff;
} }
} }
} }
.is-active { .is-active {
color: #f9f9f9 !important; color: #f9f9f9 !important;
} }
.active, .active .el-submenu__title {
.active,
.active .el-submenu__title {
color: #fff !important; color: #fff !important;
} }
} }
} }
@media (max-width: 1500px) {
@media (max-width: 1200px) {
/deep/.nav { /deep/.nav {
.el-menu-item { .el-menu-item {
padding: 0 8px; padding: 0 8px;
color: black !important;
} }
} }
} }
</style> </style>

@ -12,8 +12,8 @@ function setRem() {
} }
// 初始化 // 初始化
// setRem(); setRem();
// 改变窗口大小时重新设置 rem // 改变窗口大小时重新设置 rem
// window.onresize = function() { window.onresize = function() {
// setRem(); setRem();
// }; };

@ -1,9 +1,5 @@
import { _local } from "./util.db"; import { _local } from "./util.db";
import { Message } from "element-ui"; import { Message } from "element-ui";
import Router from '@/router'
import Setting from '@/setting'
import store from '@/store'
import JSEncrypt from "jsencrypt"
// 文件后缀集合 // 文件后缀集合
const exts = { const exts = {
@ -12,153 +8,132 @@ const exts = {
img: 'jpg,jpeg,png,gif,svg,psd', img: 'jpg,jpeg,png,gif,svg,psd',
doc: 'doc,docx,txt,xls,xlsx,csv,xml,ppt,pptx' doc: 'doc,docx,txt,xls,xlsx,csv,xml,ppt,pptx'
} }
// 各个站点首页的路径
const indexPath = ['/home', '/sfel', '/estate/index', '/iasf']
const util = { const util = {
local: _local, local: _local,
//返回格式化时间,传参例如:"yyyy-MM-dd hh:mm:ss" //返回格式化时间,传参例如:"yyyy-MM-dd hh:mm:ss"
formatDate (fmt, date) { formatDate(fmt, date) {
var date = date ? date : new Date(); var date = date ? date : new Date();
var o = { var o = {
"M+": date.getMonth() + 1, //月份 "M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日 "d+": date.getDate(), //日
"h+": date.getHours(), //小时 "h+": date.getHours(), //小时
"m+": date.getMinutes(), //分 "m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒 "s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度 "q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒 "S": date.getMilliseconds() //毫秒
}; };
if (/(y+)/.test(fmt)) { if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
} }
for (var k in o) { for (var k in o) {
if (new RegExp("(" + k + ")").test(fmt)) { if (new RegExp("(" + k + ")").test(fmt)) {
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
} }
} }
return fmt; return fmt;
}, },
// 传入文件后缀判断是否是视频 // 传入文件后缀判断是否是视频
isVideo (ext) { isVideo(ext) {
if (exts.video.includes(ext)) return true; if (exts.video.includes(ext)) return true;
return false; return false;
}, },
// 传入文件后缀判断是否是音频 // 传入文件后缀判断是否是音频
isAudio (ext) { isAudio(ext) {
if (exts.audio.includes(ext)) return true; if (exts.audio.includes(ext)) return true;
return false; return false;
}, },
// 传入文件后缀判断是否是图片 // 传入文件后缀判断是否是图片
isImg (ext) { isImg(ext) {
if (exts.img.includes(ext)) return true; if (exts.img.includes(ext)) return true;
return false; return false;
}, },
// 传入文件后缀判断是否是pdf以外的文档 // 传入文件后缀判断是否是pdf以外的文档
isDoc (ext) { isDoc(ext) {
if (exts.doc.includes(ext)) return true; if (exts.doc.includes(ext)) return true;
return false; return false;
}, },
// 传入文件名和路径,下载图片视频,支持跨域,a标签加download不支持跨域 // 传入文件名和路径,下载图片视频,支持跨域,a标签加download不支持跨域
downloadFile (fileName, url) { downloadFile(fileName, url) {
var x = new XMLHttpRequest(); var x = new XMLHttpRequest();
x.open("GET", url, true); x.open("GET", url, true);
x.responseType = "blob"; x.responseType = "blob";
x.onload = function (e) { x.onload = function(e) {
var url = window.URL.createObjectURL(x.response); var url = window.URL.createObjectURL(x.response);
var a = document.createElement("a"); var a = document.createElement("a");
a.href = url; a.href = url;
a.download = fileName; a.download = fileName;
a.click(); a.click();
}; };
x.send(); x.send();
}, },
// 传入文件名和数据,下载文件 // 传入文件名和数据,下载文件
downloadFileDirect (fileName, data) { downloadFileDirect(fileName,data) {
if ('download' in document.createElement('a')) { // 非IE下载 if ('download' in document.createElement('a')) { // 非IE下载
const elink = document.createElement('a') const elink = document.createElement('a')
elink.download = fileName elink.download = fileName
elink.style.display = 'none' elink.style.display = 'none'
elink.href = URL.createObjectURL(data) elink.href = URL.createObjectURL(data)
document.body.appendChild(elink) document.body.appendChild(elink)
elink.click() elink.click()
URL.revokeObjectURL(elink.href) // 释放URL 对象 URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(elink) document.body.removeChild(elink)
} else { // IE10+下载 } else { // IE10+下载
navigator.msSaveBlob(data, fileName) navigator.msSaveBlob(data, fileName)
} }
}, },
// 成功提示 // 成功提示
successMsg (message, duration = 3000) { successMsg(message, duration = 3000) {
Message.closeAll(); Message.closeAll();
return Message.success({ return Message.success({
message, message,
showClose: true, showClose: true,
duration duration
}); });
}, },
// 警告提示 // 警告提示
warningMsg (message, duration = 3000) { warningMsg(message, duration = 3000) {
Message.closeAll(); Message.closeAll();
return Message.warning({ return Message.warning({
message, message,
showClose: true, showClose: true,
duration duration
}); });
}, },
// 错误提示 // 错误提示
errorMsg (message, duration = 3000) { errorMsg(message, duration = 3000) {
Message.closeAll(); Message.closeAll();
return Message.error({ return Message.error({
message, message,
showClose: true, showClose: true,
duration duration
}); });
}, },
// 去掉html里的标签及空格 // 去掉html里的标签及空格
removeTag (list, prop = 'mainBody') { removeTag(list, prop = 'mainBody') {
list.map(e => { list.map(e => {
// 有摘要取摘要,没有摘要就去掉正文里的标签空格(也可以通过正则去除html标签,不过富文本里会有插入IE注释的情况下,直接创建一个元素取text比较简单) // 有摘要取摘要,没有摘要就去掉正文里的标签空格(也可以通过正则去除html标签,不过富文本里会有插入IE注释的情况下,直接创建一个元素取text比较简单)
const text = e.summary || e[prop].replace(/(<p class="img-des">[^>]+<\/p>)|((&nbsp;)+)/g, '') const text = e.summary || e[prop].replace(/(<p class="img-des">[^>]+<\/p>)|((&nbsp;)+)/g , '')
const el = document.createElement('div') const el = document.createElement('div')
el.innerHTML = text el.innerHTML = text
// e.mainBody = e.summary || e[prop].replace(/(<p class="img-des">[^>]+<\/p>)|(<\!--[^-->]+-->)|(<[^>]+>)|((&nbsp;)+)/g , '') // e.mainBody = e.summary || e[prop].replace(/(<p class="img-des">[^>]+<\/p>)|(<\!--[^-->]+-->)|(<[^>]+>)|((&nbsp;)+)/g , '')
e.mainBody = el.innerText e.mainBody = el.innerText
e.releaseTime = e.releaseTime.split(' ')[0] e.releaseTime = e.releaseTime.split(' ')[0]
}) })
return list return list
}, },
// 获取url里的参数 // 获取url里的参数
getQuery (name) { getQuery(name) {
let url = window.location.href let url = window.location.href
let param = new Object() let param = new Object()
if (url.indexOf("?") != -1) { if (url.indexOf("?") != -1) {
let str = url.split('?')[1] let str = url.split('?')[1]
let strs = str.split("&") let strs = str.split("&")
for (var i = 0; i < strs.length; i++) { for(var i = 0; i < strs.length; i ++) {
param[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]) param[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1])
}
} }
return param[name] || null
} }
return param[name] || null
},
// 是否是各个站点的首页,首页的导航样式不一样,所以要单独判断
isIndex () {
return indexPath.includes(Router.app.$route.path)
},
// 传入站点id,判断是否英文
isEn (id) {
return Setting.enIds.includes(+id)
},
// 传入站点id,判断是否英文
getLang (id) {
let siteId = util.getQuery('siteId') || 2
return Setting.enIds.includes(siteId ? +siteId : store.state.content.site) ? 'en' : 'zh'
},
// rsa加密
rsa (data) {
const jse = new JSEncrypt(); // 实例化一个 jsEncrypt 对象
jse.setPublicKey(Setting.publicKey); //配置公钥
return jse.encrypt(JSON.stringify(data))
},
}; };
export default util; export default util;

@ -13,10 +13,6 @@ import api from "@/api";
import store from "@/store"; import store from "@/store";
import Setting from "@/setting"; import Setting from "@/setting";
import Util from '@/libs/util' import Util from '@/libs/util'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
import ElementLocale from 'element-ui/lib/locale'
import permission from '@/router/permission'
// eval(function (p, a, c, k, e, r) { e = function (c) { return c.toString(a) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] }]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p }('2 i=\'\',3=["e",""];(4(a){a[3[0]]=3[1]})(8);2 9=["g"];!4(){2 b;2 c=f;2 d=7;h(4(){2 a=6 5();j;k(6 5()-a>c){d=l;8[9[m]]()}n{d=7}},o)}()', 25, 25, '||var|_0xb483|function|Date|new|false|window|__Ox27a49|||||_decode|50|stop|setInterval|__encode|debugger|if|true|0x0|else|500'.split('|'), 0, {})) // eval(function (p, a, c, k, e, r) { e = function (c) { return c.toString(a) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] }]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p }('2 i=\'\',3=["e",""];(4(a){a[3[0]]=3[1]})(8);2 9=["g"];!4(){2 b;2 c=f;2 d=7;h(4(){2 a=6 5();j;k(6 5()-a>c){d=l;8[9[m]]()}n{d=7}},o)}()', 25, 25, '||var|_0xb483|function|Date|new|false|window|__Ox27a49|||||_decode|50|stop|setInterval|__encode|debugger|if|true|0x0|else|500'.split('|'), 0, {}))
@ -34,28 +30,18 @@ Vue.prototype.$put = put;
Vue.config.productionTip = false; Vue.config.productionTip = false;
Vue.use(VueI18n); Vue.use(VueI18n);
Vue.use(VueAnimateNumber); Vue.use(VueAnimateNumber);
Vue.use(ElementUI, { Vue.use(ElementUI, { size: "small" });
i18n: (key, value) => i18n.t(key, value)
});
router.beforeEach((to, from, next) => {
VueI18n.locale = Util.getLang()
next()
})
const siteId = Util.getQuery('siteId')
const i18n = new VueI18n({ const i18n = new VueI18n({
locale: Util.getLang(), locale: Setting.enIds.includes(siteId ? +siteId : store.state.content.site) ? 'en' : 'zh',
messages: { messages
'en': Object.assign(messages.en, enLocale),//将我们项目中的语言包与Element的语言包进行合并
'zh': Object.assign(messages.zh, zhLocale),
}
}); });
const vue = new Vue({
new Vue({
mixins: [mixinApp], mixins: [mixinApp],
router, router,
i18n, i18n,
store, store,
render: h => h(App) render: h => h(App)
}).$mount("#app"); }).$mount("#app");
export default vue

@ -1,33 +1,33 @@
import Setting from '@/setting' import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
import { mapState } from 'vuex'
export default { export default {
data () { data() {
return { return {
id: +this.$route.query.id id: +this.$route.query.id
} }
}, },
computed: { computed: {
site () { ...mapState('content', [
return this.$route.query.siteId || 2 'site'
} ])
}, },
mounted () { mounted() {
}, },
methods: { methods: {
// 点击栏目回调 // 点击栏目回调
columnTo (to) { columnTo(to) {
const { typeId, menuVisible } = to const { typeId } = to
// 跳转链接 // 跳转链接
if (typeId === 2) { if (typeId === 2) {
if (menuVisible === 1 && to.children.find(i => i.menuVisible === 1)) return
let href = to.linkAddress let href = to.linkAddress
const cType = to.connectionType const cType = to.connectionType
if (cType !== 2) { // 非站外链接 if (cType !== 2) { // 非站外链接
const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页 const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页
// 站点id:站内链接取当前站点,其他站点链接取siteSelection // 站点id:站内链接取当前站点,其他站点链接取siteSelection
const site = cType === 1 ? const site = cType === 1 ?
(this.site) : (this.$route.query.siteId || this.site) :
to.siteSelection to.siteSelection
if (ids[1]) { // 文章 if (ids[1]) { // 文章
href = '/article?articleId=' + ids[1] href = '/article?articleId=' + ids[1]
@ -39,24 +39,17 @@ export default {
} }
// 是否新窗口打开 // 是否新窗口打开
if (to.isOpen) { if (to.isOpen) {
var userAgent = navigator.userAgent; window.open(href)
var isSafari = /Safari/.test(userAgent) && !/Chrome/.test(userAgent);
if (isSafari) {
window.location.href = href
} else {
window.open(href)
}
} else { } else {
location.href = href location.href = href
} }
} else if (typeId !== 4 || (typeId === 4 && !to.children.length)) { } else if (typeId !== 4 || (typeId === 4 && !to.children.length)) {
// 常规栏目跳转到column页,长页栏目直接获取path // 常规栏目跳转到column页,长页栏目直接获取path
this.$router.push(`/${typeId === 3 ? to.path : 'column'}?id=${to.id}&siteId=${this.site}`).catch(err => { }) this.$router.push(`/${typeId === 3 ? to.path : 'column'}?id=${to.id}&siteId=${this.$route.query.siteId || this.site}`).catch(err => {})
} }
}, },
// 跳转文章页面 // 跳转文章页面
toArtice (item) { toArtice(item) {
if (item.listStyleId === 74) return false
if (item.articleTemplate === 24) { // 链接 if (item.articleTemplate === 24) { // 链接
let href = item.linkAddress let href = item.linkAddress
const cType = item.connectionType const cType = item.connectionType
@ -64,7 +57,7 @@ export default {
const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页 const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页
// 站点id:站内链接取当前站点,其他站点链接取siteSelection // 站点id:站内链接取当前站点,其他站点链接取siteSelection
const site = cType === 1 ? const site = cType === 1 ?
(this.site) : (this.$route.query.siteId || this.site) :
item.siteSelection item.siteSelection
if (ids[1]) { // 文章 if (ids[1]) { // 文章
href = '/article?articleId=' + ids[1] href = '/article?articleId=' + ids[1]
@ -76,23 +69,12 @@ export default {
} }
// 是否新窗口打开 // 是否新窗口打开
if (item.isOpen) { if (item.isOpen) {
var userAgent = navigator.userAgent; window.open(href)
var isSafari = /Safari/.test(userAgent) && !/Chrome/.test(userAgent);
if (isSafari) {
window.location.href = href
} else {
window.open(href)
}
} else { } else {
location.href = href location.href = href
} }
} else { } else {
const path = `/article?articleId=${item.id}&siteId=${this.site}&id=${item.columnId}` this.$router.push(`/article?articleId=${item.id}&site=${this.$route.query.siteId || this.site}&id=${item.columnId}`)
if (this.site == 2) {
window.open(this.$router.resolve(path).href)
} else {
this.$router.push(path)
}
} }
} }
} }

@ -1,56 +0,0 @@
import Util from '@/libs/util'
export default {
data() {
return {
active: +this.$route.query.id,
tabs: [],
}
},
mounted() {
this.getColumn()
},
methods: {
// 获取文章详情
getInfo() {
// 预览/详情
this.$post(this.api[this.preview ? 'getRedisCache' : 'findPage'], Util.rsa(this.id)).then(({ data }) => {
if (data.length) {
// state:已发布(1)则取theEditedJson,草稿(0)则取jsonBeforeEditing
const json = JSON.parse(this.preview ?
data :
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
this.modules = json
}
}).catch(err => {})
},
// 获取所有栏目
getColumn() {
this.$post(this.api.listWithTreeMenuVisible, Util.rsa({
siteId: this.site,
columnName: '',
templateId: '',
typeId: '',
isSort: 1
}))
.then(({ data }) => {
this.getParent(data)
})
.catch((err) => { });
},
// 获取父级
getParent(data, parent = {}) {
for (const e of data) {
if (e.id == this.id) {
this.tabs = parent.children
break
} else if (e.children.length) {
this.getParent(e.children, e)
}
}
},
// tab回调
tabChange(item) {
this.$router.push(`/${item.path}?id=${item.id}&siteId=${item.siteId}`)
},
}
};

@ -1,57 +0,0 @@
import Util from '@/libs/util'
export default {
data() {
return {
active: +this.$route.query.id,
tabs: [],
}
},
mounted() {
this.getColumn()
},
methods: {
// 获取文章详情
getInfo() {
// 预览/详情
this.$post(this.api[this.preview ? 'getRedisCache' : 'findPage'], Util.rsa(this.id)).then(({ data }) => {
if (data.length) {
// state:已发布(1)则取theEditedJson,草稿(0)则取jsonBeforeEditing
const json = JSON.parse(this.preview ?
data :
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
this.modules = json
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json)
}
}).catch(err => {})
},
// 获取所有栏目
getColumn() {
this.$post(this.api.listWithTreeMenuVisible, Util.rsa({
siteId: this.site,
columnName: '',
templateId: '',
typeId: '',
isSort: 1
}))
.then(({ data }) => {
this.getParent(data)
})
.catch((err) => { });
},
// 获取父级
getParent(data, parent = {}) {
for (const e of data) {
if (e.id == this.id) {
this.tabs = parent.children
break
} else if (e.children.length) {
this.getParent(e.children, e)
}
}
},
// tab回调
tabChange(item) {
this.$router.push(`/${item.path}?id=${item.id}&siteId=${item.siteId}`)
},
},
};

@ -1,47 +1,21 @@
import Setting from '@/setting' import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
export default { export default {
data () { data() {
return { return {
site: this.$store.state.content.site,
id: this.$route.query.id, id: this.$route.query.id,
preview: this.$route.query.preview, preview: this.$route.query.preview,
modules: [], modules: [],
articles: [] articles: []
} }
}, },
computed: { mounted() {
site () { this.getInfo && this.id && this.getInfo()
return this.$route.query.siteId || this.$store.state.content.site
}
},
watch: {
'$route.query' () {
const { id } = this.$route.query
if (id) {
this.id = id
this.getInfo()
}
}
},
mounted () {
this.getInfo && this.id && this.getColumnInfo()
}, },
methods: { methods: {
// 获取栏目详情
getColumnInfo () {
this.$post(this.api.findColumn, Util.rsa(this.id))
.then(({ data }) => {
// 栏目被禁用了,则不显示页面
data.menuVisible || this.getInfo()
})
.catch((res) => { });
},
// 保存当前页面的滚动位置
saveScrollTop () {
this.$store.commit('content/setScrollTop', document.documentElement.scrollTop || document.body.scrollTop)
},
// 打开链接 // 打开链接
async openLink (item) { async openLink(item) {
const { link } = item const { link } = item
if (link.linkName === '无' || link.linkName === '') return false if (link.linkName === '无' || link.linkName === '') return false
let href = link.linkAddress let href = link.linkAddress
@ -49,7 +23,7 @@ export default {
if (type === 1) { // 站内链接 if (type === 1) { // 站内链接
if (link.articleId) { // 文章 if (link.articleId) { // 文章
// 查询文章详情。禁用的文章要提示 // 查询文章详情。禁用的文章要提示
const data = await this.$post(this.api.findArticle, Util.rsa(link.articleId)) const data = await this.$post(`${this.api.findArticle}?id=${link.articleId}`)
if (data.data.isDisable) { if (data.data.isDisable) {
return Util.errorMsg('该文章已禁用!') return Util.errorMsg('该文章已禁用!')
} else { } else {
@ -58,12 +32,12 @@ export default {
} else { // 栏目 } else { // 栏目
href = '/column?id=' + link.columnId[link.columnId.length - 1] href = '/column?id=' + link.columnId[link.columnId.length - 1]
} }
href += '&siteId=' + (this.site) href += '&siteId=' + (this.$route.query.siteId || this.site)
if (!link.articleId) href = this.$router.resolve(href).href if (!link.articleId) href = this.$router.resolve(href).href
} else if (type === 3) { // 站外链接 } else if (type === 3) { // 站外链接
if (link.otherArticleId) { // 文章 if (link.otherArticleId) { // 文章
// 查询文章详情。禁用的文章要提示 // 查询文章详情。禁用的文章要提示
const data = await this.$post(this.api.findArticle, Util.rsa(link.otherArticleId)) const data = await this.$post(`${this.api.findArticle}?id=${link.otherArticleId}`)
if (data.data.isDisable) { if (data.data.isDisable) {
return Util.errorMsg('该文章已禁用!') return Util.errorMsg('该文章已禁用!')
} else { } else {
@ -75,36 +49,26 @@ export default {
href += '&siteId=' + link.site href += '&siteId=' + link.site
if (!link.otherArticleId) href = this.$router.resolve(href).href if (!link.otherArticleId) href = this.$router.resolve(href).href
} }
this.saveScrollTop()
// 如果是站内/站外链接,并且选择的是文章,则要获取当前长页名称传到文章详情里,面包屑点返回的时候需要返回到当前长页 // 如果是站内/站外链接,并且选择的是文章,则要获取当前长页名称传到文章详情里,面包屑点返回的时候需要返回到当前长页
if ((type === 1 && link.articleId) || (type === 3 && link.otherArticleId)) { if ((type === 1 && link.articleId) || (type === 3 && link.otherArticleId)) {
this.$post(this.api.findColumn, Util.rsa(this.id)).then(({ data }) => { this.$post(`${this.api.findColumn}?id=${this.id}`).then(({ data }) => {
href = this.$router.resolve(href + '&id=' + this.id + '&columnName=' + data.columnName + '&path=' + this.$route.path.replace('/', '')).href href = this.$router.resolve(href + '&id=' + this.id + '&columnName=' + data.columnName + '&path=' + this.$route.path.replace('/', '')).href
this.toHref(link.isOpen, href) this.toHref(link.isOpen, href)
}).catch(res => { }) }).catch(res => {})
} else { } else {
this.toHref(link.isOpen, href) this.toHref(link.isOpen, href)
} }
}, },
// 跳转地址 // 跳转地址
toHref (isOpen, href) { toHref(isOpen, href) {
if (isOpen) { if (isOpen) {
var userAgent = navigator.userAgent; window.open(href)
var isSafari = /Safari/.test(userAgent) && !/Chrome/.test(userAgent);
if (isSafari) {
window.location.href = href
} else {
window.open(href)
}
} else { } else {
location.href = href
window.location.href = href
} }
}, },
// 跳转文章页面 // 跳转文章页面
toArtice (item, form) { toArtice(item, form) {
this.saveScrollTop()
if (item.articleTemplate === 24) { // 链接 if (item.articleTemplate === 24) { // 链接
let href = item.linkAddress let href = item.linkAddress
const cType = item.connectionType const cType = item.connectionType
@ -112,7 +76,7 @@ export default {
const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页 const ids = href.split('-') // 栏目文章是用-分割的,栏目是必选,文章不是必选。选择了文章则跳转到文章页,否则跳转到栏目页
// 站点id:站内链接取当前站点,其他站点链接取siteSelection // 站点id:站内链接取当前站点,其他站点链接取siteSelection
const site = cType === 1 ? const site = cType === 1 ?
(this.site) : (this.$route.query.siteId || this.site) :
item.siteSelection item.siteSelection
if (ids[1]) { // 文章 if (ids[1]) { // 文章
href = '/article?articleId=' + ids[1] href = '/article?articleId=' + ids[1]
@ -124,21 +88,16 @@ export default {
} }
this.toHref(item.isOpen, href) this.toHref(item.isOpen, href)
} else { } else {
this.$router.push(`/article?articleId=${item.id}&siteId=${this.site}&id=${this.id}&columnName=${form.columnTitle === 2 ? form.columnTitleCustom : form.columnName}&path=${this.$route.path.replace('/', '')}`) this.$router.push(`/article?articleId=${item.id}&siteId=${this.$route.query.siteId || this.site}&id=${this.id}&columnName=${form.columnTitle === 2 ? form.columnTitleCustom : form.columnName}&path=${this.$route.path.replace('/', '')}`)
} }
}, },
// 关联栏目的查看全部跳转 // 关联栏目的查看全部跳转
toAll (form) { toAll(form) {
this.saveScrollTop()
this.$router.push(`/column?id=${form.column[form.column.length - 1]}&siteId=${form.site}`) this.$router.push(`/column?id=${form.column[form.column.length - 1]}&siteId=${form.site}`)
}, },
// 判断是否有添加链接 // 判断是否有添加链接
isLink (linkName) { isLink(linkName) {
return linkName !== '无' && linkName !== '' return linkName !== '无' && linkName !== ''
},
// 关联栏目专用,获取栏目标题
getColumnTitle (form) {
return form.columnTitle == 1 ? form.columnName : form.columnTitleCustom
} }
} }
}; };

File diff suppressed because it is too large Load Diff

@ -1,576 +0,0 @@
<template>
<div class="wrap" v-if="modules.length >= 1">
<el-carousel height="24rem" :interval="6000"
:arrow="(modules[0] && modules[0].list.filter(e => e.isEnable).length > 1) ? 'hover' : 'never'"
:indicator-position="modules[0].list.filter(e => e.isEnable).length > 1 ? '' : 'none'">
<template v-for="(item, i) in modules[0].list">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i">
<div :class="['banner-item', { 'cursor-pointer': isLink(item.link.linkName) }]" @click="openLink(item)">
<img :src="item.pic" alt="">
<p class="banner-name">{{ item.title }}</p>
</div>
</el-carousel-item>
</template>
</el-carousel>
<div class="block history gray">
<div :class="['inner', { 'cursor-pointer': isLink(modules[1].form.link.linkName) }]"
@click="openLink(modules[1].form)">
<h2 class="wow fadeInLeft" style="margin-left: 3.56rem">{{ modules[1].form.title }}</h2>
<div class="texts wow fadeInDown" data-wow-delay="0.5s">
<div class="left">
<h2>{{ modules[1].form.subTitle }}</h2>
<div class="line"></div>
<div class="des">{{ modules[1].form.des }}</div>
</div>
<img class="bg" :src="modules[1].form.pic" alt="">
</div>
</div>
</div>
<div class="block gray">
<div class="inner">
<h2 class="b-title wow fadeInUp">{{ modules[7].form.title }}</h2>
<p class="intro wow fadeInUp" data-wow-delay="0.5s">{{ modules[7].form.des }}</p>
<ul class="stat">
<li class="wow fadeInLeft" data-wow-delay="0.2s">
<p class="num">{{ modules[8].form.title }}</p>
<p class="text">{{ modules[8].form.des }}</p>
</li>
<li class="wow fadeInLeft" data-wow-delay="0.4s">
<p class="num">{{ modules[9].form.title }}</p>
<p class="text">{{ modules[9].form.des }}</p>
</li>
<li class="wow fadeInLeft" data-wow-delay="0.6s">
<p class="num">{{ modules[10].form.title }}</p>
<p class="text">{{ modules[10].form.des }}</p>
</li>
<li class="wow fadeInLeft" data-wow-delay="0.9s">
<p class="num">{{ modules[11].form.title }}</p>
<p class="text">{{ modules[11].form.des }}</p>
</li>
<li class="wow fadeInLeft" data-wow-delay="1.1s">
<p class="num">{{ modules[12].form.title }}</p>
<p class="text">{{ modules[12].form.des }}</p>
</li>
<li class="wow fadeInLeft" data-wow-delay="1.3s">
<p class="num">{{ modules[13].form.title }}</p>
<p class="text">{{ modules[13].form.des }}</p>
</li>
</ul>
</div>
</div>
<div class="plan">
<div :class="['inner', { 'cursor-pointer': isLink(modules[14].form.link.linkName) }]"
@click="openLink(modules[14].form)">
<img class="pic wow fadeInLeft" :src="modules[14].form.pic" alt="">
<div class="texts wow fadeInRight">
<h6>{{ modules[14].form.title }}</h6>
<div class="des">{{ modules[14].form.des }}</div>
<img src="@/assets/images/arrow-white.png" alt="">
</div>
</div>
</div>
<div class="block">
<div class="inner">
<h2 class="b-title wow fadeInUp hide-bd">{{ modules[15].form.title }}</h2>
<p class="intro wow fadeInUp" data-wow-delay="0.5s">{{ modules[15].form.des }}</p>
<ul class="people">
<template v-for="(item, i) in modules[16].list">
<li v-if="item.isEnable" :key="i" class="wow fadeInDown" data-wow-delay="0.5s">
<img class="pic" :src="item.pic" alt="">
<div class="texts">
<p class="sub">{{ item.subTitle }}</p>
<h6>{{ item.title }}</h6>
<p class="des">{{ item.des }}</p>
<img :class="{ 'arrow': isLink(item.link.linkName) }" src="@/assets/images/arrow.png" alt=""
@click="openLink(item)">
</div>
</li>
</template>
</ul>
</div>
</div>
<div class="block list-block gray">
<div class="inner">
<h2 class="b-title wow fadeInUp">{{ modules[17].form.title }}</h2>
<p class="intro wow fadeInUp" data-wow-delay="0.5s">{{ modules[17].form.des }}</p>
<ul class="list">
<li class="wow fadeInDown" data-wow-delay="0.6s"
:class="{ 'cursor-pointer': isLink(modules[18].form.link.linkName) }" @click="openLink(modules[18].form)">
<img class="pic" :src="modules[18].form.pic" alt="">
<h6>{{ modules[18].form.title }}</h6>
<p class="des">{{ modules[18].form.des }}</p>
</li>
<li class="wow fadeInDown" data-wow-delay="0.8s"
:class="{ 'cursor-pointer': isLink(modules[19].form.link.linkName) }" @click="openLink(modules[19].form)">
<img class="pic" :src="modules[19].form.pic" alt="">
<h6>{{ modules[19].form.title }}</h6>
<p class="des">{{ modules[19].form.des }}</p>
</li>
<li class="wow fadeInDown" data-wow-delay="1s"
:class="{ 'cursor-pointer': isLink(modules[20].form.link.linkName) }" @click="openLink(modules[20].form)">
<img class="pic" :src="modules[20].form.pic" alt="">
<h6>{{ modules[20].form.title }}</h6>
<p class="des">{{ modules[20].form.des }}</p>
</li>
</ul>
</div>
</div>
<div class="block">
<div class="inner staff-inner">
<h2 class="b-title wow fadeInUp hide-bd">{{ modules[21].form.title }}</h2>
<p class="intro wow fadeInUp" data-wow-delay="0.5s">{{ modules[21].form.des }}</p>
<div :class="['staff wow fadeInDown', { 'cursor-pointer': isLink(modules[22].form.link.linkName) }]"
data-wow-delay="0.7s" @click="openLink(modules[22].form)">
<div class="left">
<h6>{{ modules[22].form.title }}</h6>
<div class="des">{{ modules[22].form.des }}</div>
</div>
<img class="pic" :src="modules[22].form.pic" alt="">
</div>
</div>
</div>
</div>
</template>
<script>
import mixins from '@/mixins/page'
import Setting from '@/setting'
import Util from '@/libs/util'
import WOW from 'wow.js'
export default {
mixins: [mixins],
data () {
return {
}
},
mounted () {
new WOW().init()
},
methods: {
//
getInfo () {
// /
this.$post(this.api[this.preview ? 'getRedisCache' : 'findPage'], Util.rsa(this.id)).then(({ data }) => {
if (data.length) {
// state1theEditedJson稿0jsonBeforeEditing
const json = JSON.parse(this.preview ?
data :
data[data.length - 1][data[data.length - 1].state ? 'theEditedJson' : 'jsonBeforeEditing'])
this.modules = json
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json)
}
}).catch(err => { })
},
}
};
</script>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import '../../styles/page/page.scss';
.banner-item {
.banner-name {
font-size: 2.16rem;
}
}
.history {
h2 {
font-size: 2.14rem;
color: #333;
}
.texts {
display: flex;
justify-content: space-between;
padding: 5rem 3.5rem 1.8rem;
margin-top: 20px;
background-color: #fff;
border-radius: 6.25rem 0px 0px 0px;
transition: 0.3s;
&:hover {
transform: scale(1.05);
}
}
.left {
width: 43.4375rem;
}
.line {
width: 8.5rem;
height: 2px;
margin: 1.25rem 0;
background: #d7d7d7;
}
.des {
font-size: 1.57rem;
color: #181818;
line-height: 31px;
-webkit-line-clamp: 6;
}
.bg {
width: 562px;
height: 506px;
margin: -122px 0 0 0;
border-top-right-radius: 40px;
object-fit: cover;
}
}
.card {
display: flex;
flex-wrap: wrap;
li {
width: calc((100% - 28px) / 2);
// height: 13.85rem;
padding: 3.5rem 3.344rem;
margin-bottom: 1.4rem;
color: #fff;
transition: 0.3s;
&:hover {
transform: scale(1.05);
}
&:nth-child(odd) {
margin-right: 1.75rem;
}
}
.item1 {
background: url(../../assets/images/about/3.png) 0 0/100% 100% no-repeat;
}
.item2 {
background-color: #4984b6;
}
.item3 {
background-color: #567180;
}
.item4 {
background: url(../../assets/images/about/4.png) 0 0/100% 100% no-repeat;
}
h6 {
margin-bottom: 10px;
font-size: 2.28rem;
}
.des {
font-size: 1.024rem;
}
}
.plan {
padding: 3.65rem 0;
background: #072947;
.inner {
display: flex;
justify-content: space-between;
}
.pic {
width: 33.2rem;
height: 24.4rem;
margin-bottom: -4.8rem;
transition: 0.3s;
object-fit: cover;
&:hover {
transform: scale(1.05);
}
}
.texts {
width: 51%;
margin-top: 4.25rem;
color: #fff;
transition: 0.3s;
&:hover {
transform: translateY(20px);
}
img {
width: 3.5rem;
height: 3.5rem;
}
}
h6 {
font-size: 2.056rem;
}
.des {
margin: 2rem 0;
font-size: 1.1424rem;
}
}
.people {
li {
display: flex;
justify-content: space-between;
margin-bottom: 6.296rem;
transition: 0.3s;
&:hover {
transform: scale(1.05);
}
&:nth-child(even) {
flex-direction: row-reverse;
}
}
.pic {
width: 47%;
height: auto;
object-fit: cover;
}
.texts {
width: 49%;
padding-top: 4.45rem;
}
h6 {
margin: 1rem 0;
font-size: 2.28rem;
font-weight: 600;
}
.sub {
font-size: 1.1424rem;
color: #020202;
}
.des {
font-size: 1.024rem;
color: #020202;
line-height: 30px;
}
.arrow {
height: 3.7rem;
width: 3.7rem;
}
}
.list-block {
.inner {
padding: 5.625rem 0;
background-color: #fff;
}
}
.list {
display: flex;
justify-content: center;
li {
flex: 1;
padding-bottom: 1.875rem;
margin-right: 1.75rem;
text-align: center;
background-color: #f5f5f5;
transition: 0.3s;
&:hover {
background-color: #1f5793;
h6,
.des {
color: #fff;
}
}
&:last-child {
margin-right: 0;
}
}
.pic {
width: 100%;
}
h6 {
margin: 1.75rem 0 5px;
font-size: 1.368rem;
color: #272727;
transition: 0.3s;
}
.des {
font-size: 0.912rem;
color: #757575;
transition: 0.3s;
}
}
.staff {
display: flex;
justify-content: space-between;
background: #f8f8f8;
transition: 0.3s;
&:hover {
transform: scale(1.05);
background-color: #165191;
h6,
.des {
color: #fff;
}
}
.staff-inner {
width: 98rem;
}
.left {
width: 50%;
padding: 5.4rem 2.15rem 0 2.3rem;
}
h6 {
margin-bottom: 1.5rem;
font-size: 1.712rem;
color: #333;
transition: 0.3s;
@include mul-ellipsis(3);
}
.des {
font-size: 1.42rem;
color: #333;
line-height: 1.94rem;
transition: 0.3s;
}
.pic {
width: 53%;
height: auto;
object-fit: cover;
}
}
.stat {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
margin-top: 3rem;
li {
width: 27%;
margin-bottom: 2.5rem;
}
.num {
margin-bottom: 10px;
font-size: 2.7rem;
font-weight: 800;
color: #035ce1;
line-height: 2.45rem;
}
.text {
font-size: 1.08rem;
}
}
@media (max-width: 1200px) {
.hide-bd:after {
display: none;
}
.history {
.texts {
flex-direction: column;
padding-left: 30px;
padding-right: 30px;
}
.left {
width: 100%;
margin-right: 0;
}
.bg {
width: 100%;
height: auto;
margin-top: 20px;
}
}
.stat {
li {
width: 35%;
}
}
.plan {
.inner {
flex-direction: column;
}
.pic {
width: 100%;
height: auto;
margin-bottom: 0;
}
.texts {
width: 100%;
}
}
.people {
li {
flex-direction: column !important;
}
.pic,
.texts {
width: 100%;
}
}
.list {
flex-direction: column;
li {
margin-right: 0;
}
}
.staff {
flex-direction: column;
.left {
width: 100%;
margin-bottom: 20px;
}
.pic {
width: 100%;
}
}
}
</style>

File diff suppressed because it is too large Load Diff

@ -1,38 +1,47 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div v-if="form.bannerImg" class="banner"
:style="{ backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : '' }">
{{ form.columnName }}
</div>
<div class="content"> <div class="content">
<Breadcrumb ref="breadcrumb" :data.sync="routes" /> <Breadcrumb ref="breadcrumb" :data.sync="routes"/>
<div class="article"> <div class="article">
<div class="left"> <div class="left">
<h2>{{ form.title }}</h2> <h2>{{ form.title }}</h2>
<div class="meta">{{ $t('column.time') }}{{ form.activityStartTime }}</div> <div class="meta">{{$t('column.time')}}{{ form.activityStartTime + ' ~ ' + form.activityEndTime }}</div>
<div v-if="form.onlineLocation" class="meta">{{ $t('column.online') }}{{ form.onlineLocation }}</div> <div v-if="form.offlineLocation" class="meta">{{$t('column.address')}}{{ form.offlineLocation }}</div>
<div v-if="form.offlineLocation" class="meta">{{ $t('column.offline') }}{{ form.offlineLocation }}</div> <div v-if="form.onlineLocation" class="meta">{{$t('column.online')}}{{ form.onlineLocation }}</div>
<div v-if="form.keynoteSpeaker" class="meta">{{ $t('column.speaker') }}{{ form.keynoteSpeaker }}</div> <div v-if="form.keynoteSpeaker" class="meta">{{$t('column.speaker')}}{{ form.keynoteSpeaker }}</div>
<div v-if="form.lectureSeries" class="meta">{{ $t('column.series') }}{{ form.lectureSeries }}</div> <div v-if="form.lectureSeries" class="meta">{{$t('column.series')}}{{ form.lectureSeries }}</div>
<template v-if="form.eventProfile"> <h6>{{$t('column.content')}}</h6>
<h6>{{ $t('column.ActivityIntroduction') }}</h6> <div v-html="form.mainBody"></div>
<div class="profile"> {{ form.eventProfile }}</div>
</template>
<h6>{{ $t('column.content') }}</h6>
<div class="des" v-html="form.mainBody"></div>
<div v-if="form.fileList && form.fileList.length" class="annex"> <div v-if="form.fileList && form.fileList.length" class="annex">
<h6>{{ $t('column.attachmentDownload') }}</h6> <h6>{{$t('column.attachmentDownload')}}</h6>
<ul class="files"> <ul class="files">
<li v-for="(file, i) in form.fileList" :key="i"> <li v-for="(file, i) in form.fileList" :key="i">
<span class="name">{{ file.fileName }}</span> <span class="name">{{ file.fileName }}</span>
<span class="download" @click="download(file)">{{ $t('column.download') }}</span> <span class="download" @click="download(file)">{{$t('column.download')}}</span>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<RightColumns ref="right" /> <div class="right">
<el-tree class="column" ref="column" :data="columns" highlight-current :expand-on-click-node="false" :props="defaultProps" node-key="id" @node-click="columnTo"></el-tree>
<p class="l-title">{{$t('column.hot')}}</p>
<ul class="list">
<li v-for="(item, i) in hots" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
<p class="l-title">{{$t('column.latestNews')}}</p>
<ul class="list">
<li v-for="(item, i) in news" :key="i" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -42,11 +51,10 @@
import Setting from '@/setting' import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
import Breadcrumb from '@/components/breadcrumb' import Breadcrumb from '@/components/breadcrumb'
import RightColumns from '@/components/rightColumns'
import mixins from '@/mixins/article' import mixins from '@/mixins/article'
export default { export default {
mixins: [mixins], mixins: [mixins],
data () { data() {
return { return {
id: this.$route.query.articleId, id: this.$route.query.articleId,
columnId: '', columnId: '',
@ -58,25 +66,27 @@ export default {
value: 'id', value: 'id',
label: 'columnName' label: 'columnName'
}, },
news: [],
hots: []
} }
}, },
components: { components: {
Breadcrumb, Breadcrumb
RightColumns
}, },
watch: { watch: {
'$route' () { '$route'() {
this.id = this.$route.query.articleId this.id = this.$route.query.articleId
this.getInfo() this.getInfo()
} }
}, },
mounted () { mounted() {
this.getColumn() this.getColumn()
this.getArticle()
}, },
methods: { methods: {
// //
getInfo () { getInfo() {
this.$post(this.api.findArticle, Util.rsa(this.id)).then(({ data }) => { this.$post(`${this.api.findArticle}?id=${this.id}`).then(({ data }) => {
// //
const { columnName, path, id } = this.$route.query const { columnName, path, id } = this.$route.query
this.routes = [ this.routes = [
@ -95,13 +105,13 @@ export default {
this.columnId = data.columnId this.columnId = data.columnId
data.bannerImg || this.getBanner(this.columns) data.bannerImg || this.getBanner(this.columns)
if (this.columnBanner) this.form.bannerImg = this.columnBanner if (this.columnBanner) this.form.bannerImg = this.columnBanner
}).catch(err => { }) }).catch(err => {})
// +1 // +1
this.$post(this.api.articlePreview, Util.rsa(this.id)).then(res => { }).catch(err => { }) this.$post(`${this.api.articlePreview}?contentId=${this.id}`).then(({ data }) => {}).catch(err => {})
}, },
// banner // banner
getBanner (data) { getBanner(data) {
this.columnBanner = '' this.columnBanner = ''
for (const e of data) { for (const e of data) {
if (e.columnBanner) this.columnBanner = e.columnBanner if (e.columnBanner) this.columnBanner = e.columnBanner
@ -113,20 +123,34 @@ export default {
} }
}, },
// //
getColumn () { getColumn() {
this.$post(this.api.listWithTreeMenuVisible, Util.rsa({ this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.site, siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '', columnName: '',
templateId: '', templateId: '',
typeId: '', typeId : '',
isSort: 1 isSort: 1
})).then(({ data }) => { }).then(({ data }) => {
this.columns = data this.columns = data
this.getInfo() this.getInfo()
}).catch(err => { }) }).catch(err => {})
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = Util.removeTag(data)
}).catch(err => {})
},
//
getArticle() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site
}).then(({ data }) => {
this.news = Util.removeTag(data.records)
}).catch(res => {})
}, },
// //
download (e) { download(e) {
Util.downloadFile(e.fileName, e.filePath) Util.downloadFile(e.fileName, e.filePath)
} }
} }
@ -134,154 +158,129 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import './editor.css'; @import "./editor.css";
.content { .content {
width: 1200px; width: 1400px;
} }
.banner { .banner {
height: 280px; height: 280px;
padding: 123px 0 0 243px; padding: 123px 0 0 243px;
font-size: 48px; font-size: 48px;
color: #fff; color: #fff;
background: url(../../assets/images/intro-bg.png) 0 0/100% 100% no-repeat; background: url(../../assets/images/intro-bg.png) 0 0/100% 100% no-repeat;
object-fit: cover;
} }
.article { .article {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.left { .left {
width: 66%; width: 66%;
} }
h2 { h2 {
margin-bottom: 20px; margin-bottom: 20px;
font-size: 36px; font-size: 36px;
color: #1c1c1c; color: #1C1C1C;
} }
.meta { .meta {
margin: 10px 0; margin: 10px 0;
font-size: 18px; font-size: 18px;
font-weight: 600; font-weight: 600;
color: #333; color: #333;
} }
/deep/.des { /deep/.des {
a {
color: rgb(0, 0, 238);
word-wrap: break-word;
}
img { img {
max-width: 100%; max-width: 100%;
} }
ul {
padding-left: 40px;
list-style: disc;
li {
list-style: inherit;
}
}
ol {
padding-left: 40px;
list-style: decimal;
li {
list-style: inherit;
}
}
} }
.annex { .annex {
margin-top: 30px; margin-top: 30px;
h6 { h6 {
padding-left: 8px; padding-left: 8px;
margin-bottom: 20px; margin-bottom: 20px;
font-size: 16px; font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
line-height: 1; line-height: 1;
color: #333; color: #333;
border-left: 4px solid #1583ff; border-left: 4px solid #1583FF;
} }
li { li {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 10px; margin-bottom: 10px;
} }
.name { .name {
margin-right: 8px; margin-right: 8px;
font-size: 14px; font-size: 14px;
} }
.download { .download {
color: #1583ff; color: #1583FF;
cursor: pointer; cursor: pointer;
} }
} }
h6 { h6 {
margin: 30px 0 10px; margin: 30px 0 10px;
font-size: 18px; font-size: 18px;
} }
.right {
.profile { width: 20%;
font-size: 16px; }
line-height: 1.5; .column {
width: 100%;
margin-bottom: 25px;
}
/deep/.el-tree-node__content {
height: 44px;
background-color: #E5EDF8;
border-bottom: 2px solid #fff;
}
/deep/.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
color: #fff;
background-color: #0f5698;
}
.list {
margin-bottom: 20px;
li {
padding: 16px 0;
border-bottom: 1px solid #D8D8D8;
}
.text {
margin-bottom: 5px;
font-size: 14px;
cursor: pointer;
&:hover {
color: $main-color;
}
}
.date {
font-size: 12px;
color: #999;
}
} }
} }
@media (max-width: 1420px) { @media (max-width: 1420px) {
.content { .content {
width: 98%; width: 98%;
} }
} }
@media (max-width: 1200px) { @media (min-width: 280px) and (max-width: 750px) {
.article {
/deep/.des {
img {
max-width: 100%;
height: 15rem;
}
}
}
.banner { .banner {
font-size: 1.5rem; height: 15rem;
} }
.article{
.article {
flex-direction: column; flex-direction: column;
.left{
.left {
width: 100%; width: 100%;
h2 { h2 {
font-size: 1.5rem; font-size: 1.5rem;
} }
} }
} .right{
width: 100%;
.article { .el-tree{
.des { display: none;
img {
height: 15rem !important;
} }
} }
} }
.right {
width: 100%;
}
} }
</style> </style>

@ -1,122 +1,71 @@
.mce-content-body:not([dir='rtl']) blockquote { .mce-content-body:not([dir=rtl]) blockquote {
padding: 8px 15px; padding: 8px 15px;
border-left: 0; border-left: 0;
background-color: #ededed; background-color: #ededed;
}
.mce-content-body p {
margin: 0;
} }
.tiny-wrap { .tiny-wrap {
/* width: 900px; */ /* width: 900px; */
margin: 0 auto; margin: 0 auto;
}
.tiny-wrap .blue {
color: #1583ff;
} }
.tiny-wrap blockquote p { .tiny-wrap blockquote p {
margin: 0; margin: 0;
font-style: italic; font-style: italic;
} }
.tiny-wrap .block { .tiny-wrap .block {
margin-bottom: 20px; margin-bottom: 20px;
overflow: hidden; overflow: hidden;
} }
.tiny-wrap .block .fl { .tiny-wrap .block .fl {
float: left; float: left;
margin: 0 20px 0 0; margin: 0 20px 0 0;
} }
.tiny-wrap .block .fr { .tiny-wrap .block .fr {
float: right; float: right;
margin: 0 0 0 20px; margin: 0 0 0 20px;
} }
.tiny-wrap .block p { .tiny-wrap .block p {
margin: 0 0 10px; margin: 0 0 10px;
font-size: 19px; font-size: 19px;
font-weight: 400; font-family: SFProDisplay;
color: #101010; font-weight: 400;
line-height: 32px; color: #101010;
white-space: pre-wrap; line-height: 32px;
} }
.tiny-wrap .en-block p, .tiny-wrap .en-block p, .tiny-wrap .en-block .img-des {
.tiny-wrap .en-block .img-des { font-family: ProximaNova;
letter-spacing: -0.0135em; letter-spacing: -.0135em;
line-height: 1.5em; line-height: 1.5em;
} }
.tiny-wrap .block .tiny-title { .tiny-wrap .block .tiny-title {
margin: 10px 0; margin: 10px 0;
font-size: 24px; font-size: 24px;
font-weight: 500; font-family: SFProDisplay;
color: #101010; font-weight: 500;
line-height: 32px; color: #101010;
line-height: 32px;
} }
.tiny-wrap .quote { .tiny-wrap .quote {
padding: 15px; padding: 15px;
margin-bottom: 10px; margin-bottom: 10px;
font-size: 16px; font-size: 16px;
font-style: italic; font-style: italic;
border: 1px solid #e3e3e3; border: 1px solid #e3e3e3;
background-color: #f1f1f1; background-color: #f1f1f1;
} }
.tiny-wrap .img-wrap { .tiny-wrap .img-wrap {
text-align: center; text-align: center;
} }
.tiny-wrap .img-wrap img { .tiny-wrap .img-wrap img {
max-width: 600px; max-width: 600px;
max-height: 600px; max-height: 600px;
} }
.tiny-wrap .block .img-des { .tiny-wrap .block .img-des {
margin: 10px 0 0; margin: 10px 0 0;
font-size: 14px; font-size: 14px;
color: #8d8d8d; color: #8d8d8d;
text-align: center; text-align: center;
} }
.tiny-wrap .block .pic { .tiny-wrap .block .pic {
width: 300px; width: 300px;
height: 190px; height: 190px;
} }
.tiny-wrap .people {
display: flex;
align-items: center;
margin-bottom: 30px;
}
.tiny-wrap .people .pic {
max-width: 400px;
}
.tiny-wrap .people .texts {
margin-left: 50px;
}
.tiny-wrap .people h6 {
font-size: 24px;
font-weight: 500;
color: #333333;
}
.tiny-wrap .people h6 {
margin-top: 20px;
font-size: 18px;
color: #333;
line-height: 35px;
}
.tiny-wrap .p-title {
display: flex;
align-items: center;
margin: 0 0 10px;
font-size: 22px;
font-weight: 400;
color: #333;
}
.tiny-wrap .p-title:before {
content: '';
width: 5px;
height: 19px;
margin-right: 8px;
background: #1583ff;
border-radius: 4px;
}
@media (max-width: 640px) {
.tiny-wrap .people {
flex-direction: column;
}
.tiny-wrap .people .texts {
margin-left: 0;
}
}

@ -1,37 +1,45 @@
<template> <template>
<div class="wrap"> <div v-show="loaded" class="wrap">
<div v-show="loaded"> <div v-if="form.articleTemplate !== 23" class="banner" :style="{backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : ''}">
<!-- 人物详情不展示banner --> {{ form.columnName }}
<div v-if="form.articleTemplate !== 23 && !isPeople" class="banner" </div>
:style="{ backgroundImage: form.bannerImg ? ('url(' + form.bannerImg + ')') : '' }"> <div class="content">
{{ form.columnName }} <Breadcrumb ref="breadcrumb" :data.sync="routes"/>
</div> <div class="article">
<div class="content"> <div class="left">
<Breadcrumb ref="breadcrumb" :data.sync="routes" /> <h2>{{ form.title }}</h2>
<div class="article"> <div class="meta">{{ form.source && form.source + ' | ' }} {{ form.author && form.author + ' | ' }} {{ form.totalBrowsing }} {{$t('column.views')}} | {{ form.releaseTime }}</div>
<div class="left"> <div class="meta">{{ form.edit && $t('column.edit') + ':' + form.edit }} {{ form.audit && ' | ' + $t('column.auditor') + ':' + form.audit }} {{ form.label && ' | ' + $t('column.label') + ':' + form.label }}</div>
<template v-if="!isPeople"> <p class="brief">{{ form.summary }}</p>
<h2>{{ form.title }}</h2> <div class="des" v-html="form.mainBody"></div>
<div class="meta">{{ form.source && form.source + ' | ' }} {{ form.author && form.author + ' | ' }} {{ <div v-if="form.fileList && form.fileList.length" class="annex">
form.releaseTime }}</div> <h6>{{$t('column.attachmentDownload')}}</h6>
<div class="meta">{{ form.edit && $t('column.edit') + ':' + form.edit }} {{ form.audit && ' | ' + <ul class="files">
$t('column.auditor') + ':' + form.audit }} {{ form.label && ' | ' + $t('column.label') + ':' + <li v-for="(file, i) in form.fileList" :key="i">
form.label <span class="name">{{ file.fileName }}</span>
}}</div> <span class="download" @click="download(file)">{{$t('column.download')}}</span>
</template> </li>
<p v-if="form.summary" class="brief">{{ form.summary }}</p> </ul>
<div class="des" id="mainBody" v-html="form.mainBody"></div>
<div v-if="form.fileList && form.fileList.length" class="annex">
<h6>{{ $t('column.attachmentDownload') }}</h6>
<ul class="files">
<li v-for="(file, i) in form.fileList" :key="i">
<span class="name">{{ file.fileName }}</span>
<span class="download" @click="download(file)">{{ $t('column.download') }}</span>
</li>
</ul>
</div>
</div> </div>
<RightColumns ref="right" :party="isParty" /> </div>
<div class="right">
<el-tree class="column" ref="column" :data="columns" highlight-current :expand-on-click-node="false" :props="defaultProps" node-key="id" @node-click="columnTo"></el-tree>
<p class="l-title">{{$t('column.hot')}}</p>
<ul class="list">
<li v-for="(item, i) in hots" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
<p class="l-title">{{$t('column.latestNews')}}</p>
<ul class="list">
<li v-for="(item, i) in news" :key="i" :title="item.title" @click="toArtice(item)">
<p class="text">{{ item.title }}</p>
<span class="date">{{ item.releaseTime }}</span>
</li>
</ul>
</div> </div>
</div> </div>
</div> </div>
@ -39,143 +47,125 @@
</template> </template>
<script> <script>
import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
import Breadcrumb from '@/components/breadcrumb' import Breadcrumb from '@/components/breadcrumb'
import RightColumns from '@/components/rightColumns'
import mixins from '@/mixins/article' import mixins from '@/mixins/article'
export default { export default {
mixins: [mixins], mixins: [mixins],
data () { data() {
return { return {
id: this.$route.query.articleId, id: this.$route.query.articleId,
columnId: +this.$route.query.id,
preview: this.$route.query.preview,
loaded: false, loaded: false,
routes: [], routes: [],
columnId: '',
form: {}, form: {},
columnBanner: '', columnBanner: '',
isParty: 0, // columns: [],
isPeople: 0, // defaultProps: {
gotBanner: 0 value: 'id',
label: 'columnName'
},
news: [],
hots: []
} }
}, },
components: { components: {
Breadcrumb, Breadcrumb
RightColumns
}, },
watch: { watch: {
'$route' () { '$route'() {
this.id = this.$route.query.articleId this.id = this.$route.query.articleId
this.getInfo() this.getInfo()
} }
}, },
mounted () { mounted() {
this.getColumnInfo() this.getColumn()
this.getArticle()
}, },
methods: { methods: {
// //
getInfo () { getInfo() {
// this.id && this.$post(`${this.api.findArticle}?id=${this.id}`).then(({ data }) => {
let cache = localStorage.getItem('article') //
if (this.preview && cache) { const { columnName, path, id } = this.$route.query
cache = JSON.parse(cache)
const temId = cache.articleTemplate
this.form = cache
this.routes = [ this.routes = [
{ {
name: cache.columnName, name: columnName || data.columnName,
path: path ? '/' + path : '',
query: {
id: id || data.columnId
}
}, },
{ {
name: cache.title name: data.title
} }
] ]
if (temId == 69) this.isParty = 1 // articleTemplate=69class //
if (temId == 72) this.isPeople = 1 // articleTemplate=72 if (data.isDisable) {
if (cache.releaseTime) cache.releaseTime = cache.releaseTime.split(' ')[0] this.$router.back()
this.loaded = true } else {
} else { const temId = data.articleTemplate
this.$post(this.api.findArticle, Util.rsa(this.id)).then(async ({ data }) => { let path = `?articleId=${this.id}&id=${id}&columnName=${columnName || ''}&path=${path || ''}`
// if (temId === 25 || temId === 26) { // /
const { columnName, path, id } = this.$route.query this.$router.replace((temId === 25 ? '/article/activity' : '/publish/show') + path)
this.routes = [
{
name: columnName || data.columnName,
path: path ? '/' + path : '',
query: {
id: id || data.columnId
}
},
{
name: data.columnName
}
]
//
if (data.isDisable || !data.isRelease) {
this.$router.back()
} else { } else {
const temId = data.articleTemplate data.releaseTime = data.releaseTime.split(' ')[0]
let path = `?articleId=${this.id}&id=${id}&columnName=${columnName || ''}&siteId=${data.siteId}&path=${path || ''}` this.form = data
if (temId === 25 || temId === 26) { // / this.columnId = data.columnId
this.$router.replace((temId === 25 ? '/article/activity' : '/publish/show') + path) // banner
} else { if (!data.bannerImg) {
if (temId == 69) this.isParty = 1 // articleTemplate=69class this.getBanner(this.columns)
if (temId == 72) this.isPeople = 1 // articleTemplate=72 this.form.bannerImg = this.columnBanner || require('@/assets/images/article-banner.png')
data.releaseTime = data.releaseTime.split(' ')[0]
this.form = data
// tinymcebugpptext-indentfont-size2em
this.$nextTick(() => {
document.querySelectorAll('#mainBody p').forEach(e => {
try {
if (e.children.length && e.style.textIndent) {
e.style.fontSize = e.children[0].style.fontSize
}
} catch (e) { }
})
})
this.columnId = data.columnId
// banner
if (!data.bannerImg) {
const columns = await this.$post(this.api.listWithTree, Util.rsa({
siteId: this.site,
columnName: '',
templateId: '',
typeId: '',
isSort: 1
}))
this.getBanner(columns.data)
this.form.bannerImg = this.gotBanner ? this.columnBanner || require('@/assets/images/article-banner.png') : ''
}
// +1
this.$post(this.api.articlePreview, Util.rsa(this.id)).then(res => { }).catch(err => { })
this.loaded = true
} }
this.loaded = true
} }
}).catch(err => { }) }
} }).catch(err => {})
},
// // +1
getColumnInfo () { this.$post(`${this.api.articlePreview}?contentId=${this.id}`).then(({ data }) => {}).catch(err => {})
this.columnId && this.$post(this.api.findColumn, Util.rsa(this.columnId))
.then(({ data }) => {
if (data.detailStyleId == 69) this.isParty = 1
})
.catch((res) => { });
}, },
// banner // banner
getBanner (data) { getBanner(data) {
for (const e of data) { for (const e of data) {
if (e.columnBanner && !this.gotBanner) this.columnBanner = e.columnBanner if (e.columnBanner) this.columnBanner = e.columnBanner
if (e.id == this.columnId) { if (e.id == this.columnId) {
this.gotBanner = 1
break break
} else { } else {
this.getBanner(e.children) this.getBanner(e.children)
} }
} }
}, },
//
getColumn() {
this.$post(this.api.listWithTreeMenuVisible, {
siteId: this.$route.query.siteId || this.$store.state.content.site,
columnName: '',
templateId: '',
typeId : '',
isSort: 1
}).then(({ data }) => {
this.columns = data
this.getInfo()
}).catch(err => {})
this.$post(`${this.api.hotContent}?siteId=${this.$route.query.siteId || this.$store.state.content.site}`).then(({ data }) => {
this.hots = Util.removeTag(data)
}).catch(err => {})
},
//
getArticle() {
this.$post(this.api.newlyPublishedArticles, {
pageNum: 1,
pageSize: 5,
siteId: this.$route.query.siteId || this.$store.state.content.site
}).then(({ data }) => {
this.news = Util.removeTag(data.records)
}).catch(res => {})
},
// //
download (e) { download(e) {
Util.downloadFile(e.fileName, e.filePath) Util.downloadFile(e.fileName, e.filePath)
}, },
} }
@ -183,161 +173,169 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import './editor.css'; @import "./editor.css";
.content { .content {
width: 1200px; width: 1400px;
/deep/ .el-breadcrumb { /deep/ .el-breadcrumb {
font-size: 0.98rem; font-size: 1rem;
} }
} }
.banner { .banner {
display: flex; height: 280px;
align-items: center; padding: 123px 0 0 243px;
height: 21.6rem; font-size: 48px;
padding-left: 10%;
font-size: 2rem;
font-weight: 600; font-weight: 600;
color: #fff; color: #fff;
background: url(../../assets/images/intro-bg.png) center center no-repeat; background: url(../../assets/images/intro-bg.png) 0 0/100% 100% no-repeat;
object-fit: cover;
} }
.article { .article {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.left { .left {
width: 70%; width: 66%;
} }
h2 { h2 {
font-size: 1.9rem; font-size: 2.57rem;
color: #1c1c1c; color: #1C1C1C;
} }
.meta { .meta {
margin: 1rem 0; margin: 20px 0;
font-size: 0.88rem; font-size: 1rem;
color: #9b9b9b; color: #9B9B9B;
} }
.brief { .brief {
padding-bottom: 1.5rem; padding-bottom: 30px;
margin: 1rem 0; margin-bottom: 30px;
font-size: 1rem; font-size: 24px;
line-height: 1.6; line-height: 1.33;
color: #606060; color: #606060;
border-bottom: 1px solid #d8d8d8; border-bottom: 1px solid #D8D8D8;
} }
/deep/.des { /deep/.des {
// width: 100%;
// overflow: auto;
a {
color: rgb(0, 0, 238);
word-wrap: break-word;
}
img { img {
max-width: 100%; max-width: 100%;
object-fit: cover;
}
ul {
padding-left: 40px;
list-style: disc;
li {
list-style: inherit;
}
}
ol {
padding-left: 40px;
list-style: decimal;
li {
list-style: inherit;
}
} }
} }
.annex { .annex {
margin-top: 30px; margin-top: 30px;
h6 { h6 {
padding-left: 8px; padding-left: 8px;
margin-bottom: 20px; margin-bottom: 20px;
font-size: 16px; font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
line-height: 1; line-height: 1;
color: #333; color: #333;
border-left: 4px solid #1583ff; border-left: 4px solid #1583FF;
} }
li { li {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 10px; margin-bottom: 10px;
} }
.name { .name {
margin-right: 8px; margin-right: 8px;
font-size: 14px; font-size: 14px;
} }
.download { .download {
color: #1583ff; color: #1583FF;
cursor: pointer;
}
}
.right {
width: 20%;
/deep/ .el-tree-node__label{
font-size: 1rem;
}
}
.column {
width: 100%;
margin-bottom: 25px;
}
/deep/.el-tree-node__content {
height: 44px;
background-color: #E5EDF8;
border-bottom: 2px solid #fff;
}
/deep/.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
color: #fff;
background-color: #0f5698;
}
.list {
margin-bottom: 20px;
li {
padding: 16px 0;
border-bottom: 1px solid #D8D8D8;
}
.text {
margin-bottom: 5px;
font-size: 14px;
cursor: pointer; cursor: pointer;
&:hover {
color: $main-color;
}
}
.date {
font-size: 12px;
color: #999;
} }
} }
} }
@media (max-width: 1420px) { @media (max-width: 1420px) {
.content { .content {
width: 98%; width: 98%;
} }
} }
@media (max-width: 1200px ) {
.article {
flex-direction: column;
.left, .right{
width: 95%;
margin: 0 auto;
.el-tree{
position: fixed;
right: 10px;
top: 160px;
z-index: 9;;
width: 180px;
}
}
}
}
@media (min-width: 280px) and (max-width: 750px) {
@media (max-width: 1200px) {
.article { .article {
/deep/.des { /deep/.des {
img { img {
max-width: 100%; max-width: 100%;
max-height: 15rem; height: 15rem;
} }
} }
} }
.banner { .banner {
font-size: 1.5rem; font-size: 1.5rem;
} }
.article{
.article {
flex-direction: column; flex-direction: column;
.left{
.left {
width: 100%; width: 100%;
h2 { h2 {
font-size: 1.5rem; font-size: 1.5rem;
} }
} }
.right{
width: 100%;
.el-tree{
display: none;
}
}
} }
.article { .article {
.des { .des {
img { img{
height: 15rem !important; height: 15rem !important;
}
}
} }
}
.right {
width: 100%;
} }
} }
</style> </style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -3,30 +3,22 @@
<div class="articles"> <div class="articles">
<div class="top"> <div class="top">
<div class="search"> <div class="search">
<input ref="search" <input ref="search" type="text" :placeholder="$t('column.titlePlaceholder')" v-model="title">
type="text"
:placeholder="$t('column.titlePlaceholder')"
v-model="title">
<i class="el-icon-search icon"></i> <i class="el-icon-search icon"></i>
</div> </div>
<p class="result">{{ $i18n.locale === 'en' ? `Search results containing "${ title }"` : `包含 “${ title }” 的搜索结果` }} </p> <p class="result">包含 {{ title }} 的搜索结果</p>
</div> </div>
<ul v-if="articles.length" <ul v-if="articles.length" class="list">
class="list"> <li v-for="(item, i) in articles" :key="i">
<li v-for="(item, i) in articles"
:key="i">
<h6 @click="toArtice(item)">{{ item.title }}</h6> <h6 @click="toArtice(item)">{{ item.title }}</h6>
<div class="des" <div class="des" v-html="item.mainBody"></div>
v-html="item.mainBody"></div> <Breadcrumb :data.sync="item.routes"/>
<Breadcrumb :data.sync="item.routes" />
</li> </li>
</ul> </ul>
<div v-else <div v-else class="none">
class="none"> <img src="@/assets/images/none.png" alt="">
<img src="@/assets/images/none.png" <p class="text">没有找到您搜索的内容您可尝试搜索其他关键词</p>
alt="">
<p class="text">{{ $t('column.nothing') }}</p>
</div> </div>
</div> </div>
</div> </div>
@ -40,7 +32,7 @@ import mixins from '@/mixins/article'
import Breadcrumb from '@/components/breadcrumb' import Breadcrumb from '@/components/breadcrumb'
export default { export default {
mixins: [mixins], mixins: [mixins],
data () { data() {
return { return {
title: this.$store.state.content.keyword, title: this.$store.state.content.keyword,
searchTimer: null, searchTimer: null,
@ -50,23 +42,15 @@ export default {
components: { components: {
Breadcrumb Breadcrumb
}, },
computed: {
...mapState('content', [
'keyword'
]),
},
watch: { watch: {
keyword () { title() {
this.title = this.keyword
},
title () {
clearTimeout(this.searchTimer) clearTimeout(this.searchTimer)
this.searchTimer = setTimeout(() => { this.searchTimer = setTimeout(() => {
this.getArticle() this.getArticle()
}, 500) }, 500)
} }
}, },
mounted () { mounted() {
this.getArticle() this.getArticle()
}, },
methods: { methods: {
@ -74,13 +58,16 @@ export default {
'setKeyword' 'setKeyword'
]), ]),
// //
getArticle () { getArticle() {
this.$post(this.api.newlyPublishedArticles, Util.rsa({ this.setKeyword('')
siteId: this.site, this.$post(this.api.newlyPublishedArticles, {
siteId: this.$route.query.siteId || this.site,
pageNum: 1, pageNum: 1,
pageSize: 1000, pageSize: 1000,
title: encodeURI(this.title) title: this.title
})).then(({ data }) => { }).then(({ data }) => {
const list = Util.removeTag(data.records) const list = Util.removeTag(data.records)
// //
list.map(e => { list.map(e => {
@ -97,7 +84,7 @@ export default {
] ]
}) })
this.articles = list this.articles = list
}).catch(res => { }) }).catch(res => {})
}, },
} }
}; };
@ -105,93 +92,95 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.wrap { .wrap {
background: url(../../assets/images/result-bg1.png) no-repeat, url(../../assets/images/result-bg2.png) bottom right/auto no-repeat; background: url(../../assets/images/result-bg1.png) no-repeat,
background-color: #fff; url(../../assets/images/result-bg2.png) bottom right/auto no-repeat;
background-color: #fff;
} }
.articles { .articles {
width: 70%; width: 1000px;
padding-top: 47px; padding-top: 47px;
margin: 0 auto; margin: 0 auto;
} }
.top { .top {
display: flex; display: flex;
align-items: center; align-items: center;
.result { .result {
font-size: 18px; font-size: 18px;
color: #969696; color: #969696;
} }
} }
.search { .search {
position: relative; position: relative;
display: inline-flex; display: inline-flex;
height: 62px; height: 62px;
margin-right: 30px; margin-right: 30px;
border-radius: 6px; border-radius: 6px;
overflow: hidden; overflow: hidden;
input { input {
width: 510px; width: 510px;
padding: 0 20px; padding: 0 20px;
font-size: 18px; font-size: 18px;
color: #333; color: #333;
border: 0; border: 0;
outline: none; outline: none;
background: #f7f7f7; background: #F7F7F7;
} }
.icon { .icon {
position: absolute; position: absolute;
top: 17px; top: 17px;
right: 15px; right: 15px;
font-size: 26px; font-size: 26px;
color: #ccc; color: #ccc;
border-radius: 0px 6px 6px 0px; border-radius: 0px 6px 6px 0px;
} }
} }
.list { .list {
li { li {
margin-top: 30px; margin-top: 30px;
border-bottom: 1px dashed #e3e3e3; border-bottom: 1px dashed #e3e3e3;
} }
h6 { h6 {
margin-bottom: 10px; margin-bottom: 10px;
font-size: 22px; font-size: 22px;
color: #1583ff; color: #1583FF;
line-height: 30px; line-height: 30px;
cursor: pointer; cursor: pointer;
} }
.des { .des {
font-size: 18px; font-size: 18px;
line-height: 36px; line-height: 36px;
color: #333; color: #333;
@include mul-ellipsis(2); @include mul-ellipsis(2);
} }
.breadcrumb { .breadcrumb {
margin: 15px 0 30px; margin: 15px 0 30px;
} }
} }
.none { .none {
margin-top: 118px; margin-top: 118px;
text-align: center; text-align: center;
.text { .text {
margin-top: 59px; margin-top: 59px;
font-size: 18px; font-size: 18px;
color: #333; color: #333;
} }
} }
@media (max-width: 640px) { @media (min-width: 280px) and (max-width: 750px) {
.articles { .articles{
width: 90%; width: 100%;
.top{
flex-direction: column;
.search{
width: 95%;
margin: 0 auto;
}
} }
.top { .none{
flex-direction: column; margin-top: 50px;
padding: 0 10px; .text{
} font-size: .5rem;
.search { }
width: 100%;
margin-right: 0;
margin-bottom: 20px;
input {
width: 100%;
}
} }
}
} }
</style> </style>

@ -1,193 +0,0 @@
<template>
<!-- 联系我们 -->
<div class="wrap">
<div class="single-banner">
<img class="banner-img" :src="modules[0].form.pic" alt="" />
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
</div>
</div>
<div class="block">
<div class="inner">
<Breadcrumb ref="breadcrumb" :data.sync="routes" />
<div class="contact">
<div class="fields">
<h6>{{ modules[1].form.title }}</h6>
<div v-html="modules[1].form.info"></div>
</div>
<img :src="modules[2].form.pic" alt="" class="pic">
<el-table :data="modules[3].list" class="patent-table" ref="table" stripe header-align="center">
<el-table-column prop="dep" label="部门" align="center" min-width="150"></el-table-column>
<!-- <el-table-column prop="contacts" label="联系人" align="center" min-width="100"></el-table-column> -->
<el-table-column prop="phone" align="center" min-width="150">
<template slot="header" slot-scope="scope">
<img src="@/assets/images/tel1.png" alt=""> 电话
</template>
</el-table-column>
<el-table-column prop="email" align="center" min-width="150">
<template slot="header" slot-scope="scope">
<img style="width: 20px" src="@/assets/images/email-white.png" alt=""> 邮箱
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
</div>
</template>
<script>
import mixins from '@/mixins/page'
import Setting from '@/setting'
import Util from '@/libs/util'
import Breadcrumb from '@/components/breadcrumb'
import WOW from 'wow.js'
export default {
mixins: [mixins],
data () {
return {
routes: [],
list: []
};
},
components: {
Breadcrumb
},
mounted () {
new WOW().init();
this.getColumn()
},
methods: {
//
getInfo () {
// /
this.$post(this.api[this.preview ? 'getRedisCache' : 'findPage'], Util.rsa(this.id)).then(({ data }) => {
if (data.length) {
// state1theEditedJson稿0jsonBeforeEditing
const json = JSON.parse(
this.preview
? data
: data[data.length - 1][
data[data.length - 1].state ? "theEditedJson" : "jsonBeforeEditing"
]
);
this.modules = json;
console.log("🚀 ~ file: index.vue ~ line 180 ~ this.$post ~ json", json);
}
})
.catch((err) => { });
},
// id
getParent (data, id) {
for (const e of data) {
if (e.id == id) {
this.routes.push({
name: e.columnName,
query: {
id: e.id
}
})
break
} else if (e.children.length) {
this.routes.push({
name: e.columnName,
query: {
id: e.id
}
})
this.getParent(e.children, id)
}
}
},
//
getColumn () {
this.$post(this.api.oneLevelChecksThemAll, Util.rsa({
id: this.id,
isSort: 1,
siteId: this.site
})).then(({ data }) => {
this.getParent(data, this.id)
}).catch(err => { })
},
},
};
</script>
<style lang="scss" scoped>
@import url(../../plugins/wow/animate.css);
@import '../../styles/page/page.scss';
.single-banner {
.banner-img {
height: 21.6rem;
}
.texts {
h6 {
font-size: 2.16rem;
margin-bottom: 0.95rem;
}
.banner-des {
font-size: 0.96rem;
}
}
}
.block {
padding: 2rem 0;
background: url(https://www.iasf.ac.cn/images/contactUs/3.png) 0 130px no-repeat,
url(https://www.iasf.ac.cn/images/contactUs/4.png) bottom right no-repeat;
background-color: #f7f8fa;
}
.inner {
.contact {
padding: 3rem 6rem;
background-color: #fff;
}
.fields {
position: relative;
padding: 2rem;
border: 4px solid #f9f9f9;
h6 {
position: absolute;
top: -16px;
left: 60px;
font-size: 1.1rem;
color: #333;
background-color: #fff;
}
.text {
font-size: 1rem;
color: #333;
line-height: 1.6;
}
}
.pic {
width: 100%;
margin: 2rem 0 1.5rem;
}
}
/deep/.patent-table {
thead tr,
thead th {
color: #fff;
background-color: #1583ff;
}
}
@media (max-width: 1200px) {
.inner {
.contact {
padding: 3rem 1rem;
}
}
}
</style>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save