diff --git a/bluewhale/bluewhale/settings.py b/bluewhale/bluewhale/settings.py
index 70440a3..d99324d 100644
--- a/bluewhale/bluewhale/settings.py
+++ b/bluewhale/bluewhale/settings.py
@@ -87,13 +87,18 @@ WSGI_APPLICATION = 'bluewhale.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
+# ENV variables
+# export DB_HOST=127.0.0.1
+# export DB_USER=bluewhale
+# export DB_PASSWORD=bluewhale
+# export DB_DATABASE=bluewhale
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
- 'NAME': 'bluewhale',
- 'USER': 'bluewhale',
- 'PASSWORD': 'bluewhale',
- 'HOST': '127.0.0.1',
+ 'NAME': os.getenv('DB_DATABASE', 'bluewhale'),
+ 'USER': os.getenv('DB_USER', 'bluewhale'),
+ 'PASSWORD': os.getenv('DB_PASSWORD', 'bluewhale'),
+ 'HOST': os.getenv('DB_HOST', '127.0.0.1'),
'PORT': '3306',
'OPTIONS': {
'charset': 'utf8mb4',
diff --git a/client/.editorconfig b/client/.editorconfig
index c24743d..97a239d 100644
--- a/client/.editorconfig
+++ b/client/.editorconfig
@@ -1,4 +1,4 @@
-[*.{js,jsx,ts,tsx,vue}]
+[*.{js,jsx,ts,tsx,vue,scss}]
indent_style = space
indent_size = 2
end_of_line = lf
diff --git a/client/package-lock.json b/client/package-lock.json
index 6fb85d6..514bc03 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -1544,11 +1544,6 @@
"integrity": "sha1-RCsh9BlCesqooxBuvF1zNRxAcAI=",
"dev": true
},
- "@tinymce/tinymce-vue": {
- "version": "3.2.8",
- "resolved": "https://registry.npm.taobao.org/@tinymce/tinymce-vue/download/@tinymce/tinymce-vue-3.2.8.tgz?cache=0&sync_timestamp=1610428833329&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40tinymce%2Ftinymce-vue%2Fdownload%2F%40tinymce%2Ftinymce-vue-3.2.8.tgz",
- "integrity": "sha1-AUVxtS7I+oNmWn+oh79lFAIH3nE="
- },
"@types/anymatch": {
"version": "1.3.1",
"resolved": "https://registry.npm.taobao.org/@types/anymatch/download/@types/anymatch-1.3.1.tgz",
@@ -2176,6 +2171,17 @@
"unique-filename": "^1.1.1"
}
},
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+ "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
"cliui": {
"version": "6.0.0",
"resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1604880226973&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-6.0.0.tgz",
@@ -2202,6 +2208,25 @@
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
"dev": true
},
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
+ "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+ "dev": true,
+ "optional": true
+ },
+ "loader-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
+ "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
@@ -2218,6 +2243,16 @@
"minipass": "^3.1.1"
}
},
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1611394404603&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+ "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
"terser-webpack-plugin": {
"version": "2.3.8",
"resolved": "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-2.3.8.tgz",
@@ -2235,6 +2270,18 @@
"webpack-sources": "^1.4.3"
}
},
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.2.0",
+ "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.2.0.tgz?cache=0&sync_timestamp=1616796537201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.2.0.tgz",
+ "integrity": "sha1-BGpTMI3Ufljv4g3ewe3sAnzjtG4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ }
+ },
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
@@ -2738,7 +2785,6 @@
"version": "1.0.10",
"resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
"integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
- "dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
@@ -3013,6 +3059,27 @@
"object.assign": "^4.1.0"
}
},
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1618851907522&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz",
+ "integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw="
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
+ }
+ }
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
@@ -8836,6 +8903,14 @@
"verror": "1.10.0"
}
},
+ "katex": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npm.taobao.org/katex/download/katex-0.6.0.tgz",
+ "integrity": "sha1-EkGOCRIcBckgQbazuftrqyE8tvM=",
+ "requires": {
+ "match-at": "^0.1.0"
+ }
+ },
"killable": {
"version": "1.0.1",
"resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz",
@@ -8889,6 +8964,14 @@
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
+ "linkify-it": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npm.taobao.org/linkify-it/download/linkify-it-1.2.4.tgz",
+ "integrity": "sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo=",
+ "requires": {
+ "uc.micro": "^1.0.1"
+ }
+ },
"lint-staged": {
"version": "9.5.0",
"resolved": "https://registry.npm.taobao.org/lint-staged/download/lint-staged-9.5.0.tgz",
@@ -9633,12 +9716,105 @@
"object-visit": "^1.0.0"
}
},
+ "markdown-it": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npm.taobao.org/markdown-it/download/markdown-it-6.1.1.tgz?cache=0&sync_timestamp=1618575147599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmarkdown-it%2Fdownload%2Fmarkdown-it-6.1.1.tgz",
+ "integrity": "sha1-ztA39Ec+6fUVOsQU933IPJG6knw=",
+ "requires": {
+ "argparse": "^1.0.7",
+ "entities": "~1.1.1",
+ "linkify-it": "~1.2.2",
+ "mdurl": "~1.0.1",
+ "uc.micro": "^1.0.1"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz?cache=0&sync_timestamp=1611535322406&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-1.1.2.tgz",
+ "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY="
+ }
+ }
+ },
+ "markdown-it-abbr": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-abbr/download/markdown-it-abbr-1.0.4.tgz",
+ "integrity": "sha1-1mtTZFIcuz3Yqlna37ovtoZcj9g="
+ },
+ "markdown-it-deflist": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-deflist/download/markdown-it-deflist-2.1.0.tgz",
+ "integrity": "sha1-UNela5VEzYElL3YjvXheKKjc71w="
+ },
+ "markdown-it-emoji": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-emoji/download/markdown-it-emoji-1.4.0.tgz",
+ "integrity": "sha1-m+4OmpkKljupbfaYDE/dsF37Tcw="
+ },
+ "markdown-it-footnote": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-footnote/download/markdown-it-footnote-2.0.0.tgz",
+ "integrity": "sha1-FOnE9o/xLPNU+jZa43gnboEEypQ="
+ },
+ "markdown-it-ins": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-ins/download/markdown-it-ins-2.0.0.tgz",
+ "integrity": "sha1-papqMPHi9x6Ul1Z8/f9A8f3mdIM="
+ },
+ "markdown-it-katex": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-katex/download/markdown-it-katex-2.0.3.tgz",
+ "integrity": "sha1-17hqGuoLnWSW+rTnkZoY/e9YnDk=",
+ "requires": {
+ "katex": "^0.6.0"
+ }
+ },
+ "markdown-it-mark": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-mark/download/markdown-it-mark-2.0.0.tgz",
+ "integrity": "sha1-RqGqlHEFrtgYiXjgoBYXnkBPQsc="
+ },
+ "markdown-it-sub": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-sub/download/markdown-it-sub-1.0.0.tgz",
+ "integrity": "sha1-N1/WAm6ufdywEkl/ZBEZXqHjr+g="
+ },
+ "markdown-it-sup": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-sup/download/markdown-it-sup-1.0.0.tgz",
+ "integrity": "sha1-y5yf+RpSVawI8/09YyhuFd8KH8M="
+ },
+ "markdown-it-task-lists": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-task-lists/download/markdown-it-task-lists-2.1.1.tgz",
+ "integrity": "sha1-9o9NKsK61aLDc7qTCBoaaEhBcIg="
+ },
+ "markdown-it-toc-and-anchor": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/markdown-it-toc-and-anchor/download/markdown-it-toc-and-anchor-4.2.0.tgz",
+ "integrity": "sha1-0WEzJ8xjxh+CzWbLrFVk9NsSwOk=",
+ "requires": {
+ "clone": "^2.1.0",
+ "uslug": "^1.0.4"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/clone/download/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ }
+ }
+ },
"marked": {
"version": "1.2.7",
"resolved": "https://registry.npm.taobao.org/marked/download/marked-1.2.7.tgz?cache=0&sync_timestamp=1612382312415&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmarked%2Fdownload%2Fmarked-1.2.7.tgz",
"integrity": "sha1-bhS1lVgdIxnNzwM6JMqvQUVaAfs=",
"dev": true
},
+ "match-at": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/match-at/download/match-at-0.1.1.tgz",
+ "integrity": "sha1-JdBA0pF3dwTV5lVru3kjDsLeBUA="
+ },
"md5": {
"version": "2.3.0",
"resolved": "https://registry.npm.taobao.org/md5/download/md5-2.3.0.tgz?cache=0&sync_timestamp=1596362680344&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmd5%2Fdownload%2Fmd5-2.3.0.tgz",
@@ -9666,6 +9842,11 @@
"integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=",
"dev": true
},
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.nlark.com/mdurl/download/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+ },
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
@@ -13624,8 +13805,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"srcset": {
"version": "1.0.0",
@@ -14373,6 +14553,11 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.nlark.com/uc.micro/download/uc.micro-1.0.6.tgz",
+ "integrity": "sha1-nEEagCpAmpH8bPdAgbq6NLJEmaw="
+ },
"uglify-js": {
"version": "3.4.10",
"resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1611096871045&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz",
@@ -14473,6 +14658,11 @@
"integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=",
"dev": true
},
+ "unorm": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npm.taobao.org/unorm/download/unorm-1.6.0.tgz",
+ "integrity": "sha1-ApsolmH7pxTxqa9DnrUdmxbCBa8="
+ },
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
@@ -14609,6 +14799,14 @@
"integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
"dev": true
},
+ "uslug": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/uslug/download/uslug-1.0.4.tgz",
+ "integrity": "sha1-uaIvCRTgqGFAYz2swwLl9PpFBnc=",
+ "requires": {
+ "unorm": ">= 1.0.0"
+ }
+ },
"util": {
"version": "0.11.1",
"resolved": "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz?cache=0&sync_timestamp=1588238435623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil%2Fdownload%2Futil-0.11.1.tgz",
@@ -14829,84 +15027,30 @@
}
}
},
- "vue-loader-v16": {
- "version": "npm:vue-loader@16.1.2",
- "resolved": "https://registry.npm.taobao.org/vue-loader/download/vue-loader-16.1.2.tgz?cache=0&sync_timestamp=1608187944571&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-loader%2Fdownload%2Fvue-loader-16.1.2.tgz",
- "integrity": "sha1-XAO2xQ0qX5g8fOuhXFDXjKKymPQ=",
- "dev": true,
- "optional": true,
+ "vue-markdown": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npm.taobao.org/vue-markdown/download/vue-markdown-2.2.4.tgz",
+ "integrity": "sha1-2w93QXjzvJHuGMYm2Go6DS3iJ0Y=",
"requires": {
- "chalk": "^4.1.0",
- "hash-sum": "^2.0.0",
- "loader-utils": "^2.0.0"
+ "highlight.js": "^9.12.0",
+ "markdown-it": "^6.0.1",
+ "markdown-it-abbr": "^1.0.3",
+ "markdown-it-deflist": "^2.0.1",
+ "markdown-it-emoji": "^1.1.1",
+ "markdown-it-footnote": "^2.0.0",
+ "markdown-it-ins": "^2.0.0",
+ "markdown-it-katex": "^2.0.3",
+ "markdown-it-mark": "^2.0.0",
+ "markdown-it-sub": "^1.0.0",
+ "markdown-it-sup": "^1.0.0",
+ "markdown-it-task-lists": "^2.0.1",
+ "markdown-it-toc-and-anchor": "^4.1.2"
},
"dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.3.0.tgz",
- "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
- "dev": true,
- "optional": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "chalk": {
- "version": "4.1.0",
- "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1604053731560&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
- "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
- "dev": true,
- "optional": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
- "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
- "dev": true,
- "optional": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
- "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
- "dev": true,
- "optional": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
- "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
- "dev": true,
- "optional": true
- },
- "loader-utils": {
- "version": "2.0.0",
- "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
- "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
- "dev": true,
- "optional": true,
- "requires": {
- "big.js": "^5.2.2",
- "emojis-list": "^3.0.0",
- "json5": "^2.1.2"
- }
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1611394404603&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
- "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
- "dev": true,
- "optional": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
+ "highlight.js": {
+ "version": "9.18.5",
+ "resolved": "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.5.tgz",
+ "integrity": "sha1-0Yo1mGfzeME41oGe38KorNXymCU="
}
}
},
diff --git a/client/package.json b/client/package.json
index 746733b..17cf3aa 100644
--- a/client/package.json
+++ b/client/package.json
@@ -10,12 +10,13 @@
"mock": "prism mock ../openapi.yaml"
},
"dependencies": {
- "@tinymce/tinymce-vue": "^3.2.8",
"axios": "^0.21.1",
+ "babel-runtime": "^6.26.0",
"core-js": "^3.6.5",
"lodash": "^4.17.20",
"md5": "^2.3.0",
"vue": "^2.6.11",
+ "vue-markdown": "^2.2.4",
"vue-router": "^3.2.0",
"vuetify": "^2.4.0",
"vuex": "^3.4.0"
diff --git a/client/src/assets/global.scss b/client/src/assets/global.scss
new file mode 100644
index 0000000..1864c85
--- /dev/null
+++ b/client/src/assets/global.scss
@@ -0,0 +1,6 @@
+body {
+ height: 100%;
+}
+.full-height {
+ height: 100%;
+}
diff --git a/client/src/main.js b/client/src/main.js
index 9a03fe7..095c0e8 100644
--- a/client/src/main.js
+++ b/client/src/main.js
@@ -5,6 +5,7 @@ import router from './router';
import vuetify from './plugins/vuetify';
import store from './store';
import axios from './utils/request';
+import '@/assets/global.scss';
Vue.config.productionTip = false;
diff --git a/client/src/views/ArticleDetail.vue b/client/src/views/ArticleDetail.vue
index b9ec1b8..e91c664 100644
--- a/client/src/views/ArticleDetail.vue
+++ b/client/src/views/ArticleDetail.vue
@@ -1,11 +1,17 @@
-
+
+