├── .idea
├── .name
├── shelf
│ ├── Uncommitted_changes_before_rebase_[更改]
│ │ ├── shelved.patch
│ │ └── views.zip
│ └── Uncommitted_changes_before_rebase___.xml
├── .gitignore
├── misc.xml
├── vcs.xml
├── inspectionProfiles
│ └── Project_Default.xml
├── modules.xml
├── AsoulFansArt-Frontend.iml
└── workspace.xml
├── public
├── version.json
├── robots.txt
├── img
│ ├── b.ico
│ ├── asdb.ico
│ ├── asfa.ico
│ ├── asjp.ico
│ ├── aswd.png
│ ├── jwf.jpg
│ ├── s1.ico
│ ├── xzw.ico
│ ├── zj.png
│ ├── douban.ico
│ ├── github.png
│ ├── icons
│ │ ├── apple-icon.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon-96x96.png
│ │ ├── ms-icon-70x70.png
│ │ ├── ms-icon-144x144.png
│ │ ├── ms-icon-150x150.png
│ │ ├── ms-icon-310x310.png
│ │ ├── android-icon-36x36.png
│ │ ├── android-icon-48x48.png
│ │ ├── android-icon-72x72.png
│ │ ├── android-icon-96x96.png
│ │ ├── apple-icon-114x114.png
│ │ ├── apple-icon-120x120.png
│ │ ├── apple-icon-144x144.png
│ │ ├── apple-icon-152x152.png
│ │ ├── apple-icon-180x180.png
│ │ ├── apple-icon-57x57.png
│ │ ├── apple-icon-60x60.png
│ │ ├── apple-icon-72x72.png
│ │ ├── apple-icon-76x76.png
│ │ ├── android-icon-144x144.png
│ │ ├── android-chrome-192x192.png
│ │ ├── apple-icon-precomposed.png
│ │ └── android-chrome-maskable-192x192.png
│ ├── asf.svg
│ ├── A-SOUL Fans Art - 一个魂的二创_files
│ │ ├── app.js.下载
│ │ └── chunk-vendors.js.下载
│ ├── zwcc.svg
│ └── A-SOUL Fans Art - 一个魂的二创.html
├── logo.png
├── favicon.ico
├── manifest.json
├── links.json
├── index.html
└── timeline.json
├── src
├── assets
│ ├── 1.gif
│ ├── scss
│ │ ├── card.scss
│ │ ├── a.scss
│ │ ├── menu.scss
│ │ └── account.scss
│ ├── logo.png
│ └── icon
│ │ ├── iconfont.ttf
│ │ ├── iconfont.json
│ │ ├── iconfont.css
│ │ └── iconfont.js
├── store
│ └── index.js
├── views
│ ├── components
│ │ ├── Bottom.vue
│ │ ├── Modal.vue
│ │ ├── TabPage.vue
│ │ ├── SubmitPic.vue
│ │ ├── PicGrid.vue
│ │ ├── SubmitArticle.vue
│ │ ├── ArticleCard.vue
│ │ ├── StackedLine.vue
│ │ ├── VideoGrid.vue
│ │ ├── Waterfall.vue
│ │ ├── NavItem.vue
│ │ ├── ImgGallery.vue
│ │ ├── Header.vue
│ │ ├── VideoCard.vue
│ │ ├── WaterfallPic.vue
│ │ ├── Vwaterfall.vue
│ │ ├── ImageCard.vue
│ │ └── Condition.vue
│ ├── Submit.vue
│ ├── Article.vue
│ ├── Video.vue
│ ├── PicDetail.vue
│ ├── Meme.vue
│ ├── account
│ │ └── Space.vue
│ ├── FansMedal.vue
│ ├── MainPage.vue
│ └── AsoulHistory.vue
├── util
│ ├── local.js
│ ├── lazyload.js
│ ├── general.js
│ └── http.js
├── registerServiceWorker.js
├── plugins
│ └── axios.js
├── main.js
├── router
│ └── index.js
└── App.vue
├── babel.config.js
├── .gitignore
├── README.md
├── package.json
└── vue.config.js
/.idea/.name:
--------------------------------------------------------------------------------
1 | AsoulFansArt-Frontend
--------------------------------------------------------------------------------
/public/version.json:
--------------------------------------------------------------------------------
1 | {"version": "1.2"}
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/.idea/shelf/Uncommitted_changes_before_rebase_[更改]/shelved.patch:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/img/b.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/b.ico
--------------------------------------------------------------------------------
/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/logo.png
--------------------------------------------------------------------------------
/src/assets/1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/src/assets/1.gif
--------------------------------------------------------------------------------
/src/assets/scss/card.scss:
--------------------------------------------------------------------------------
1 | .card-title{
2 | font-size: 1.0625rem;
3 | font-weight: bold;
4 | }
5 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 | # 基于编辑器的 HTTP 客户端请求
5 | /httpRequests/
6 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/img/asdb.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/asdb.ico
--------------------------------------------------------------------------------
/public/img/asfa.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/asfa.ico
--------------------------------------------------------------------------------
/public/img/asjp.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/asjp.ico
--------------------------------------------------------------------------------
/public/img/aswd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/aswd.png
--------------------------------------------------------------------------------
/public/img/jwf.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/jwf.jpg
--------------------------------------------------------------------------------
/public/img/s1.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/s1.ico
--------------------------------------------------------------------------------
/public/img/xzw.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/xzw.ico
--------------------------------------------------------------------------------
/public/img/zj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/zj.png
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/src/assets/logo.png
--------------------------------------------------------------------------------
/public/img/douban.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/douban.ico
--------------------------------------------------------------------------------
/public/img/github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/github.png
--------------------------------------------------------------------------------
/src/assets/icon/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/src/assets/icon/iconfont.ttf
--------------------------------------------------------------------------------
/public/img/icons/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon.png
--------------------------------------------------------------------------------
/public/img/icons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/favicon-16x16.png
--------------------------------------------------------------------------------
/public/img/icons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/favicon-32x32.png
--------------------------------------------------------------------------------
/public/img/icons/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/favicon-96x96.png
--------------------------------------------------------------------------------
/public/img/icons/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-70x70.png
--------------------------------------------------------------------------------
/public/img/icons/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-144x144.png
--------------------------------------------------------------------------------
/public/img/icons/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-150x150.png
--------------------------------------------------------------------------------
/public/img/icons/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/ms-icon-310x310.png
--------------------------------------------------------------------------------
/public/img/icons/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-36x36.png
--------------------------------------------------------------------------------
/public/img/icons/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-48x48.png
--------------------------------------------------------------------------------
/public/img/icons/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-72x72.png
--------------------------------------------------------------------------------
/public/img/icons/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-96x96.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-114x114.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-120x120.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-144x144.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-152x152.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-180x180.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-57x57.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-60x60.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-72x72.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-76x76.png
--------------------------------------------------------------------------------
/public/img/icons/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-icon-144x144.png
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-chrome-192x192.png
--------------------------------------------------------------------------------
/public/img/icons/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/public/img/icons/android-chrome-maskable-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/public/img/icons/android-chrome-maskable-192x192.png
--------------------------------------------------------------------------------
/.idea/shelf/Uncommitted_changes_before_rebase_[更改]/views.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AsoulFansArt/AsoulFansArt-Frontend/HEAD/.idea/shelf/Uncommitted_changes_before_rebase_[更改]/views.zip
--------------------------------------------------------------------------------
/src/assets/scss/a.scss:
--------------------------------------------------------------------------------
1 | a{
2 | text-decoration: none;
3 | color: black;
4 | transition: 0.5s;
5 | }
6 | a:hover{
7 | color:#FC966E;
8 | }
9 | ul{
10 | padding: 0;
11 | }
12 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import { createStore } from 'vuex'
2 |
3 | export default createStore({
4 | state: {
5 | },
6 | mutations: {
7 | },
8 | actions: {
9 | },
10 | modules: {
11 | }
12 | })
13 |
--------------------------------------------------------------------------------
/src/views/components/Bottom.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/src/assets/icon/iconfont.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "",
3 | "name": "",
4 | "font_family": "iconfont",
5 | "css_prefix_text": "icon-",
6 | "description": "",
7 | "glyphs": [
8 | {
9 | "icon_id": "16799162",
10 | "name": "like",
11 | "font_class": "0_like1",
12 | "unicode": "e669",
13 | "unicode_decimal": 58985
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/src/assets/icon/iconfont.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: "iconfont"; /* Project id */
3 | src: url('iconfont.ttf?t=1628586705257') format('truetype');
4 | }
5 |
6 | .iconfont {
7 | font-family: "iconfont" !important;
8 | font-size: 16px;
9 | font-style: normal;
10 | -webkit-font-smoothing: antialiased;
11 | -moz-osx-font-smoothing: grayscale;
12 | }
13 |
14 | .icon-0_like1:before {
15 | content: "\e669";
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/src/views/components/Modal.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
19 |
--------------------------------------------------------------------------------
/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "一个魂的二创",
3 | "short_name": "一个魂的二创",
4 | "start_url": ".",
5 | "icon": [
6 | {
7 | "src": "/public/img/icons/android-icon-144x144.png",
8 | "sizes": "128x128",
9 | "type": "image/png"
10 | },
11 | {
12 | "src": "/public/img/icons/android-chrome-192x192.png",
13 | "sizes": "192x192",
14 | "type": "image/png"
15 | }],
16 | "background_color": "white",
17 | "theme_color": "white",
18 | "display": "standalone"
19 | }
20 |
--------------------------------------------------------------------------------
/.idea/AsoulFansArt-Frontend.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/shelf/Uncommitted_changes_before_rebase___.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/views/components/TabPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
27 |
28 |
--------------------------------------------------------------------------------
/src/util/local.js:
--------------------------------------------------------------------------------
1 | import Axios from "axios";
2 |
3 |
4 |
5 |
6 | const _getLinks = (params) => {
7 | return Axios({
8 | url:"/links.json",
9 | method:"get",
10 | params:params
11 | })
12 | }
13 |
14 | const _getVersion = (params) => {
15 | return Axios({
16 | url:"/version.json",
17 | method:"get",
18 | params:params
19 | })
20 | }
21 |
22 | const _getTimeLine = (params) => {
23 | return Axios({
24 | url:"/timeline.json",
25 | method:"get",
26 | params:params
27 | })
28 | }
29 |
30 |
31 | export default {
32 | _getLinks,
33 | _getVersion,
34 | _getTimeLine
35 | }
36 |
--------------------------------------------------------------------------------
/src/views/Submit.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 |
13 |
33 |
34 |
38 |
--------------------------------------------------------------------------------
/src/util/lazyload.js:
--------------------------------------------------------------------------------
1 | import errImage from "../assets/1.gif"
2 | import infiniteScroll from 'vue-infinite-scroll'
3 |
4 | const defineDirective = (app) => {
5 | app.directive('lazy', {
6 | mounted(el, binding){
7 | const observe = new IntersectionObserver(([{isIntersecting}])=>{
8 | if (isIntersecting){
9 | el.src = binding.value
10 | observe.unobserve(el)
11 | el.onerror = () => {
12 | el.src = errImage
13 | }
14 | }
15 | })
16 | observe.observe(el)
17 | },
18 | updated(el, binding){
19 | //console.log("update", binding.value)
20 | el.src = binding.value
21 | el.onerror = () => {
22 | el.src = errImage
23 | }
24 | }
25 | });
26 |
27 | }
28 |
29 | export default {
30 | install(app){
31 | defineDirective(app)
32 | }
33 | }
--------------------------------------------------------------------------------
/src/assets/scss/menu.scss:
--------------------------------------------------------------------------------
1 | a{
2 | text-decoration: none;
3 | color: black;
4 | transition: 0.5s;
5 | }
6 | a:hover{
7 | color:black;
8 | }
9 | .icon-menu{
10 |
11 | display: flex;
12 | justify-content: center;
13 |
14 | flex-wrap: wrap;
15 | pointer-events: auto;
16 | border:-1px solid rgba(255, 255, 255, 0.08);
17 | border-radius: 8px;
18 | :hover {
19 | border:-1px solid rgba(0, 0, 0, 0.08);
20 | border-radius: 8px;
21 | background: rgba(245, 245, 245, 0.88);
22 | }
23 |
24 |
25 | }
26 |
27 |
28 |
29 | .icon-card{
30 | width: 7.5rem;
31 | padding: 1rem;
32 | display: flex;
33 | align-items: center;
34 | flex-direction: column;
35 | :hover{
36 | border: none;
37 | border-radius: 0;
38 | }
39 | }
40 |
41 | .icon-card-no-hover{
42 | width: 7.5rem;
43 | padding: 1rem;
44 | display: flex;
45 | align-items: center;
46 | flex-direction: column;
47 | pointer-events: none;
48 | }
49 |
50 |
51 |
52 |
53 | .icon-desc{
54 | font-size: x-small;
55 | }
--------------------------------------------------------------------------------
/src/views/components/SubmitPic.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
29 |
30 |
43 |
--------------------------------------------------------------------------------
/src/registerServiceWorker.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-console */
2 |
3 | import { register } from 'register-service-worker'
4 | import {ElMessage} from "element-plus";
5 |
6 | if (process.env.NODE_ENV === 'production') {
7 | register(`${process.env.BASE_URL}service-worker.js`, {
8 | ready () {
9 | console.log(
10 | 'App is being served from cache by a service worker.\n' +
11 | 'For more details, visit https://goo.gl/AFskqB'
12 | )
13 | },
14 | registered () {
15 | console.log('Service worker has been registered.')
16 | },
17 | cached () {
18 | console.log('Content has been cached for offline use.')
19 | },
20 | updatefound () {
21 | console.log('New content is downloading.')
22 | },
23 | updated () {
24 | console.log('New content is available; please refresh.')
25 | ElMessage.success("网站版本已更新,请Ctrl+F5强制刷新体验")
26 | },
27 | offline () {
28 | console.log('No internet connection found. App is running in offline mode.')
29 | },
30 | error (error) {
31 | console.error('Error during service worker registration:', error)
32 | }
33 | })
34 | }
35 |
--------------------------------------------------------------------------------
/src/views/components/PicGrid.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{{img.pic_url.length}}
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
29 |
30 |
54 |
--------------------------------------------------------------------------------
/src/views/components/SubmitArticle.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
11 |
12 |
Tips:添加分区请在B站私信~
13 |
20 |
提交
21 |
22 |
23 |
24 |
50 |
51 |
54 |
--------------------------------------------------------------------------------
/public/img/asf.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/plugins/axios.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 |
3 | import Vue from 'vue';
4 | import axios from "axios";
5 |
6 | // Full config: https://github.com/axios/axios#request-config
7 | // axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
8 | // axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
9 | // axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
10 |
11 | let config = {
12 | // baseURL: process.env.baseURL || process.env.apiUrl || ""
13 | // timeout: 60 * 1000, // Timeout
14 | // withCredentials: true, // Check cross-site Access-Control
15 | };
16 |
17 | const _axios = axios.create(config);
18 |
19 | _axios.interceptors.request.use(
20 | function(config) {
21 | // Do something before request is sent
22 | return config;
23 | },
24 | function(error) {
25 | // Do something with request error
26 | return Promise.reject(error);
27 | }
28 | );
29 |
30 | // Add a response interceptor
31 | _axios.interceptors.response.use(
32 | function(response) {
33 | // Do something with response data
34 | return response;
35 | },
36 | function(error) {
37 | // Do something with response error
38 | return Promise.reject(error);
39 | }
40 | );
41 |
42 | Plugin.install = function(Vue, options) {
43 | Vue.axios = _axios;
44 | window.axios = _axios;
45 | Object.defineProperties(Vue.prototype, {
46 | axios: {
47 | get() {
48 | return _axios;
49 | }
50 | },
51 | $axios: {
52 | get() {
53 | return _axios;
54 | }
55 | },
56 | });
57 | };
58 |
59 | Vue.use(Plugin)
60 |
61 | export default Plugin;
62 |
--------------------------------------------------------------------------------
/public/links.json:
--------------------------------------------------------------------------------
1 | [ {
2 | "name": "AsoulWorld",
3 | "link": "https://www.asoulworld.com/",
4 | "icon": "./img/aswd.png"
5 | },{
6 | "name": "AU都在溜什么",
7 | "link": "https://online.loveava.top/",
8 | "icon": "./img/asdb.ico"
9 | },
10 | {
11 | "name": "小作文",
12 | "link": "https://asoul.icu/#/",
13 | "icon": "./img/xzw.ico"
14 | },
15 | {
16 | "name": "AsoulWIKI",
17 | "link": "https://asoulwiki.com/",
18 | "icon": "./img/asdb.ico"
19 | },
20 | {
21 | "name": "枝江大学",
22 | "link": "https://zhijiang.university/",
23 | "icon": "./img/zj.png"
24 | },
25 | {
26 | "name": "AsoulJP",
27 | "link": "https://asoul.jp/",
28 | "icon": "./img/asjp.ico"
29 | },
30 | {
31 | "name": "B站粉丝牌助手",
32 | "link": "https://github.com/XiaoMiku01/fansMedalHelper",
33 | "icon": "./img/github.png"
34 | },
35 | {
36 | "name": "嘉晚饭",
37 | "link": "https://jiawanfan.cn/",
38 | "icon": "./img/jwf.jpg"
39 | },
40 | {
41 | "name": "A-SOUL鼓励师",
42 | "link": "https://marketplace.visualstudio.com/items?itemName=AS042971.asoul",
43 | "icon": "./img/asdb.ico"
44 | }, {
45 | "name": "嘉心糖圈子",
46 | "link": "https://www.xn--w4r49t8ny.com/",
47 | "icon": "./img/asdb.ico"
48 | }, {
49 | "name": "评论区冲浪指南",
50 | "link": "https://wiki.asoul.org/",
51 | "icon": "./img/asdb.ico"
52 | },{
53 | "name": "S1asoul讨论楼",
54 | "link": "https://bbs.saraba1st.com/2b/thread-2070127-1-1.html",
55 | "icon": "./img/s1.ico"
56 | },{
57 | "name": "asoul雏菊组",
58 | "link": "https://www.douban.com/group/727619/",
59 | "icon": "./img/douban.ico"
60 | }
61 | ]
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import store from './store'
5 | import { library } from '@fortawesome/fontawesome-svg-core'
6 | import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
7 | import 'bulma'
8 | import './registerServiceWorker'
9 | import lazyload from './util/lazyload.js'
10 | import zhCn from 'element-plus/es/locale/lang/zh-cn'
11 | // import * as echarts from 'echarts'
12 |
13 |
14 | /* import specific icons */
15 | import {
16 | faCirclePlay, faImage, faBookOpen, faIceCream, faUpload, faEnvelope, faClock, faArrowTrendUp, faEye, faFire,
17 | faSun, faMoon, faCalendar, faTag, faChevronDown, faBars, faHouse, faChartGantt, faHeart, faCoins, faStar, faComment,
18 | faGrinStars, faShare, faClone, faSpinner, faEdit, faUser, faHistory, faChartLine
19 | } from '@fortawesome/free-solid-svg-icons'
20 | import ElementPlus from 'element-plus'
21 | import 'element-plus/dist/index.css'
22 | //import {fas} from "@fortawesome/free-solid-svg-icons";
23 |
24 |
25 | //library.add(fas)
26 | library.add(faCirclePlay, faImage, faBookOpen, faIceCream, faUpload, faEnvelope
27 | , faClock, faArrowTrendUp, faEye, faFire, faSun, faMoon, faCalendar,faTag, faChevronDown, faBars, faHouse
28 | , faChartGantt, faHeart, faCoins, faStar, faComment,faGrinStars, faShare, faClone, faSpinner, faEdit, faUser,faHistory, faChartLine)
29 |
30 | const app = createApp(App).use(store).use(router)
31 | app.use(ElementPlus,{
32 | locale: zhCn,
33 | })
34 |
35 | // app.echarts=echarts
36 |
37 | lazyload.install(app)
38 | app.component('font-awesome-icon', FontAwesomeIcon)
39 | app.mount('#app')
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/src/assets/scss/account.scss:
--------------------------------------------------------------------------------
1 |
2 | .account-card{
3 | display: flex;
4 | justify-content: center;
5 | flex-wrap: wrap;
6 | box-shadow: 0 0 8px rgba(0,0,0,.175)!important;
7 | margin: 1rem;
8 | padding: 1.5rem;
9 | .account-face{
10 | width: 168px;
11 | height: 168px;
12 | border-radius: 50%;
13 | border: 2px solid hsla(0,0%,100%,.4);
14 | //transition: transform .45s ease-in-out;
15 | //&:hover{
16 | // transform: scale(1.1,1.1);
17 | //}
18 | }
19 | .account-work{
20 | width: 100%;
21 | display: flex;
22 | justify-content: center;
23 | justify-items: center;
24 | .work-nums{
25 | display: flex;
26 | flex-flow: column;
27 | align-items: center;
28 | margin-right: 10px;
29 | padding: 1rem;
30 | font-size: medium;
31 | font-weight: bolder;
32 | }
33 | }
34 | .account-name{
35 | width: 100%;
36 | text-align: center;
37 | font-size: larger;
38 | font-weight: bold;
39 | line-height: 1.5;
40 | display: flex;
41 | align-items: center;
42 | justify-content: center;
43 | padding: 0.25rem;
44 | }
45 | .account-level{
46 | font-size: xx-small;
47 | background: #FC966E;
48 | border-radius: .45rem;
49 | padding: 2px 8px;
50 | color: white;
51 | margin-right: 4px;
52 | }
53 | .account-uid{
54 | background: #42b983;
55 | color: white;
56 | padding: 2px 8px;
57 | border-radius: .45rem;
58 | font-size: xx-small;
59 | margin-right: 4px;
60 | }
61 |
62 | }
63 | .account-sign{
64 | font-weight: 400;
65 | line-height: 1.5;
66 | box-shadow: 0 0 8px rgba(0,0,0,.175)!important;
67 | margin: 1rem;
68 | padding: 1.5rem;
69 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # A-SoulFansArt-一个魂的二创
2 | 网址:https://asoulfanart.com
3 |
4 | 项目目前为二创收集,想要方便一个魂们浏览二创作品~
5 | 站内视频需跳转原地址,图片为缩略图,永远不会提供批量下载功能
6 | 互动是对UP们最大的支持, 看到喜欢的作品请给原作者支持(关注,点赞,投币,分享,评论等等)
7 | ***
8 | ### 关于A-SOUL
9 | A-SOUL是乐华娱乐于2020年11月23日公开的其旗下首个虚拟偶像团体,由~~5~~名成员组成。
10 |
11 | A-SOUL_Official:https://space.bilibili.com/703007996
12 | * 乃琳:https://space.bilibili.com/672342685
13 | * 珈乐(毕业): https://space.bilibili.com/672328094
14 | * 节奏时间线:https://asoulfanart.com/asoul/history
15 | * 嘉然:https://space.bilibili.com/672328094
16 | * 贝拉:https://space.bilibili.com/672353429
17 | * 向晚:https://space.bilibili.com/672346917
18 | ***
19 | **技术栈:**
20 | 新版:vue3+bulma+pwa
21 | ***
22 | **声明:**
23 | 如网站侵犯了您的版权,请联系B站项目官号[@A-SoulFansArt](https://space.bilibili.com/291072226)
24 | 确认后我会第一时间撤下内容
25 | ***
26 | 计划(填坑列表):
27 | * 首页[ ]
28 | - 每日作品(视频,文章,图片)[ ]
29 | - 每日排行榜[ ]
30 | - 周报专栏[ ]
31 | - 推荐作品[ ]
32 | - 随机推荐[ ]
33 | - 随机Tag下作品推荐[ ]
34 | - 人工推荐[ ]
35 | * 搜索功能[ ]
36 | * 排行榜(目前集合在视频/图片页面下)[x]
37 | * 视频页面[x]
38 | * 图片页面[x]
39 | * 关于网站[ ]
40 | ## 交流/参与项目
41 | 欢迎提交Issue或者B站私信:https://space.bilibili.com/291072226
42 | * 后端技术栈:django+celery
43 | * src结构
44 | - router - 路由
45 | - util/http.js - 后端Api
46 | - util/general.js - 常用函数
47 | - views/account - 用户相关页面
48 | - views/components - 组件
49 | - views/MainPage.vue - 主页
50 | - views/Video.vue - 视频
51 | - views/Pic.vue - 图片
52 | - views/Article.vue - 专栏
53 | - views/Submit.vue - 提交作品
54 |
55 | ## 相关项目
56 | [枝网查重](https://github.com/ASoulCnki)
57 | [A-Soul-Database](https://github.com/peterpei1186861238/A-Soul-Database)
58 |
59 |
60 | ### 运行
61 | ```
62 | npm run serve
63 | ```
64 |
65 | ### 打包
66 | ```
67 | npm run build
68 | ```
69 |
70 | ### 配置参考
71 | See [Configuration Reference](https://cli.vuejs.org/config/).
72 |
--------------------------------------------------------------------------------
/src/util/general.js:
--------------------------------------------------------------------------------
1 | const _timestampToTime = (timestamp) =>{
2 | let today = new Date();
3 | let date = new Date(timestamp * 1000);
4 | let Y = date.getFullYear() + '-';
5 | let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
6 | let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate())
7 | if (date.getFullYear() != today.getFullYear()){
8 | return Y+M+D;
9 | }else{
10 | return M+D;
11 | }
12 | }
13 |
14 | const _timestampToTimeY = (timestamp) =>{
15 | let today = new Date();
16 | let date = new Date(timestamp * 1000);
17 | let Y = date.getFullYear() + '-';
18 | let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
19 | let D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate())
20 | if (date.getFullYear() != today.getFullYear()){
21 | return Y+M+D;
22 | }else{
23 | return M+D;
24 | }
25 | }
26 |
27 | const _changeBillionToCN = (c) =>{
28 | if(typeof(c) != "string") {
29 | c = c.toString();
30 | }
31 | if(c.split(".")[0].length >= 5 && c.split(".")[0].length <= 8) {
32 | return parseFloat((c / 10000).toFixed(2)) + "万";
33 | } else if(c.split(".")[0].length > 8 && c.split(".")[0].length < 13) {
34 | return parseFloat((c / 100000000).toFixed(2)) + "亿";
35 | } else if(c.split(".")[0].length > 13) {
36 | return parseFloat((c / 1000000000000).toFixed(2)) + "兆";
37 | }
38 | return c;
39 | }
40 |
41 | const _isMobile = () => {
42 | return navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)
43 | }
44 |
45 | export default {
46 | _timestampToTime,
47 | _changeBillionToCN,
48 | _isMobile,
49 | _timestampToTimeY
50 | }
51 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | A-SOUL Fan Art - 一个魂的二创
19 |
28 |
29 |
31 |
32 |
33 |
34 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/src/assets/icon/iconfont.js:
--------------------------------------------------------------------------------
1 | !function(e){var t,n,o,i,c,l='',d=(d=document.getElementsByTagName("script"))[d.length-1].getAttribute("data-injectcss"),a=function(e,t){t.parentNode.insertBefore(e,t)};if(d&&!e.__iconfont__svg__cssinject__){e.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(e){console&&console.log(e)}}function s(){c||(c=!0,o())}function r(){try{i.documentElement.doScroll("left")}catch(e){return void setTimeout(r,50)}s()}t=function(){var e,t;(t=document.createElement("div")).innerHTML=l,l=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",t=e,(e=document.body).firstChild?a(t,e.firstChild):e.appendChild(t))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(n=function(){document.removeEventListener("DOMContentLoaded",n,!1),t()},document.addEventListener("DOMContentLoaded",n,!1)):document.attachEvent&&(o=t,i=e.document,c=!1,r(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,s())})}(window);
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AsoulFansArt",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "@fortawesome/fontawesome-svg-core": "^1.3.0",
12 | "@fortawesome/free-solid-svg-icons": "^6.1.1",
13 | "@fortawesome/vue-fontawesome": "^3.0.0-5",
14 | "blueimp-md5": "^2.19.0",
15 | "bulma": "^0.9.3",
16 | "core-js": "^3.6.5",
17 | "echarts": "^5.3.3",
18 | "element-plus": "^2.2.2",
19 | "pwa": "^1.9.7",
20 | "tslib": "^2.4.0",
21 | "uglifyjs-webpack-plugin": "^2.2.0",
22 | "vue": "^3.0.0",
23 | "vue-bulma-datepicker": "^1.3.6",
24 | "vue-echarts": "^6.1.0",
25 | "vue-infinite-scroll": "^2.0.2",
26 | "vuex": "^4.0.0-0"
27 | },
28 | "devDependencies": {
29 | "@vue/cli-plugin-babel": "~4.5.0",
30 | "@vue/cli-plugin-eslint": "~4.5.0",
31 | "@vue/cli-plugin-pwa": "^4.5.13",
32 | "@vue/cli-plugin-router": "^4.5.13",
33 | "@vue/cli-plugin-vuex": "^4.5.13",
34 | "@vue/cli-service": "~4.5.0",
35 | "@vue/compiler-sfc": "^3.0.0",
36 | "axios": "^0.21.1",
37 | "babel-eslint": "^10.1.0",
38 | "compression-webpack-plugin": "^6.1.1",
39 | "eslint": "^6.7.2",
40 | "eslint-plugin-vue": "^7.0.0",
41 | "register-service-worker": "^1.7.1",
42 | "sass": "^1.27.0",
43 | "sass-loader": "^10.0.4",
44 | "stylus": "^0.54.8",
45 | "stylus-loader": "^3.0.2",
46 | "vue-cli-plugin-axios": "0.0.4",
47 | "vue-router": "^4.0.14"
48 | },
49 | "eslintConfig": {
50 | "root": true,
51 | "env": {
52 | "node": true
53 | },
54 | "extends": [
55 | "plugin:vue/vue3-essential",
56 | "eslint:recommended"
57 | ],
58 | "parserOptions": {
59 | "parser": "babel-eslint"
60 | },
61 | "rules": {}
62 | },
63 | "browserslist": [
64 | "> 1%",
65 | "last 2 versions",
66 | "not dead"
67 | ]
68 | }
69 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import {createRouter, createWebHistory} from 'vue-router'
2 | import Space from "../views/account/Space";
3 | import PicDetail from "../views/PicDetail";
4 |
5 | const routes = [
6 | {
7 | path: '/',
8 | name:'MainPage',
9 | component:() => import('../views/MainPage'),
10 | meta:{
11 | title: "Asoul Fan Art - 一个魂的二创"
12 | }
13 | },
14 | {
15 |
16 | path: '/video',
17 | name:'Video',
18 | component:() => import('../views/Video'),
19 | meta:{
20 | title: "Asoul Fan Art - 二创视频"
21 | }
22 | },
23 | {
24 | path: '/submit',
25 | name:'Submit',
26 | component:() => import('../views/Submit'),
27 | meta:{
28 | title: "Asoul Fan Art - 提交作品"
29 | }
30 | },
31 | {
32 | path: '/pic',
33 | name:'Pic',
34 | component:() => import('../views/Pic'),
35 | meta:{
36 | title: "Asoul Fan Art - 二创图片"
37 | }
38 | },
39 | {
40 | path: '/article',
41 | name:'Article',
42 | component:() => import('../views/Article'),
43 | meta:{
44 | title: "Asoul Fan Art - 二创专栏"
45 | }
46 | },
47 | {
48 | path:'/space/:uid',
49 | component:Space,
50 | props:true,
51 | meta:{
52 | title: "Asoul Fan Art - 个人中心"
53 | }
54 | },
55 | {
56 | path:'/pic/:dyid',
57 | component:() => import('../views/PicDetail'),
58 | props:true,
59 | meta:{
60 | title: "Asoul Fan Art - 图片详情"
61 | }
62 | },
63 | {
64 | path: '/asoul/history',
65 | name:'AsoulHistory',
66 | component:() => import('../views/AsoulHistory.vue'),
67 | meta:{
68 | title: "Asoul Fan Art - 5.10节奏时间线"
69 | }
70 | },
71 | {
72 | path: '/fans/medal',
73 | name:'FansMedal',
74 | component:() => import('../views/FansMedal.vue'),
75 | meta:{
76 | title: "Asoul Fan Art - 粉丝团统计"
77 | }
78 | },
79 | ]
80 |
81 | const router = createRouter({
82 | // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
83 | history: createWebHistory(),
84 | routes, // `routes: routes` 的缩写
85 | })
86 |
87 | router.beforeEach((to, from, next) => {
88 | /* 路由发生变化修改页面title */
89 | if (to.meta.title) {
90 | document.title = to.meta.title
91 | }
92 | next()
93 | })
94 |
95 |
96 | export default router
--------------------------------------------------------------------------------
/src/views/components/ArticleCard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
{{item.owner_name}}
11 |
{{general._changeBillionToCN(item.stats_views)}}
12 |
{{general._changeBillionToCN(item.stats_like)}}
13 |
{{general._changeBillionToCN(item.stats_reply)}}
14 |
{{general._timestampToTimeY(item.publish_time)}}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
40 |
41 |
--------------------------------------------------------------------------------
/src/views/components/StackedLine.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
107 |
108 |
--------------------------------------------------------------------------------
/src/views/Article.vue:
--------------------------------------------------------------------------------
1 |
2 |
14 |
17 |
18 |
32 |
33 |
34 |
35 |
36 |
96 |
97 |
100 |
--------------------------------------------------------------------------------
/public/img/A-SOUL Fans Art - 一个魂的二创_files/app.js.下载:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | A-SOUL Fans Art - 一个魂的二创
14 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/public/img/A-SOUL Fans Art - 一个魂的二创_files/chunk-vendors.js.下载:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | A-SOUL Fans Art - 一个魂的二创
14 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/vue.config.js:
--------------------------------------------------------------------------------
1 | const CompressionWebpackPlugin = require('compression-webpack-plugin')
2 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
3 | const webpack = require("webpack");
4 | const productionGzipExtensions = ['js', 'css']
5 | const isProduction = process.env.NODE_ENV === 'production'
6 | const path = require("path")
7 | function resolve(dir){
8 | return path.join(__dirname, dir)
9 | }
10 | let timeStamp = new Date().getTime();
11 | module.exports = {
12 | configureWebpack: {
13 | module:{
14 | rules:[{
15 | test:/\.mjs$/,
16 | include:/node_modules/,
17 | type:'javascript/auto'
18 | }]},
19 | output: { // 输出重构 打包编译后的js文件名称,添加时间戳.
20 | filename: `js/js[name].${timeStamp}.js`,
21 | chunkFilename: `js/chunk.[id].${timeStamp}.js`,
22 | },
23 | devtool: 'source-map',
24 | plugins: [
25 | // Ignore all locale files of moment.js
26 | new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
27 | // 配置compression-webpack-plugin压缩
28 | new CompressionWebpackPlugin({
29 | algorithm: 'gzip',
30 | test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
31 | threshold: 10240,
32 | minRatio: 0.8
33 | }),
34 | ],
35 | },
36 | css: { //重点.
37 | extract: { // 打包后css文件名称添加时间戳
38 | filename: `css/[name].${timeStamp}.css`,
39 | chunkFilename: `css/chunk.[id].${timeStamp}.css`,
40 | }
41 | },
42 | filenameHashing: false,
43 | publicPath: "/",
44 | outputDir: "newdist",
45 | assetsDir: "public",
46 | lintOnSave:false,
47 | runtimeCompiler: false,
48 | productionSourceMap: false,
49 | chainWebpack: config => {
50 | config.resolve.alias
51 | .set("@", resolve("src"))
52 | .set("@views", resolve("src/views"))
53 | .set("@components", resolve("src/views/components"))
54 | .set("@util", resolve("src/util"))
55 | .set("@account", resolve("src/views/account"))
56 | .set("@public", resolve("public"))
57 | },
58 | devServer: {
59 | open: true,
60 | host: '0.0.0.0',
61 | port: 9000,
62 | disableHostCheck: true,
63 | },
64 |
65 | pwa: {
66 | workboxPluginMode: 'GenerateSW', // 也可以定义为‘InjectManifest’模式。但是需自己写SW.js文件进行配置
67 | workboxOptions: {
68 | importWorkboxFrom: 'cdn', //从''cdn"导入workbox,也可以‘local’
69 | skipWaiting: true, // 安装完SW不等待直接接管网站
70 | clientsClaim: true,
71 | navigateFallback: '/index.html',
72 | exclude: [/\.(?:png|jpg|jpeg|svg)$/], //在预缓存中排除图片
73 | // 定义运行时缓存
74 | runtimeCaching: [
75 | {
76 | urlPattern: new RegExp('^https://cdn'),
77 | handler: 'NetworkFirst',
78 | options: {
79 | networkTimeoutSeconds: 20,
80 | cacheName: 'cdn-cache',
81 | cacheableResponse: {
82 | statuses: [200]
83 | }
84 | }
85 | }
86 | ]
87 | }
88 | }
89 |
90 | }
91 |
--------------------------------------------------------------------------------
/src/views/components/VideoGrid.vue:
--------------------------------------------------------------------------------
1 |
2 |
26 |
27 |
28 |
107 |
108 |
--------------------------------------------------------------------------------
/public/img/zwcc.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
--------------------------------------------------------------------------------
/src/views/components/Waterfall.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 | >
16 |
17 |
18 |
19 |
20 |
21 |
98 |
99 |
118 |
--------------------------------------------------------------------------------
/src/views/components/NavItem.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
68 |
69 |
157 |
--------------------------------------------------------------------------------
/src/views/components/ImgGallery.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Asoul Fan Art - 一个魂的二创
8 |
共收录{{illust_count}}张插画
9 |
看到喜欢的作品请去支持原作者
10 |
11 |
@{{item.illus}}
12 |
13 |
14 |
15 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
61 |
62 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 点击将网站添加到桌面
9 |
10 |
16 |
17 |
18 |
19 |
92 |
93 |
118 |
--------------------------------------------------------------------------------
/public/img/A-SOUL Fans Art - 一个魂的二创.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | A-SOUL Fans Art - 一个魂的二创
14 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/src/views/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
20 |
21 |
42 |
43 |
44 |
126 |
--------------------------------------------------------------------------------
/src/views/Video.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
25 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
173 |
174 |
177 |
--------------------------------------------------------------------------------
/src/views/components/VideoCard.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
![]()
14 |
15 |
{{item.title}}
16 |
17 |
18 | 全站排行榜最高第{{item.his_rank}}名
19 |
20 |
21 | 当前排行榜第{{item.now_rank}}名
22 |
23 |
24 |
32 |
{{g._changeBillionToCN(item.stat_view)}}
33 |
{{g._changeBillionToCN(item.stat_danmaku)}}
34 |
{{g._timestampToTime(item.pubdate)}}
35 |
36 | {{g._changeBillionToCN(item.stat_like)}}
37 | {{g._changeBillionToCN(item.stat_coin)}}
38 | {{g._changeBillionToCN(item.stat_favorite)}}
39 | {{g._changeBillionToCN(item.stat_reply)}}
40 | {{g._changeBillionToCN(item.stat_share)}}
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
86 |
87 |
--------------------------------------------------------------------------------
/src/views/PicDetail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
14 |
15 |
16 |
19 |
20 |
21 |
22 | 上一张
25 | {{`${curImgIndex+1}/${response.pic_url.length}`}}
26 | 下一张
29 |
30 |
31 |
32 |
33 |
34 |
{{response.desc}}
35 |
36 | {{Number(tag.tag_title[tag.tag_title.length-1]) ? tag.tag_title.substring(0, tag.tag_title.length-1): tag.tag_title}}
37 |
38 |
39 |
{{response.author.sign}}
40 |
42 |
{{response.author.name}}
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
119 |
--------------------------------------------------------------------------------
/src/views/Meme.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
201 |
202 |
216 |
217 |
--------------------------------------------------------------------------------
/src/views/account/Space.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
![]()
6 |
7 |
8 |
视频
9 |
{{response.videos.num}}
10 |
11 |
12 |
插画
13 |
{{response.illusts.num}}
14 |
15 |
16 |
专栏
17 |
{{response.articles.num}}
18 |
19 |
20 |
21 |
{{ response.account.name }}
22 |
23 |
33 |
34 |
{{ response.account.sign }}
35 |
36 |
42 |
43 |
44 |
45 |
46 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
207 |
208 |
240 |
--------------------------------------------------------------------------------
/src/views/components/WaterfallPic.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
213 |
214 |
228 |
229 |
--------------------------------------------------------------------------------
/src/views/FansMedal.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
14 |
15 |
16 |
17 |
18 |
24 |
25 |
26 |
32 | {{ item.name }}
33 |
34 |
35 |
36 | 2022年6月27日开始记录,数据每小时更新一次~
37 |
38 |
39 |
40 |
46 |
47 |
48 | {{ `${rooms[curRoom].name}粉丝团(${titles[curType] === '选择时间段' ? selectTimes : titles[curType]})` }}
49 |
50 |
51 |
58 |
59 |
60 |
61 |
62 | 日均变化
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 | +{{scope.row.data.fansMedalChange}}
71 | {{scope.row.data.fansMedalChange}}
72 | {{scope.row.data.fansMedalChange}}
73 |
74 |
75 |
76 |
77 |
78 | +{{scope.row.data.guardChange}}
79 | {{scope.row.data.guardChange}}
80 | {{scope.row.data.guardChange}}
81 |
82 |
83 |
84 |
85 |
86 |
87 | 完成任意任务可点亮粉丝牌, 亲密度(100+600+500+100=1300)获取方式:
88 | 1、发弹幕打卡100
89 | 2、双击点赞200,一天三次
90 | 3、分享直播间100,一天五次
91 | 4、连续观看直播30分钟100(必须主播开播)
92 | 5、送礼物
93 |
94 |
95 |
96 |
185 |
186 |
--------------------------------------------------------------------------------
/src/views/components/Vwaterfall.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
215 |
216 |
230 |
231 |
--------------------------------------------------------------------------------
/src/util/http.js:
--------------------------------------------------------------------------------
1 | import Axios from "axios";
2 |
3 | let hosts = 'https://api.asoulfanart.com:9000'
4 | //hosts = 'http://192.168.1.10:8000'
5 | Axios.defaults.withCredentials = true
6 |
7 | Axios.interceptors.request.use(
8 | config =>{
9 | const token = localStorage.getItem('token')
10 | if (token)
11 | config.headers.Authorization = "Token " + token;
12 | return config
13 | }, error => {
14 | return Promise.reject(error);
15 | }
16 | )
17 |
18 | const _getBV = (params) =>{
19 | params.tag_id = params.tag_id || 0
20 | if (params.tag_id == 0 || params.rank == 4){
21 | params.type = 1
22 | }else{
23 | params.type = 2
24 | }
25 |
26 | return Axios({
27 | url:hosts + "/getBV" + '?nocache=' + new Date().getTime(),
28 | method:"get",
29 | params: params
30 | })
31 | }
32 |
33 | const _getVideoPart = () =>{
34 | return Axios({
35 | url:hosts + "/getVideoPart",
36 | method:"get"
37 | })
38 | }
39 |
40 | const _getPicTags = () =>{
41 | return Axios({
42 | url:hosts +"/getPicTags",
43 | method:"get"
44 | })
45 | }
46 |
47 | const _submitBV = (params) =>{
48 | return Axios({
49 | url:hosts +"/submitBV",
50 | method:"get",
51 | params:params
52 | })
53 | }
54 |
55 | const _getDynamicDetail = (params) =>{
56 | return Axios({
57 | url:hosts +"/getDynamicDetail",
58 | method: "get",
59 | params:params
60 | })
61 | }
62 |
63 | const _getPic = (params) =>{
64 | params.tag_id = params.tag_id || 0
65 | if (params.tag_id == 0 || params.rank == 4){
66 | params.type = 1
67 | }else{
68 | params.type = 2
69 | }
70 | return Axios({
71 | url:hosts +"/getPic" + '?nocache=' + new Date().getTime(),
72 | method: "get",
73 | params:params
74 | })
75 | }
76 |
77 | const _getNotification = (params) =>{
78 | return Axios({
79 | url:hosts +"/getNotification",
80 | method: "get",
81 | params:params
82 | })
83 | }
84 |
85 | const _submit = (params) =>{
86 | return Axios({
87 | url:hosts +"/submit",
88 | method: "get",
89 | params:params
90 | })
91 | }
92 |
93 | const _getOfficialQA = (params) =>{
94 | return Axios({
95 | url:hosts +"/getOfficialQA",
96 | method: "get",
97 | params:params
98 | })
99 | }
100 |
101 | const _getOfficialQADetail = (params) =>{
102 | return Axios({
103 | url:hosts +"/getOfficialQADetail",
104 | method: "get",
105 | params:params
106 | })
107 | }
108 |
109 | const _searchOfficialQA = (params) =>{
110 | return Axios({
111 | url:hosts +"/searchOfficialQA",
112 | method: "get",
113 | params:params
114 | })
115 | }
116 |
117 | const _sortGetOfficialQA = (params) =>{
118 | return Axios({
119 | url:hosts +"/sortGetOfficialQA",
120 | method: "get",
121 | params:params
122 | })
123 | }
124 |
125 | const _getArticleSorts = (params) =>{
126 | return Axios({
127 | url:hosts +"/getArticleSorts",
128 | method: "get",
129 | params:params
130 | })
131 | }
132 |
133 | const _submitArticle = (params) =>{
134 | return Axios({
135 | url:hosts +"/submitArticle",
136 | method: "get",
137 | params:params
138 | })
139 | }
140 |
141 | const _getMeme = (params) =>{
142 | params.tag_id = params.tag_id || 0
143 | if (params.tag_id == 0 || params.rank == 4){
144 | params.type = 1
145 | }else{
146 | params.type = 2
147 | }
148 | return Axios({
149 | url:hosts +"/getMeme" + '?nocache=' + new Date().getTime(),
150 | method: "get",
151 | params:params
152 | })
153 | }
154 |
155 | const _getArticleList = (params) =>{
156 | return Axios({
157 | url:hosts +"/getArticleList" + '?nocache=' + new Date().getTime(),
158 | method: "get",
159 | params:params
160 | })
161 | }
162 |
163 | const _getAccountInfo = (params) => {
164 | return Axios({
165 | url:hosts +"/account/info",
166 | method: "get",
167 | params:params
168 | })
169 | }
170 |
171 | const _tempLogin = (params) => {
172 | return Axios({
173 | url:hosts +"/account/temp/login",
174 | method: "get",
175 | params:params
176 | })
177 | }
178 |
179 | const _tempView = (params) => {
180 | return Axios({
181 | url:hosts +"/account/temp/view",
182 | method: "post",
183 | data:params
184 | })
185 | }
186 |
187 | const _getRank = (params) => {
188 | return Axios({
189 | url:hosts +"/pic/getRank",
190 | method: "get",
191 | params:params
192 | })
193 | }
194 |
195 | const _regAccount = (params) => {
196 | return Axios({
197 | url:hosts +"/account/register",
198 | method: "post",
199 | data:params
200 | })
201 | }
202 |
203 | const _accountLogin = (params) => {
204 | return Axios({
205 | url:hosts +"/account/login",
206 | method: "post",
207 | data:params
208 | })
209 | }
210 |
211 | const _getAccountProfile = () => {
212 | return Axios({
213 | url:hosts +"/account",
214 | method: "get",
215 | })
216 | }
217 |
218 | const _addFavorites = (params) => {
219 | return Axios({
220 | url:hosts +"/account/favorites/add",
221 | method: "post",
222 | data:params,
223 | })
224 | }
225 |
226 | const _addView = (params) => {
227 | return Axios({
228 | url:hosts +"/account/view/add",
229 | method: "post",
230 | data:params,
231 | })
232 | }
233 |
234 | const _getFavorites = (params) => {
235 | return Axios({
236 | url:hosts +"/account/favorites",
237 | method: "get",
238 | params:params
239 | })
240 | }
241 |
242 | const _getViewHistory = (params) => {
243 | return Axios({
244 | url:hosts +"/account/view/history",
245 | method: "get",
246 | params:params
247 | })
248 | }
249 |
250 | const _getPicDetail = (id) =>{
251 | return Axios({
252 | url:hosts +"/getPicDetail" + '?nocache=' + new Date().getTime(),
253 | method: "get",
254 | params: {id}
255 | })
256 | }
257 |
258 | const _getFansMedalLog = (params) =>{
259 | return Axios({
260 | url:hosts +"/fans/medal/log",
261 | method: "get",
262 | params: params
263 | })
264 | }
265 |
266 | const _getHomeInfo = (params) =>{
267 | return Axios({
268 | url:hosts +"/home",
269 | method: "get",
270 | params: params
271 | })
272 | }
273 |
274 |
275 | export default {
276 | _regAccount,
277 | _accountLogin,
278 | _getAccountProfile,
279 | _addFavorites,
280 | _addView,
281 | _getFavorites,
282 | _getViewHistory,
283 | _getHomeInfo,
284 |
285 | _getBV,
286 | _getVideoPart,
287 | _submitBV,
288 | _getDynamicDetail,
289 | _getPic,
290 | _getPicDetail,
291 | _getPicTags,
292 | _getNotification,
293 | _submit,
294 | _getOfficialQA,
295 | _getOfficialQADetail,
296 | _sortGetOfficialQA,
297 | _searchOfficialQA,
298 | _getArticleSorts,
299 | _submitArticle,
300 | _getMeme,
301 | _getArticleList,
302 | _getAccountInfo,
303 | _tempLogin,
304 | _tempView,
305 | _getRank,
306 |
307 |
308 | _getFansMedalLog
309 | }
310 |
311 |
312 |
--------------------------------------------------------------------------------
/src/views/components/ImageCard.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
{{img.pic_url.length}}
11 |
12 |
13 |
14 |
15 |
16 |
23 |
24 |
25 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
![]()
40 |
{{img.name}}
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
164 |
165 |
280 |
--------------------------------------------------------------------------------
/src/views/MainPage.vue:
--------------------------------------------------------------------------------
1 |
2 |
84 |
85 |
86 |
192 |
193 |
243 |
--------------------------------------------------------------------------------
/src/views/AsoulHistory.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
整理了5.10珈乐毕业节奏相对完整的时间线,供大家参考
6 |
• 蓝色 - 官方相关已证实信息
7 |
• 绿色 - 珈乐中之人相关
8 |
• 黄色 - 间接已证实信息
9 |
• 灰色 - 造谣信息
10 |
11 |
21 |
22 | ({{activity.srcList.length}}图)
23 |
24 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
224 |
225 |
--------------------------------------------------------------------------------
/public/timeline.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "content": "乐吧涉咕咕承认5.10 asoul吧的处理预案为极端堵嘴,任何事情往企划身上浇油。 [造谣粉头]
涉咕咕:这个企划把我孩子伤了,我要和这个企划鱼死网破,别的我根本不在乎,你们知道吗?
岁纳京子:对我而言,“确保珈乐的人身安全/确保珈乐能够顺利离开”的目的性大于“确保剩下四个人的公平待遇”
[某些粉丝]
不算拉踩:四个提线木偶, 一个反抗资本的勇士。
枝江难题:5-1=? 答案:5-1=0 因为1>4。
不计后果:没有退路怎么办,冲死企划再说。
践踏梦想:我们要去更大的舞台(鸟巢)———黑称巢友。
",
4 | "timestamp": "2022-06-20",
5 | "type": "warning",
6 | "hollow": true
7 | },
8 | {
9 | "content": "“梧桐”在乐吧爆出另一份私联聊天记录",
10 | "timestamp": "2022-06-17 23:27",
11 | "type": "warning",
12 | "hollow": true
13 | },
14 | {
15 | "content": "乐吧吧主涉咕咕解释5.10当天发的小作文【嘉然、乃琳相关为推测】",
16 | "timestamp": "2022-06-09",
17 | "type": "warning",
18 | "hollow": true,
19 | "url": "https://message.biliimg.com/bfs/im/03b095a2ad5ee64e8dd3b5eb07242931ba6cc99a.png",
20 | "srcList":
21 | [
22 | "https://message.biliimg.com/bfs/im/03b095a2ad5ee64e8dd3b5eb07242931ba6cc99a.png"
23 | ]
24 | },
25 | {
26 | "content": "珈乐中之人回应【唐啵虎说:期待接下来的小男友版本!!\n不过 那个聊天记录我看了 好像少了点东西\n当晚向上报备过了 又不是什么偷偷摸摸的事】",
27 | "timestamp": "2022-06-05 15:00左右",
28 | "type": "success",
29 | "hollow": true,
30 | "url": "https://message.biliimg.com/bfs/im/2e2cb6167dac5a3aefa1d3b2ce1d6e1d3be4e333.jpg",
31 | "srcList":
32 | [
33 | "https://message.biliimg.com/bfs/im/2e2cb6167dac5a3aefa1d3b2ce1d6e1d3be4e333.jpg",
34 | "https://message.biliimg.com/bfs/im/74c7d6f3f45cabcdeddfc567fd301cbd40e98ebb.png",
35 | "https://message.biliimg.com/bfs/im/e963503d66f077a4212019f84645123a963fcc8e.png"
36 | ]
37 | },
38 | {
39 | "content": "“梧桐”在乐吧爆出私联聊天记录",
40 | "timestamp": "2022-06-04 深夜",
41 | "type": "warning",
42 | "hollow": true
43 | },
44 | {
45 | "content": "王国小团体”奈须蘑菇“爆出私联相关证据一共私联了两位,“蘑菇”和“梧桐”
",
46 | "timestamp": "2022-06-04 深夜",
47 | "type": "warning",
48 | "hollow": true
49 | },
50 | {
51 | "content": "珈乐中之人改名'魏啵鹿'->'宝宝的id都被占光了'后评论区回复【我没有ID可以改了】以前微博粉丝一般叫王贝拉的化名微波炉,微波炉=wbl=王贝拉
在511直播中贝拉说过”我没有家可以回了“
",
52 | "timestamp": "2022-06-01 凌晨",
53 | "type": "success",
54 | "hollow": true,
55 | "url": "https://message.biliimg.com/bfs/im/71ba19fcb89552a0288ecf28f81e1d5a9b6def61.jpg",
56 | "srcList":
57 | [
58 | "https://message.biliimg.com/bfs/im/71ba19fcb89552a0288ecf28f81e1d5a9b6def61.jpg"
59 | ]
60 | },
61 |
62 | {
63 | "content": "珈乐中之人美图秀秀发文【三月四月就知道个人信息泄露,被开盒的人做什么都无济于事】",
64 | "timestamp": "2022-05-27 20:50",
65 | "type": "success",
66 | "hollow": true,
67 | "url": "https://message.biliimg.com/bfs/im/ad13b4d0d894fdfbc6e3e04f60bf126fbb7b8a7b.jpg",
68 | "srcList":
69 | [
70 | "https://message.biliimg.com/bfs/im/ad13b4d0d894fdfbc6e3e04f60bf126fbb7b8a7b.jpg"
71 | ]
72 | },
73 | {
74 | "content": "珈乐中之人评论区回复【宝宝回来了 今天去晒太阳爬山去了 看到了一只松许 两只蜈蚣 两只蜗牛 回答完毕你们今天在干嘛】3小时后补充回复【这是今天我有印象觉得可爱的小动物 其实还有一只金龟子 很多很多鱼和鸟】
",
75 | "timestamp": "2022-05-24 18:51",
76 | "type": "success",
77 | "hollow": true,
78 | "url": "https://message.biliimg.com/bfs/im/110c49105fe1e07155747a92bc0c96432482233c.png",
79 | "srcList":
80 | [
81 | "https://message.biliimg.com/bfs/im/110c49105fe1e07155747a92bc0c96432482233c.png",
82 | "https://message.biliimg.com/bfs/im/df44eecef19613e9ace135c74227ec97b354022a.png",
83 | "https://message.biliimg.com/bfs/im/f9cdfef3dd64e719f8072812ba17f14dffdb5e24.jpg"
84 | ]
85 | },
86 | {
87 | "content": "A-SOUL_Official发布【[每周QA]称原住所泄漏是因为\"某张自拍照被三角定位导致\"】",
88 | "timestamp": "2022-05-24 18:51",
89 | "type": "primary",
90 | "hollow": true
91 | },
92 | {
93 | "content": "青瞳视觉发布澄清声明【动捕服理论不可能划伤皮肤】",
94 | "timestamp": "2022-05-20 16:54",
95 | "type": "primary",
96 | "hollow": true
97 | },
98 | {
99 | "content": "财通商社访谈:前A-SOUL负责人",
100 | "timestamp": "2022-05-19 17:20",
101 | "type": "primary",
102 | "hollow": true
103 | },
104 | {
105 | "content": "A-SOUL企划上级对江南、V项目组的一封信,决定最后一次回应本次事件【无论你说什么做什么,别人都可能误解为大公司在霸凌一位处于弱势群体的员工】",
106 | "timestamp": "2022-05-18 00:06",
107 | "type": "primary",
108 | "hollow": true
109 | },
110 | {
111 | "content": "A-SOUL_Official发布【[每周QA]个人隐私泄漏问题联系警方处理】",
112 | "timestamp": "2022-05-17 18:06",
113 | "type": "primary",
114 | "hollow": true
115 | },
116 | {
117 | "content": "滨江区人力社保局回应【未发现杭州看潮信息咨询有限公司存在克扣工资和强迫签订劳动合同的情况】事件定性:2022年3月底,根据字节跳动内部业务规划,由杭州看潮信息咨询有限公司作为经纪公司于A-SOUL团队各成员沟通续约事宜,珈乐不同意续约,另外四人经协商达成续约。A-SOUL项目组决定从5月20日开始停止珈乐直播工作,并在5月10日对外宣布该决定。结合此前网络传播的部分信息以及珈乐本人在各平台网络账号中发布的信息,粉丝认为珈乐在A-SOUL项目中过得不好、不开心、待遇偏低等问题,同时担心其他四名成员人身安全和待遇问题,故掀起极大的反A-SOUL浪潮。
",
118 | "timestamp": "2022-05-16 18:39",
119 | "type": "primary",
120 | "hollow": true
121 | },
122 | {
123 | "content": "某聊天记录
5.1凌晨联系网易云[此时ID为三松许]删除动态,之后她隐藏了动态、名字改为二手月季。
爆料人称57分钟前动态的为5月8日13:42(截图时间为14:24)
有一张与[二手月季]的wyy私信聊天截图(截图时间为凌晨1:14)",
124 | "timestamp": "2022-05-16 15:00",
125 | "type": "warning",
126 | "hollow": true,
127 | "url": "https://message.biliimg.com/bfs/im/ea07a7317fdad9899392b59862423fb7b20b9f8a.jpg",
128 | "srcList":
129 | [
130 | "https://message.biliimg.com/bfs/im/ea07a7317fdad9899392b59862423fb7b20b9f8a.jpg"
131 | ]
132 | },
133 | {
134 | "content": "S1应援会在B站发布专栏【3.5晚珈乐半夜被叫醒不存在期压、向晚脸模、绩效为假,4月中旬有人要挖全部成员的账号】",
135 | "timestamp": "2022-05-15 19:49",
136 | "type": "primary",
137 | "hollow": true
138 | },
139 | {
140 | "content": "乐报、前乐组组长回旋镖发帖【还好自己人挖出来,提前10几天知道wyy,事情确实朝着对她有利的方向发展,在5.28晚销号,帖子删除】已经回归现实
",
141 | "timestamp": "2022-05-15 02:41",
142 | "type": "warning",
143 | "hollow": true,
144 | "url": "https://message.biliimg.com/bfs/im/dc2176bd55f6bdb8e2cd4f4468235c2389e1378f.jpg",
145 | "srcList":
146 | [
147 | "https://message.biliimg.com/bfs/im/dc2176bd55f6bdb8e2cd4f4468235c2389e1378f.jpg"
148 | ]
149 | },
150 | {
151 | "content": "字节内部苏轼对于本次事件的回应【珈乐离队尝试挽留,但未能达成一致。薪资:粉丝在直播时候打赏了100元,小姐姐们可以获得10元分成】",
152 | "timestamp": "2022-05-14 18:56",
153 | "type": "primary",
154 | "hollow": true
155 | },
156 | {
157 | "content": "A-SOUL_Official发布【A-SOUL制作委员会对近期事件的说明】",
158 | "timestamp": "2022-05-14 15:30",
159 | "type": "primary",
160 | "hollow": true
161 | },
162 | {
163 | "content": "珈乐中之人转发微博后删除(设备为iPhone 13 mini)【最后一段原文称\"珈乐不是逃脱的胆小鬼,是勇于冲破资本霸陵的酷盖。另外四个女孩子是被资本欺骗的可怜人\"】次日微博显示昨日发博1
",
164 | "timestamp": "2022-05-14 02:16",
165 | "type": "success",
166 | "hollow": true,
167 | "url": "https://message.biliimg.com/bfs/im/6424dce21f83c50cb5bd255c7105742ab215b9db.jpg",
168 | "srcList":
169 | [
170 | "https://message.biliimg.com/bfs/im/6424dce21f83c50cb5bd255c7105742ab215b9db.jpg",
171 | "https://message.biliimg.com/bfs/im/2e1eb9d524c6a32a37c94f776a4d52a6a63578b0.jpg"
172 | ]
173 | },
174 | {
175 | "content": "岱川Doris在直播间放了一段珈乐中之人的语音【我刚刚去你B站评论区看了,他们在下面闹,有没有骚扰你的啊】",
176 | "timestamp": "2022-05-11 晚 岱川Doris直播",
177 | "type": "success",
178 | "hollow": true
179 | },
180 | {
181 | "content": "A-SOUL_Official发布【《给一个魂的一封信》A-SOUL企划负责人苏轼】",
182 | "timestamp": "2022-05-11 19:05",
183 | "type": "primary",
184 | "hollow": true
185 | },
186 | {
187 | "content": "A-SOUL_Official发布【追加一场珈乐的单播】",
188 | "timestamp": "2022-05-11 15:50",
189 | "type": "primary",
190 | "hollow": true
191 | },
192 | {
193 | "content": "某豆友的核中核",
194 | "timestamp": "2022-05-11 08:00",
195 | "type": "info",
196 | "hollow": true,
197 | "url": "https://message.biliimg.com/bfs/im/91c3148b917fc9fad0c7f3003eec53cf08118d75.jpg",
198 | "srcList": [
199 | "https://message.biliimg.com/bfs/im/91c3148b917fc9fad0c7f3003eec53cf08118d75.jpg",
200 | "https://message.biliimg.com/bfs/im/df2e9e81e853cef0a5240f2f77163f40011c6b6d.jpg",
201 | "https://message.biliimg.com/bfs/im/cfde7a9ff8647dae9ba52e40f12e895dbbe2e7eb.jpg"
202 | ]
203 | },
204 | {
205 | "content": "A-SOUL_Official发布【A-SOUL制作委员会的临时QA】",
206 | "timestamp": "2022-05-11 02:39",
207 | "type": "primary",
208 | "hollow": true
209 | },
210 | {
211 | "content": "原乐组组长、乐超主持人岁纳京子发文【你们现在随便一搜都能看到,关于她的那些消息。训练到凌晨,练到吐,身体受伤,职业病。】",
212 | "timestamp": "2022-05-10 18:54",
213 | "type": "info",
214 | "hollow": true
215 | },
216 | {
217 | "content": "珈乐网易云动态留档截图开始在各处传播疑点:一张截图为57分钟前、另一张为12:42都没有截日期、网易云ID为[二手月季]
",
218 | "timestamp": "2022-05-10 17:30-18:00",
219 | "type": "success",
220 | "hollow": true,
221 | "url": "https://message.biliimg.com/bfs/im/59b30bd7f0d1fb5f30789e58e4d6086fe0e6c2cc.jpg",
222 | "srcList":
223 | [
224 | "https://message.biliimg.com/bfs/im/59b30bd7f0d1fb5f30789e58e4d6086fe0e6c2cc.jpg",
225 | "https://message.biliimg.com/bfs/im/f3608a15a9facebe02ddd590bd07b30e251367bf.jpg",
226 | "https://i0.hdslb.com/bfs/article/6ab6fc4fd29d5f9916d38e9d1e87c073340b65b0.jpg",
227 | "https://i0.hdslb.com/bfs/article/698f99e2ffe6181e070aebe281b28d1d3681f2a2.jpg",
228 | "https://i0.hdslb.com/bfs/article/494fc0c30884cffd9c414386c7363c64e6621d24.jpg"
229 | ]
230 | },
231 | {
232 | "content": "原乐组组长、乐超主持人岁纳京子发文【嘉然的处境很困难,与珈乐相依为暖,无法解约,称A-SOUL甩锅给珈乐】",
233 | "timestamp": "2022-05-10 17:42",
234 | "type": "info",
235 | "hollow": true
236 | },
237 | {
238 | "content": "原乐组组长、乐超主持人岁纳京子发文【珈乐失去声音、失去健康讨厌杭州,宿舍不能养富贵,捡来的小狗也被抢走】",
239 | "timestamp": "2022-05-10 17:13",
240 | "type": "info",
241 | "hollow": true
242 | },
243 | {
244 | "content": "某楼友的核中核",
245 | "timestamp": "2022-05-10 16:52",
246 | "type": "info",
247 | "hollow": true,
248 | "url": "https://message.biliimg.com/bfs/im/b97cf1c71164b1ad253661c0deaf43b30259bcdd.png",
249 | "srcList":
250 | [
251 | "https://i0.hdslb.com/bfs/article/5aa3e07af0af7ec46a4cbd9695a16fbe8191bca5.jpg"
252 | ]
253 | },
254 | {
255 | "content": "某用户回帖【聊天截图时间为4.28,A-SOUL要换UE了,5.10会宣布珈乐毕业】",
256 | "timestamp": "2022-05-10 16:50",
257 | "type": "warning",
258 | "hollow": true
259 | },
260 | {
261 | "content": "原乐组组长、乐超主持人岁纳京子发文【更多更恶心的事在这个企划中,中之人就是人下人】,王力口乐吧吧主涉咕咕后续在贴吧、B站发文",
262 | "timestamp": "2022-05-10 16:36",
263 | "type": "info",
264 | "hollow": true
265 | },
266 | {
267 | "content": "A-SOUL_Official发布【珈乐因身体及学业原因进入\"直播休眠\"】",
268 | "timestamp": "2022-05-10 16:30",
269 | "type": "primary",
270 | "hollow": true
271 | }
272 | ]
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | {
60 | "keyToString": {
61 | "RunOnceActivity.OpenProjectViewOnStart": "true",
62 | "RunOnceActivity.ShowReadmeOnStart": "true",
63 | "WebServerToolWindowFactoryState": "false",
64 | "node.js.detected.package.eslint": "true",
65 | "node.js.selected.package.eslint": "(autodetect)",
66 | "nodejs_package_manager_path": "npm",
67 | "settings.editor.selected.configurable": "editor.preferences.fonts.default",
68 | "vue.rearranger.settings.migration": "true"
69 | }
70 | }
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 | 1632100887544
100 |
101 |
102 | 1632100887544
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
--------------------------------------------------------------------------------
/src/views/components/Condition.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | 全部分区
9 |
10 |
11 | {{`${item.tname?item.tname:item.tag_title}`}}
19 | {{`${item.num?'('+item.num+')':''}`}}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | 排序
31 |
32 |
33 |
34 |
35 |
36 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
52 |
53 |
54 |
60 |
61 |
62 |
63 |
64 |
70 |
71 |
72 |
73 |
81 |
82 |
83 |
84 |
85 |
86 |
93 | {{item.name}}
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
441 |
442 |
459 |
--------------------------------------------------------------------------------