mirror of https://github.com/halo-dev/halo-admin
Merge branch 'dev' of https://github.com/halo-dev/halo-admin into dev
commit
26ac96322b
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "halo-admin",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -1983,7 +1983,7 @@
|
|||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-5.5.2.tgz",
|
||||
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
|
@ -1996,7 +1996,7 @@
|
|||
},
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
|
@ -2025,7 +2025,7 @@
|
|||
},
|
||||
"cross-spawn": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
|
||||
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
|
@ -2105,14 +2105,14 @@
|
|||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz",
|
||||
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz",
|
||||
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
|
@ -2130,7 +2130,7 @@
|
|||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
|
@ -2150,7 +2150,7 @@
|
|||
},
|
||||
"yallist": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
|
||||
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
|
@ -2788,6 +2788,14 @@
|
|||
"integrity": "sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==",
|
||||
"dev": true
|
||||
},
|
||||
"aes-decrypter": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-1.0.3.tgz",
|
||||
"integrity": "sha1-nAa4pUNaWtCduTP4oBSvzxhMw04=",
|
||||
"requires": {
|
||||
"pkcs7": "^0.2.3"
|
||||
}
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
|
||||
|
@ -2926,7 +2934,7 @@
|
|||
"dependencies": {
|
||||
"normalize-path": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
|
||||
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -3094,13 +3102,13 @@
|
|||
"dependencies": {
|
||||
"inherits": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz",
|
||||
"integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
|
||||
"dev": true
|
||||
},
|
||||
"util": {
|
||||
"version": "0.10.3",
|
||||
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/util/download/util-0.10.3.tgz",
|
||||
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -3276,7 +3284,7 @@
|
|||
"dependencies": {
|
||||
"eslint-scope": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.1.tgz",
|
||||
"integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -3843,7 +3851,7 @@
|
|||
"dependencies": {
|
||||
"define-property": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
|
||||
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -4036,7 +4044,7 @@
|
|||
"dependencies": {
|
||||
"extend-shallow": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -4471,7 +4479,7 @@
|
|||
"dependencies": {
|
||||
"define-property": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
|
||||
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -6133,6 +6141,11 @@
|
|||
"entities": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"dom-walk": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
|
||||
"integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
|
||||
},
|
||||
"domain-browser": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
|
||||
|
@ -6390,6 +6403,11 @@
|
|||
"is-symbol": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"es5-shim": {
|
||||
"version": "4.5.13",
|
||||
"resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz",
|
||||
"integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw=="
|
||||
},
|
||||
"es6-object-assign": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "http://registry.npm.taobao.org/es6-object-assign/download/es6-object-assign-1.1.0.tgz",
|
||||
|
@ -6661,7 +6679,7 @@
|
|||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -6670,7 +6688,7 @@
|
|||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
||||
"dev": true
|
||||
}
|
||||
|
@ -7392,7 +7410,7 @@
|
|||
"dependencies": {
|
||||
"define-property": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
|
||||
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -7401,7 +7419,7 @@
|
|||
},
|
||||
"extend-shallow": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -8498,6 +8516,22 @@
|
|||
"integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
|
||||
"dev": true
|
||||
},
|
||||
"global": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
|
||||
"integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
|
||||
"requires": {
|
||||
"min-document": "^2.19.0",
|
||||
"process": "~0.5.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"process": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
|
||||
"integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
|
||||
}
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
||||
|
@ -9177,6 +9211,11 @@
|
|||
"integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
|
||||
"dev": true
|
||||
},
|
||||
"individual": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz",
|
||||
"integrity": "sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c="
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
|
||||
|
@ -9222,7 +9261,7 @@
|
|||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
|
@ -9251,7 +9290,7 @@
|
|||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
|
@ -9463,6 +9502,11 @@
|
|||
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
||||
"dev": true
|
||||
},
|
||||
"is-function": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
|
||||
"integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
|
||||
},
|
||||
"is-generator-fn": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz",
|
||||
|
@ -11720,7 +11764,7 @@
|
|||
"dependencies": {
|
||||
"find-cache-dir": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz",
|
||||
"integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -11731,7 +11775,7 @@
|
|||
},
|
||||
"find-up": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
|
||||
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -11741,7 +11785,7 @@
|
|||
},
|
||||
"path-exists": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
|
||||
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -11750,7 +11794,7 @@
|
|||
},
|
||||
"pkg-dir": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz",
|
||||
"integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -11918,6 +11962,11 @@
|
|||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"m3u8-parser": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-2.1.0.tgz",
|
||||
"integrity": "sha1-yBcDKewc1RXQ1Yu4t2LamJbLA2g="
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
|
||||
|
@ -12139,6 +12188,14 @@
|
|||
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
|
||||
"dev": true
|
||||
},
|
||||
"min-document": {
|
||||
"version": "2.19.0",
|
||||
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
|
||||
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
|
||||
"requires": {
|
||||
"dom-walk": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"mini-css-extract-plugin": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz",
|
||||
|
@ -12307,6 +12364,11 @@
|
|||
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
|
||||
"dev": true
|
||||
},
|
||||
"mux.js": {
|
||||
"version": "4.3.2",
|
||||
"resolved": "https://registry.npmjs.org/mux.js/-/mux.js-4.3.2.tgz",
|
||||
"integrity": "sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ=="
|
||||
},
|
||||
"mz": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
||||
|
@ -12459,7 +12521,7 @@
|
|||
"dependencies": {
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
|
||||
"dev": true
|
||||
}
|
||||
|
@ -13081,6 +13143,15 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"parse-headers": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
|
||||
"integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
|
||||
"requires": {
|
||||
"for-each": "^0.3.3",
|
||||
"string.prototype.trim": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"parse-json": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
||||
|
@ -13165,7 +13236,7 @@
|
|||
"dependencies": {
|
||||
"pify": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
|
||||
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
|
||||
"dev": true
|
||||
}
|
||||
|
@ -13210,6 +13281,11 @@
|
|||
"pinkie": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pkcs7": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-0.2.3.tgz",
|
||||
"integrity": "sha1-ItYGZtAQZcXyRDkJjkpIMEUic74="
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
|
||||
|
@ -14533,7 +14609,7 @@
|
|||
"dependencies": {
|
||||
"jsesc": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz",
|
||||
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
|
||||
"dev": true
|
||||
}
|
||||
|
@ -14837,6 +14913,14 @@
|
|||
"aproba": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"rust-result": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/rust-result/-/rust-result-1.0.0.tgz",
|
||||
"integrity": "sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=",
|
||||
"requires": {
|
||||
"individual": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"rw": {
|
||||
"version": "1.3.3",
|
||||
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
|
||||
|
@ -14874,6 +14958,14 @@
|
|||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"dev": true
|
||||
},
|
||||
"safe-json-parse": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz",
|
||||
"integrity": "sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=",
|
||||
"requires": {
|
||||
"rust-result": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"safe-regex": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "http://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz",
|
||||
|
@ -15082,7 +15174,7 @@
|
|||
"dependencies": {
|
||||
"extend-shallow": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -15234,7 +15326,7 @@
|
|||
},
|
||||
"define-property": {
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
|
||||
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -15243,7 +15335,7 @@
|
|||
},
|
||||
"extend-shallow": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
|
||||
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -15271,7 +15363,7 @@
|
|||
"dependencies": {
|
||||
"define-property": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
|
||||
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -15709,13 +15801,13 @@
|
|||
"dependencies": {
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
||||
"dev": true
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
|
@ -15911,7 +16003,7 @@
|
|||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-5.5.2.tgz",
|
||||
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
|
@ -15924,7 +16016,7 @@
|
|||
},
|
||||
"ajv-keywords": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz",
|
||||
"integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
|
@ -15953,14 +16045,14 @@
|
|||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz",
|
||||
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz",
|
||||
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
|
@ -16342,7 +16434,7 @@
|
|||
"dependencies": {
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
|
||||
"dev": true
|
||||
}
|
||||
|
@ -16395,6 +16487,11 @@
|
|||
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==",
|
||||
"dev": true
|
||||
},
|
||||
"tsml": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/tsml/-/tsml-1.0.1.tgz",
|
||||
"integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M="
|
||||
},
|
||||
"tty-browserify": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "http://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
|
||||
|
@ -16700,6 +16797,11 @@
|
|||
"requires-port": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"url-toolkit": {
|
||||
"version": "2.1.6",
|
||||
"resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.1.6.tgz",
|
||||
"integrity": "sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw=="
|
||||
},
|
||||
"use": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
|
||||
|
@ -16792,6 +16894,88 @@
|
|||
"extsprintf": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"video.js": {
|
||||
"version": "6.13.0",
|
||||
"resolved": "https://registry.npmjs.org/video.js/-/video.js-6.13.0.tgz",
|
||||
"integrity": "sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg==",
|
||||
"requires": {
|
||||
"babel-runtime": "^6.9.2",
|
||||
"global": "4.3.2",
|
||||
"safe-json-parse": "4.0.0",
|
||||
"tsml": "1.0.1",
|
||||
"videojs-font": "2.1.0",
|
||||
"videojs-ie8": "1.1.2",
|
||||
"videojs-vtt.js": "0.12.6",
|
||||
"xhr": "2.4.0"
|
||||
}
|
||||
},
|
||||
"videojs-contrib-hls": {
|
||||
"version": "5.15.0",
|
||||
"resolved": "https://registry.npmjs.org/videojs-contrib-hls/-/videojs-contrib-hls-5.15.0.tgz",
|
||||
"integrity": "sha512-18zbMYZ0XRBKTPEayA9bFTWWrqhT9b4G8+zf0czJLD7Epe5PcK1I/3dflTHQeQ5rwlWir+/XnFU3sMg/B2MMcw==",
|
||||
"requires": {
|
||||
"aes-decrypter": "1.0.3",
|
||||
"global": "^4.3.0",
|
||||
"m3u8-parser": "2.1.0",
|
||||
"mux.js": "4.3.2",
|
||||
"url-toolkit": "^2.1.3",
|
||||
"video.js": "^5.19.1 || ^6.2.0",
|
||||
"videojs-contrib-media-sources": "4.7.2",
|
||||
"webwackify": "0.1.6"
|
||||
}
|
||||
},
|
||||
"videojs-contrib-media-sources": {
|
||||
"version": "4.7.2",
|
||||
"resolved": "https://registry.npmjs.org/videojs-contrib-media-sources/-/videojs-contrib-media-sources-4.7.2.tgz",
|
||||
"integrity": "sha512-e6iCHWBFuV05EGo7v+pS9iepObXnJ9joms467gzi8ZjpKVb3ifha9M0Ja24Rd8JfvYpzjltsgDVtGFDvIg4hQQ==",
|
||||
"requires": {
|
||||
"global": "^4.3.0",
|
||||
"mux.js": "4.3.2",
|
||||
"video.js": "^5.17.0 || ^6.2.0",
|
||||
"webwackify": "0.1.6"
|
||||
}
|
||||
},
|
||||
"videojs-flash": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/videojs-flash/-/videojs-flash-2.2.0.tgz",
|
||||
"integrity": "sha512-V+7MOQGx6t6y260GvCyNL3AlMKRy7H/BEtEqgOjeAqguBgeb+GUOmnczOyzXmHF4VyaoRS4ZDT3Qz2gF596j5w==",
|
||||
"requires": {
|
||||
"global": "^4.3.2",
|
||||
"video.js": "^6 || ^7",
|
||||
"videojs-swf": "5.4.2"
|
||||
}
|
||||
},
|
||||
"videojs-font": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-2.1.0.tgz",
|
||||
"integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
|
||||
},
|
||||
"videojs-hotkeys": {
|
||||
"version": "0.2.25",
|
||||
"resolved": "https://registry.npmjs.org/videojs-hotkeys/-/videojs-hotkeys-0.2.25.tgz",
|
||||
"integrity": "sha512-XgMjWiqGlmAjuHtpP529A2voVh++z46FSD0XeSy+65yeuTZOd+w2CJmfrL4jPpGm+MME5l9lOLfVpoEeDaBa1Q=="
|
||||
},
|
||||
"videojs-ie8": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/videojs-ie8/-/videojs-ie8-1.1.2.tgz",
|
||||
"integrity": "sha1-oj09hgitcZK2nGB3/E64SJmNNdk=",
|
||||
"requires": {
|
||||
"es5-shim": "^4.5.1"
|
||||
}
|
||||
},
|
||||
"videojs-swf": {
|
||||
"version": "5.4.2",
|
||||
"resolved": "https://registry.npmjs.org/videojs-swf/-/videojs-swf-5.4.2.tgz",
|
||||
"integrity": "sha512-FGg+Csioa8/A/EacvFefBdb9Z0rSiMlheHDunZnN3xXfUF43jvjawcWFQnZvrv1Cs1nE1LBrHyUZjF7j2mKOLw=="
|
||||
},
|
||||
"videojs-vtt.js": {
|
||||
"version": "0.12.6",
|
||||
"resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz",
|
||||
"integrity": "sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ==",
|
||||
"requires": {
|
||||
"global": "^4.3.1"
|
||||
}
|
||||
},
|
||||
"viser": {
|
||||
"version": "2.4.6",
|
||||
"resolved": "https://registry.npmjs.org/viser/-/viser-2.4.6.tgz",
|
||||
|
@ -17056,6 +17240,18 @@
|
|||
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
|
||||
"dev": true
|
||||
},
|
||||
"vue-video-player": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/vue-video-player/-/vue-video-player-5.0.2.tgz",
|
||||
"integrity": "sha512-IZXeRGGSX4YIp54G0Q5cB7iqh6Ok6Dpa2jRkjdyvMWw7MShJuh54/d5QNb1CZ+CvZUzX/TH7osnpir7mBNcFvQ==",
|
||||
"requires": {
|
||||
"object-assign": "^4.1.1",
|
||||
"video.js": "^6.6.0",
|
||||
"videojs-contrib-hls": "^5.12.2",
|
||||
"videojs-flash": "^2.1.0",
|
||||
"videojs-hotkeys": "^0.2.20"
|
||||
}
|
||||
},
|
||||
"vuejs-logger": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/vuejs-logger/-/vuejs-logger-1.5.3.tgz",
|
||||
|
@ -17555,6 +17751,11 @@
|
|||
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
|
||||
"dev": true
|
||||
},
|
||||
"webwackify": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/webwackify/-/webwackify-0.1.6.tgz",
|
||||
"integrity": "sha512-pGcw1T3HpNnM/UTRQqqRkkkzythSLts05mB+7Gr00B+0VbL0m39dFL5g20rSIEUt9Wrpw+/8k+snxRlUFHhcqA=="
|
||||
},
|
||||
"whatwg-encoding": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
|
||||
|
@ -17687,6 +17888,17 @@
|
|||
"async-limiter": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"xhr": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz",
|
||||
"integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=",
|
||||
"requires": {
|
||||
"global": "~4.3.0",
|
||||
"is-function": "^1.0.1",
|
||||
"parse-headers": "^2.0.0",
|
||||
"xtend": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"xml-name-validator": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
|
||||
|
@ -17696,8 +17908,7 @@
|
|||
"xtend": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
||||
"dev": true
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
|
||||
},
|
||||
"y18n": {
|
||||
"version": "4.0.0",
|
||||
|
|
|
@ -698,3 +698,14 @@ body {
|
|||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.post-thum {
|
||||
.img {
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.post-thum-remove {
|
||||
margin-top: 16px;
|
||||
}
|
||||
}
|
|
@ -10,7 +10,8 @@ import {
|
|||
DEFAULT_FIXED_HEADER_HIDDEN,
|
||||
DEFAULT_FIXED_SIDEMENU,
|
||||
DEFAULT_CONTENT_WIDTH_TYPE,
|
||||
USER
|
||||
USER,
|
||||
API_URL
|
||||
} from '@/store/mutation-types'
|
||||
import config from '@/config/defaultSettings'
|
||||
|
||||
|
@ -25,6 +26,7 @@ export default function Initializer() {
|
|||
store.commit('TOGGLE_COLOR', Vue.ls.get(DEFAULT_COLOR, config.primaryColor))
|
||||
store.commit('SET_TOKEN', Vue.ls.get(ACCESS_TOKEN))
|
||||
store.commit('SET_USER', Vue.ls.get(USER))
|
||||
store.commit('SET_API_URL', Vue.ls.get(API_URL))
|
||||
|
||||
// last step
|
||||
}
|
||||
|
|
|
@ -7,7 +7,13 @@ const getters = {
|
|||
avatar: state => state.user.avatar,
|
||||
nickname: state => state.user.name,
|
||||
roles: state => state.user.roles,
|
||||
addRouters: state => state.permission.addRouters
|
||||
addRouters: state => state.permission.addRouters,
|
||||
apiUrl: state => {
|
||||
if (state.app.apiUrl) {
|
||||
return state.app.apiUrl
|
||||
}
|
||||
return `${window.location.protocol}//${window.location.host}`
|
||||
}
|
||||
}
|
||||
|
||||
export default getters
|
||||
|
|
|
@ -7,7 +7,8 @@ import {
|
|||
DEFAULT_FIXED_HEADER,
|
||||
DEFAULT_FIXED_SIDEMENU,
|
||||
DEFAULT_FIXED_HEADER_HIDDEN,
|
||||
DEFAULT_CONTENT_WIDTH_TYPE
|
||||
DEFAULT_CONTENT_WIDTH_TYPE,
|
||||
API_URL
|
||||
} from '@/store/mutation-types'
|
||||
|
||||
const app = {
|
||||
|
@ -20,14 +21,23 @@ const app = {
|
|||
fixedHeader: false,
|
||||
fixSiderbar: false,
|
||||
autoHideHeader: false,
|
||||
color: null
|
||||
color: null,
|
||||
apiUrl: null
|
||||
},
|
||||
mutations: {
|
||||
SET_API_URL: (state, apiUrl) => {
|
||||
state.apiUrl = apiUrl
|
||||
Vue.ls.set(API_URL, apiUrl)
|
||||
},
|
||||
RESTORE_API_URL: state => {
|
||||
state.apiUrl = null
|
||||
Vue.ls.set(API_URL, null)
|
||||
},
|
||||
SET_SIDEBAR_TYPE: (state, type) => {
|
||||
state.sidebar = type
|
||||
Vue.ls.set(SIDEBAR_TYPE, type)
|
||||
},
|
||||
CLOSE_SIDEBAR: (state) => {
|
||||
CLOSE_SIDEBAR: state => {
|
||||
Vue.ls.set(SIDEBAR_TYPE, true)
|
||||
state.sidebar = false
|
||||
},
|
||||
|
|
|
@ -8,6 +8,7 @@ export const DEFAULT_FIXED_SIDEMENU = 'DEFAULT_FIXED_SIDEMENU'
|
|||
export const DEFAULT_FIXED_HEADER_HIDDEN = 'DEFAULT_FIXED_HEADER_HIDDEN'
|
||||
export const DEFAULT_CONTENT_WIDTH_TYPE = 'DEFAULT_CONTENT_WIDTH_TYPE'
|
||||
export const USER = 'USER'
|
||||
export const API_URL = 'API_URL'
|
||||
|
||||
export const CONTENT_WIDTH_TYPE = {
|
||||
Fluid: 'Fluid',
|
||||
|
|
|
@ -8,7 +8,6 @@ import router from '@/router'
|
|||
import { isObject } from './util'
|
||||
|
||||
const service = axios.create({
|
||||
baseURL: process.env.NODE_ENV === 'production' ? '' : 'http://localhost:8090',
|
||||
timeout: 5000,
|
||||
withCredentials: true
|
||||
})
|
||||
|
@ -63,6 +62,7 @@ function getFieldValidationError(data) {
|
|||
|
||||
service.interceptors.request.use(
|
||||
config => {
|
||||
config.baseURL = store.getters.apiUrl
|
||||
if (!config.mute) {
|
||||
NProgress.start()
|
||||
}
|
||||
|
|
|
@ -260,7 +260,7 @@ export default {
|
|||
this.editable = false
|
||||
},
|
||||
handleCopyNormalLink() {
|
||||
const text = `${this.attachment.path}`
|
||||
const text = `${encodeURI(this.attachment.path)}`
|
||||
this.$copyText(text)
|
||||
.then(message => {
|
||||
console.log('copy', message)
|
||||
|
@ -272,7 +272,7 @@ export default {
|
|||
})
|
||||
},
|
||||
handleCopyMarkdownLink() {
|
||||
const text = `![${this.attachment.name}](${this.attachment.path})`
|
||||
const text = `![${this.attachment.name}](${encodeURI(this.attachment.path)})`
|
||||
this.$copyText(text)
|
||||
.then(message => {
|
||||
console.log('copy', message)
|
||||
|
|
|
@ -47,8 +47,14 @@
|
|||
@change="handlePaginationChange"
|
||||
></a-pagination>
|
||||
</div>
|
||||
<a-divider class="divider-transparent"/>
|
||||
<a-divider class="divider-transparent" />
|
||||
<div class="bottom-control">
|
||||
<a-button
|
||||
type="dashed"
|
||||
style="marginRight: 8px"
|
||||
v-if="isChooseAvatar"
|
||||
@click="handleSelectGravatar"
|
||||
>使用 Gravatar</a-button>
|
||||
<a-button
|
||||
@click="handleShowUploadModal"
|
||||
type="primary"
|
||||
|
@ -103,6 +109,11 @@ export default {
|
|||
type: String,
|
||||
required: false,
|
||||
default: '选择附件'
|
||||
},
|
||||
isChooseAvatar: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
@ -150,6 +161,9 @@ export default {
|
|||
handleSelectAttachment(item) {
|
||||
this.$emit('listenToSelect', item)
|
||||
},
|
||||
handleSelectGravatar() {
|
||||
this.$emit('listenToSelectGravatar')
|
||||
},
|
||||
handlePaginationChange(page, pageSize) {
|
||||
this.pagination.page = page
|
||||
this.pagination.size = pageSize
|
||||
|
|
|
@ -127,7 +127,7 @@
|
|||
target="_blank"
|
||||
>{{ post.title }}</a>
|
||||
<a
|
||||
v-else
|
||||
v-if="type === 'sheets'"
|
||||
slot="sheet"
|
||||
slot-scope="sheet"
|
||||
:href="options.blog_url+'/s/'+sheet.url"
|
||||
|
@ -408,7 +408,11 @@ export default {
|
|||
this.selectComment = comment
|
||||
this.replyCommentVisible = true
|
||||
this.replyComment.parentId = comment.id
|
||||
this.replyComment.postId = comment.post.id
|
||||
if (this.type === 'posts') {
|
||||
this.replyComment.postId = comment.post.id
|
||||
} else {
|
||||
this.replyComment.postId = comment.sheet.id
|
||||
}
|
||||
},
|
||||
handleCreateClick() {
|
||||
commentApi.create(this.type, this.replyComment).then(response => {
|
||||
|
|
|
@ -427,9 +427,7 @@ export default {
|
|||
this.themeConfiguration = response.data.data
|
||||
themeApi.fetchSettings(theme.id).then(response => {
|
||||
this.themeSettings = response.data.data
|
||||
|
||||
setTimeout(() => {
|
||||
this.visible = true
|
||||
this.optionLoading = false
|
||||
}, 300)
|
||||
})
|
||||
|
|
|
@ -199,7 +199,6 @@ import FooterToolBar from '@/components/FooterToolbar'
|
|||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||
import { toolbars } from '@/core/const'
|
||||
import 'mavon-editor/dist/css/index.css'
|
||||
import tagApi from '@/api/tag'
|
||||
import categoryApi from '@/api/category'
|
||||
import postApi from '@/api/post'
|
||||
import optionApi from '@/api/option'
|
||||
|
@ -226,7 +225,6 @@ export default {
|
|||
postSettingVisible: false,
|
||||
thumDrawerVisible: false,
|
||||
categoryForm: false,
|
||||
tags: [],
|
||||
categories: [],
|
||||
selectedCategoryIds: [],
|
||||
selectedTagIds: [],
|
||||
|
@ -238,7 +236,6 @@ export default {
|
|||
}
|
||||
},
|
||||
created() {
|
||||
this.loadTags()
|
||||
this.loadCategories()
|
||||
this.loadOptions()
|
||||
clearInterval(this.timer)
|
||||
|
@ -273,11 +270,6 @@ export default {
|
|||
})
|
||||
},
|
||||
methods: {
|
||||
loadTags() {
|
||||
tagApi.listAll(true).then(response => {
|
||||
this.tags = response.data.data
|
||||
})
|
||||
},
|
||||
loadCategories() {
|
||||
categoryApi.listAll().then(response => {
|
||||
this.categories = response.data.data
|
||||
|
@ -365,15 +357,4 @@ export default {
|
|||
z-index: 1000;
|
||||
min-height: 580px;
|
||||
}
|
||||
|
||||
.post-thum {
|
||||
.img {
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.post-thum-remove {
|
||||
margin-top: 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -209,6 +209,13 @@
|
|||
>
|
||||
<a href="javascript:;">删除</a>
|
||||
</a-popconfirm>
|
||||
|
||||
<a-divider type="vertical" />
|
||||
|
||||
<a
|
||||
href="javascript:;"
|
||||
@click="handlePostSettingsDrawer(post)"
|
||||
>设置</a>
|
||||
</span>
|
||||
</a-table>
|
||||
<div class="page-wrapper">
|
||||
|
@ -223,12 +230,165 @@
|
|||
</div>
|
||||
</div>
|
||||
</a-card>
|
||||
|
||||
<a-drawer
|
||||
title="文章设置"
|
||||
:width="isMobile()?'100%':'460'"
|
||||
placement="right"
|
||||
closable
|
||||
@close="onPostSettingsClose"
|
||||
:visible="postSettingVisible"
|
||||
>
|
||||
<div class="post-setting-drawer-content">
|
||||
<div :style="{ marginBottom: '16px' }">
|
||||
<h3 class="post-setting-drawer-title">基本设置</h3>
|
||||
<div class="post-setting-drawer-item">
|
||||
<a-form layout="vertical">
|
||||
<a-form-item label="文章标题:">
|
||||
<a-input v-model="selectedPost.title" />
|
||||
</a-form-item>
|
||||
<a-form-item
|
||||
label="文章路径:"
|
||||
:help="options.blog_url+'/archives/' + (selectedPost.url ? selectedPost.url : '{auto_generate}')"
|
||||
>
|
||||
<a-input v-model="selectedPost.url" />
|
||||
</a-form-item>
|
||||
<a-form-item label="开启评论:">
|
||||
<a-radio-group
|
||||
v-model="selectedPost.disallowComment"
|
||||
:defaultValue="false"
|
||||
>
|
||||
<a-radio :value="false">开启</a-radio>
|
||||
<a-radio :value="true">关闭</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
|
||||
<div :style="{ marginBottom: '16px' }">
|
||||
<h3 class="post-setting-drawer-title">分类目录</h3>
|
||||
<div class="post-setting-drawer-item">
|
||||
<category-tree
|
||||
v-model="selectedCategoryIds"
|
||||
:categories="categories"
|
||||
/>
|
||||
<div>
|
||||
<a-form layout="vertical">
|
||||
<a-form-item v-if="categoryForm">
|
||||
<category-select-tree
|
||||
:categories="categories"
|
||||
v-model="categoryToCreate.parentId"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item v-if="categoryForm">
|
||||
<a-input
|
||||
placeholder="分类名称"
|
||||
v-model="categoryToCreate.name"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item v-if="categoryForm">
|
||||
<a-input
|
||||
placeholder="分类路径"
|
||||
v-model="categoryToCreate.slugNames"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item>
|
||||
<a-button
|
||||
type="primary"
|
||||
style="marginRight: 8px"
|
||||
v-if="categoryForm"
|
||||
@click="handlerCreateCategory"
|
||||
>保存</a-button>
|
||||
<a-button
|
||||
type="dashed"
|
||||
style="marginRight: 8px"
|
||||
v-if="!categoryForm"
|
||||
@click="toggleCategoryForm"
|
||||
>新增</a-button>
|
||||
<a-button
|
||||
v-if="categoryForm"
|
||||
@click="toggleCategoryForm"
|
||||
>取消</a-button>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
|
||||
<div :style="{ marginBottom: '16px' }">
|
||||
<h3 class="post-setting-drawer-title">标签</h3>
|
||||
<div class="post-setting-drawer-item">
|
||||
<a-form layout="vertical">
|
||||
<a-form-item>
|
||||
<TagSelect v-model="selectedTagIds" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
|
||||
<div :style="{ marginBottom: '16px' }">
|
||||
<h3 class="post-setting-drawer-title">摘要</h3>
|
||||
<div class="post-setting-drawer-item">
|
||||
<a-form layout="vertical">
|
||||
<a-form-item>
|
||||
<a-input
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 5 }"
|
||||
v-model="selectedPost.summary"
|
||||
placeholder="不填写则会自动生成"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
<a-divider />
|
||||
|
||||
<div :style="{ marginBottom: '16px' }">
|
||||
<h3 class="post-setting-drawer-title">缩略图</h3>
|
||||
<div class="post-setting-drawer-item">
|
||||
<div class="post-thum">
|
||||
<img
|
||||
class="img"
|
||||
:src="selectedPost.thumbnail || '//i.loli.net/2019/05/05/5ccf007c0a01d.png'"
|
||||
@click="()=>this.thumDrawerVisible=true"
|
||||
>
|
||||
<a-button
|
||||
class="post-thum-remove"
|
||||
type="dashed"
|
||||
@click="handlerRemoveThumb"
|
||||
>移除</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-divider class="divider-transparent" />
|
||||
</div>
|
||||
<AttachmentSelectDrawer
|
||||
v-model="thumDrawerVisible"
|
||||
@listenToSelect="handleSelectPostThumb"
|
||||
:drawerWidth="460"
|
||||
/>
|
||||
<div class="bottom-control">
|
||||
<a-button
|
||||
@click="handleSavePostSettingsClick"
|
||||
type="primary"
|
||||
>保存</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import categoryApi from '@/api/category'
|
||||
import postApi from '@/api/post'
|
||||
import optionApi from '@/api/option'
|
||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
||||
import AttachmentSelectDrawer from '../attachment/components/AttachmentSelectDrawer'
|
||||
import TagSelect from './components/TagSelect'
|
||||
import CategoryTree from './components/CategoryTree'
|
||||
const columns = [
|
||||
{
|
||||
title: '标题',
|
||||
|
@ -266,13 +426,18 @@ const columns = [
|
|||
},
|
||||
{
|
||||
title: '操作',
|
||||
width: '150px',
|
||||
width: '180px',
|
||||
scopedSlots: { customRender: 'action' }
|
||||
}
|
||||
]
|
||||
export default {
|
||||
name: 'PostList',
|
||||
components: {},
|
||||
components: {
|
||||
AttachmentSelectDrawer,
|
||||
TagSelect,
|
||||
CategoryTree
|
||||
},
|
||||
mixins: [mixin, mixinDevice],
|
||||
data() {
|
||||
return {
|
||||
postStatus: postApi.postStatus,
|
||||
|
@ -295,7 +460,16 @@ export default {
|
|||
selectedRows: [],
|
||||
categories: [],
|
||||
posts: [],
|
||||
postsLoading: false
|
||||
postsLoading: false,
|
||||
postSettingVisible: false,
|
||||
thumDrawerVisible: false,
|
||||
selectedPost: {},
|
||||
selectedCategoryIds: [],
|
||||
selectedTagIds: [],
|
||||
categoryForm: false,
|
||||
categoryToCreate: {},
|
||||
options: [],
|
||||
keys: ['blog_url']
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -309,6 +483,7 @@ export default {
|
|||
created() {
|
||||
this.loadCategories()
|
||||
this.loadPosts()
|
||||
this.loadOptions()
|
||||
},
|
||||
methods: {
|
||||
loadPosts() {
|
||||
|
@ -328,6 +503,11 @@ export default {
|
|||
this.categories = response.data.data
|
||||
})
|
||||
},
|
||||
loadOptions() {
|
||||
optionApi.listAll(this.keys).then(response => {
|
||||
this.options = response.data.data
|
||||
})
|
||||
},
|
||||
handleEditClick(post) {
|
||||
this.$router.push({ name: 'PostEdit', query: { postId: post.id } })
|
||||
},
|
||||
|
@ -412,6 +592,49 @@ export default {
|
|||
this.loadPosts()
|
||||
})
|
||||
}
|
||||
},
|
||||
// 打开文章设置抽屉
|
||||
handlePostSettingsDrawer(post) {
|
||||
this.postSettingVisible = true
|
||||
postApi.get(post.id).then(response => {
|
||||
const post = response.data.data
|
||||
this.selectedPost = post
|
||||
this.selectedTagIds = post.tagIds
|
||||
this.selectedCategoryIds = post.categoryIds
|
||||
})
|
||||
},
|
||||
handleSelectPostThumb(data) {
|
||||
this.selectedPost.thumbnail = data.path
|
||||
this.thumDrawerVisible = false
|
||||
},
|
||||
handlerRemoveThumb() {
|
||||
this.selectedPost.thumbnail = null
|
||||
},
|
||||
// 保存文章设置
|
||||
handleSavePostSettingsClick() {
|
||||
this.selectedPost.categoryIds = this.selectedCategoryIds
|
||||
this.selectedPost.tagIds = this.selectedTagIds
|
||||
postApi.update(this.selectedPost.id, this.selectedPost, false).then(response => {
|
||||
this.$log.debug('Updated post', response.data.data)
|
||||
this.loadPosts()
|
||||
this.$message.success('文章更新成功')
|
||||
})
|
||||
},
|
||||
toggleCategoryForm() {
|
||||
this.categoryForm = !this.categoryForm
|
||||
},
|
||||
handlerCreateCategory() {
|
||||
categoryApi.create(this.categoryToCreate).then(response => {
|
||||
this.loadCategories()
|
||||
this.categoryToCreate = {}
|
||||
})
|
||||
},
|
||||
// 关闭文章设置抽屉
|
||||
onPostSettingsClose() {
|
||||
this.postSettingVisible = false
|
||||
this.selectedPost = {}
|
||||
this.selectedTagIds = []
|
||||
this.selectedCategoryIds = []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,23 +48,62 @@
|
|||
:style="{'animation-delay': '0.3s'}"
|
||||
>登录</a-button>
|
||||
</a-row>
|
||||
|
||||
<a-row>
|
||||
<a
|
||||
@click="handleApiModifyModalOpen"
|
||||
class="tip animated fadeInUp"
|
||||
:style="{'animation-delay': '0.4s'}"
|
||||
>
|
||||
API 设置
|
||||
</a>
|
||||
</a-row>
|
||||
|
||||
<a-modal
|
||||
title="API 设置"
|
||||
:visible="apiModifyVisiable"
|
||||
@ok="handleApiModifyOk"
|
||||
@cancel="handleApiModifyCancel"
|
||||
>
|
||||
<a-form>
|
||||
<a-form-item extra="如果 halo admin 不是独立部署,请不要更改此 API">
|
||||
<a-input v-model="apiUrl"></a-input>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item>
|
||||
<a-button @click="handleApiUrlRestore">
|
||||
恢复默认
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapActions } from 'vuex'
|
||||
import { mapActions, mapGetters, mapMutations } from 'vuex'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
username: null,
|
||||
password: null
|
||||
password: null,
|
||||
apiModifyVisiable: false,
|
||||
defaultApiBefore: window.location.protocol + '//',
|
||||
apiUrl: window.location.host
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters({ defaultApiUrl: 'apiUrl' })
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['login', 'loadUser']),
|
||||
...mapMutations({
|
||||
setApiUrl: 'SET_API_URL',
|
||||
restoreApiUrl: 'RESTORE_API_URL'
|
||||
}),
|
||||
handleLogin() {
|
||||
if (!this.username) {
|
||||
this.$message.warn('用户名不能为空!')
|
||||
|
@ -89,11 +128,26 @@ export default {
|
|||
} else {
|
||||
this.$router.replace({ name: 'Dashboard' })
|
||||
}
|
||||
},
|
||||
handleApiModifyModalOpen() {
|
||||
this.apiUrl = this.defaultApiUrl
|
||||
this.apiModifyVisiable = true
|
||||
},
|
||||
handleApiModifyOk() {
|
||||
this.setApiUrl(this.apiUrl)
|
||||
this.apiModifyVisiable = false
|
||||
},
|
||||
handleApiModifyCancel() {
|
||||
this.apiModifyVisiable = false
|
||||
},
|
||||
handleApiUrlRestore() {
|
||||
this.restoreApiUrl()
|
||||
this.apiUrl = this.defaultApiUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
<style lang="less">
|
||||
body {
|
||||
height: 100%;
|
||||
background-color: #f5f5f5;
|
||||
|
@ -107,6 +161,11 @@ body {
|
|||
width: 320px;
|
||||
padding: 16px 32px 32px 32px;
|
||||
box-shadow: -4px 7px 46px 2px rgba(0, 0, 0, 0.1);
|
||||
.tip {
|
||||
cursor: pointer;
|
||||
margin-top: .5rem;
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
.loginLogo {
|
||||
margin-bottom: 20px;
|
||||
|
|
|
@ -138,7 +138,9 @@
|
|||
<AttachmentSelectDrawer
|
||||
v-model="attachmentDrawerVisible"
|
||||
@listenToSelect="handleSelectAvatar"
|
||||
@listenToSelectGravatar="handleSelectGravatar"
|
||||
title="选择头像"
|
||||
isChooseAvatar
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -149,6 +151,7 @@ import userApi from '@/api/user'
|
|||
import adminApi from '@/api/admin'
|
||||
import optionApi from '@/api/option'
|
||||
import { mapMutations } from 'vuex'
|
||||
import MD5 from 'md5.js'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
|
@ -217,6 +220,10 @@ export default {
|
|||
handleSelectAvatar(data) {
|
||||
this.user.avatar = data.path
|
||||
this.attachmentDrawerVisible = false
|
||||
},
|
||||
handleSelectGravatar() {
|
||||
this.user.avatar = '//cn.gravatar.com/avatar/' + new MD5().update(this.user.email).digest('hex') + '&d=mm'
|
||||
this.attachmentDrawerVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue