Compare commits

...

71 Commits

Author SHA1 Message Date
A1300399510
4c0d840705 no message 2025-02-08 12:10:33 +08:00
A1300399510
2b2bd9da53 修改登录判断 2025-02-08 11:45:15 +08:00
A1300399510
f6091b0b28 修改详情删除提示 2024-12-09 17:07:59 +08:00
A1300399510
170ba990fa no message 2024-12-04 19:22:21 +08:00
A1300399510
bc299037e5 no message 2024-12-03 18:58:14 +08:00
A1300399510
1d0d54e445 no message 2024-12-03 18:51:04 +08:00
A1300399510
00f30db09e no message 2024-12-03 18:32:38 +08:00
A1300399510
ca024d9a16 no message 2024-12-03 17:54:23 +08:00
A1300399510
44aeb78e4f no message 2024-12-03 17:53:36 +08:00
A1300399510
70f4c35039 no message 2024-12-03 17:44:22 +08:00
A1300399510
380dde983a no message 2024-12-03 17:21:57 +08:00
A1300399510
a7deaea24e no message 2024-12-03 17:06:22 +08:00
A1300399510
cc4295f008 加向小程序发url ,分享用 2024-12-03 16:58:46 +08:00
A1300399510
3ee03375b8 no message 2024-10-21 11:36:05 +08:00
A1300399510
3589d6a3f0 增加登录后定时器,修改socket链接 2024-10-21 11:16:14 +08:00
A1300399510
f0de39f135 修改统计代码 2024-10-21 10:47:53 +08:00
A1300399510
399922bb77 no message 2024-08-26 17:16:43 +08:00
A1300399510
11056a74a4 增加管理员删除操作 2024-08-26 16:58:58 +08:00
A1300399510
98301d80fe 去掉顿号 2024-08-14 17:13:28 +08:00
A1300399510
25e15aa336 详情页加求定位 2024-08-14 17:08:38 +08:00
A1300399510
deffec9e26 no message 2024-08-09 15:33:44 +08:00
A1300399510
1abc53b06d no message 2024-08-09 15:15:12 +08:00
A1300399510
e29e0e36b9 no message 2024-08-09 15:06:07 +08:00
A1300399510
7563c6c30e no message 2024-08-09 14:56:57 +08:00
A1300399510
4d520f5665 no message 2024-08-09 14:55:08 +08:00
A1300399510
6501d55e4f no message 2024-08-09 14:46:53 +08:00
A1300399510
da5e80313b 重新打包 2024-06-11 16:11:52 +08:00
A1300399510
22ff67243f no message 2024-06-11 16:06:51 +08:00
A1300399510
094aac1ac7 修改我的页面 跳转 小程序 2024-06-11 14:58:09 +08:00
A1300399510
3df8333302 no message 2024-05-30 10:55:53 +08:00
A1300399510
983ec684ce no message 2024-05-30 10:48:20 +08:00
A1300399510
725786811a 修改的标签判断 2024-03-06 11:14:13 +08:00
A1300399510
4e3046596e no message 2024-02-29 11:43:19 +08:00
A1300399510
0425959db4 no message 2024-02-29 11:42:23 +08:00
A1300399510
c791f02ee4 no message 2024-02-29 11:32:58 +08:00
A1300399510
46a14bea6c no message 2024-02-28 19:09:34 +08:00
A1300399510
e0af963c4a no message 2023-12-18 11:08:45 +08:00
A1300399510
1138eac28f 修改发布按钮图层点击问题 2023-11-10 13:50:23 +08:00
A1300399510
72aa4006b7 修改取消跳转PC,修改图片大小 2023-11-10 12:10:14 +08:00
A1300399510
3c35324cfa no message 2023-10-30 14:15:23 +08:00
A1300399510
b7fc627226 no message 2023-10-23 14:05:52 +08:00
A1300399510
59d40d3609 no message 2023-10-23 13:31:55 +08:00
A1300399510
bc778c3a48 no message 2023-10-17 11:01:32 +08:00
A1300399510
bd0beb426b no message 2023-10-17 10:37:15 +08:00
A1300399510
c0bc6c5431 no message 2023-10-16 18:43:39 +08:00
A1300399510
442ad9ff31 no message 2023-10-16 17:26:27 +08:00
A1300399510
462aefb7b9 no message 2023-10-16 17:03:34 +08:00
A1300399510
98d53ad45e no message 2023-10-16 16:59:04 +08:00
A1300399510
07b7eb2471 no message 2023-10-16 16:55:40 +08:00
A1300399510
562481d08c no message 2023-10-16 16:45:12 +08:00
A1300399510
7dc3c78715 no message 2023-10-16 16:40:32 +08:00
A1300399510
9fe6c9046b no message 2023-10-16 16:39:37 +08:00
A1300399510
4b9614be25 no message 2023-10-16 16:15:39 +08:00
A1300399510
2c601cf573 no message 2023-10-16 16:15:11 +08:00
A1300399510
7d3a84d6ae no message 2023-10-16 16:08:23 +08:00
A1300399510
517d4803c3 no message 2023-10-16 16:03:29 +08:00
A1300399510
126fb7355c 开放dist 2023-10-16 15:38:04 +08:00
A1300399510
e1bcfc00c5 添加socket 2023-09-20 15:51:18 +08:00
A1300399510
787f4e8094 修改 2023-08-18 18:06:00 +08:00
A1300399510
2f3e1198e6 修改详情投币bug 2023-08-18 17:19:53 +08:00
A1300399510
25b6e6128d 修改登录按钮样式 2023-07-13 12:26:45 +08:00
A1300399510
79405f8853 修改统计代码 2023-07-07 11:20:30 +08:00
A1300399510
261a6c61c4 提交增加统计代码 2023-07-07 11:04:32 +08:00
A1300399510
bcfaa0b260 提交 2023-05-22 19:19:28 +08:00
A1300399510
39456715c8 提交我的页面的 UID 2023-04-28 11:51:37 +08:00
xiaoronghao
7b2c4584b4 提交 2023-04-18 16:44:14 +08:00
xiaoronghao
4e228cadd1 提交 2023-04-17 19:24:06 +08:00
xiaoronghao
808baf798b no message 2023-04-17 16:19:01 +08:00
xiaoronghao
34d052255f 提交测试 2023-04-17 15:47:08 +08:00
xiaoronghao
1ecc639410 全部板块左边需要溢出,详情页的提示框需要页面居中 2023-04-14 19:13:49 +08:00
xiaoronghao
bb952fc553 提交 2023-04-13 19:12:17 +08:00
111 changed files with 18791 additions and 4549 deletions

2
.gitignore vendored
View File

@@ -3,5 +3,5 @@ logs
*.log
node_modules
.DS_Store
dist
# dist
*.local

4
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,4 @@
{
"editor.suggest.snippetsPreventQuickSuggestions": false,
"aiXcoder.showTrayIcon": true
}

21
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,21 @@
{
"version": "2.0.0",
"tasks": [{
"label": "save",
"command": "git",
"type": "shell",
"args": [
"commit",
"-a",
"-m",
"auto commit",
"&&",
"git",
"push",
"origin",
"master"
],
"problemMatcher": []
}],
"preShutdownTask": "save"
}

1
dist/css/124.fd7ddcad.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/css/217.0fc0e835.css vendored Normal file
View File

@@ -0,0 +1 @@
.path-box[data-v-07dc0a79]{display:flex;flex-direction:row;height:1.28rem;line-height:1.28rem;margin:.5rem .35rem 0;padding:0 .4rem;border-radius:1.68rem 1.68rem 0 1.68rem;background-color:#fff;font-size:.32rem;box-shadow:0 0 .16rem rgba(0,0,0,.1);position:relative}.path-box .path-slash[data-v-07dc0a79]{color:#d7d7d7;font-size:.32rem;margin:0 .18rem}.path-box div[data-v-07dc0a79]{color:#7f7f7f;max-width:2.5rem}.path-box div[data-v-07dc0a79]:last-child{max-width:50%;color:#000;font-weight:700}.path-box[data-v-07dc0a79]:after{content:"";width:0;height:0;position:absolute;bottom:0;right:0;border-top:.24rem solid #62b1ff;border-left:.24rem solid transparent;transform:rotateX(180deg);margin:0 .09rem .09rem 0}.result-empty-box[data-v-02de74be]{height:10.3333rem}.allSections[data-v-02de74be]{display:flex;flex-direction:row;margin-top:.666667rem;filter:drop-shadow(.05rem 0 .09rem rgba(0,0,0,.1));margin:.64rem .35rem;height:calc(100vh - 3rem);position:relative}.allSections[data-v-02de74be]:after{content:"";top:0;left:.17rem;width:3.4rem;height:100%;border-radius:.32rem 0 0 .32rem;border-left:.013333rem solid #ddd;background-color:hsla(0,0%,92%,.557);position:absolute;z-index:-1}.allSections-left[data-v-02de74be]{width:3.57rem;border-radius:.32rem 0 0 .32rem;display:flex;flex-direction:column;text-align:center;-ms-overflow-style:none;overflow:-moz-scrollbars-none;-webkit-overflow-scrolling:touch;position:relative;overflow-x:hidden;overflow-y:auto}.allSections-left[data-v-02de74be]::-webkit-scrollbar{display:none}.allSections-left span[data-v-02de74be]{height:1.28rem;line-height:1.28rem;border-radius:.32rem;font-size:.32rem;position:relative}.allSections-left span.active[data-v-02de74be]{background-color:#fff;font-weight:bolder;border-radius:.32rem 0 0 .32rem;color:#000;width:101%;filter:drop-shadow(0 0 .08rem rgba(0,0,0,.1))}.allSections-left span.active[data-v-02de74be]:before{content:"";width:.36rem;height:101%;position:absolute;right:0;top:-100%;box-shadow:.14rem .14rem #fff;border-radius:0 0 .32rem 0}.allSections-left span.active[data-v-02de74be]:after{content:"";width:.36rem;height:101%;position:absolute;right:0;bottom:-100%;box-shadow:.14rem -.14rem #fff;border-radius:0 .32rem 0 0}.allSections-left span:first-child.active[data-v-02de74be]:before,.allSections-left span:last-child.active[data-v-02de74be]:after{display:none}.allSections-right[data-v-02de74be]{flex:1;background-color:#fff;border-radius:0 .32rem .32rem 0;display:flex;flex-direction:column;z-index:1;padding-bottom:.4rem;overflow-x:hidden;overflow-y:auto}.allSections-right.active[data-v-02de74be]{display:block}.allSections-right .allSections-right-item[data-v-02de74be]{padding:.4rem 0;margin:0 .32rem 0 .7rem;border-bottom:.013333rem solid #ddd;display:flex;justify-content:space-between;position:relative}.allSections-right .allSections-right-item .item-content[data-v-02de74be]{width:80%}.allSections-right .allSections-right-item .item-title[data-v-02de74be]{color:#000;font-size:.32rem}.allSections-right .allSections-right-item .item-text[data-v-02de74be]{margin:.266667rem 0;color:#aaa;font-size:.28rem;word-wrap:break-word}.allSections-right .allSections-right-item .item-star[data-v-02de74be]{display:flex;align-items:center}.allSections-right .allSections-right-item .item-star img[data-v-02de74be]{width:.48rem;height:.46rem}.allSections-right .allSections-right-item[data-v-02de74be]:before{content:"";width:.12rem;height:.32rem;border-radius:.16rem;position:absolute;top:.48rem;left:-.35rem;background-color:#62b1ff}.paging[data-v-02de74be]{margin-top:.48rem}.paging[data-v-02de74be] .el-pagination.is-background .el-pager li:not(.disabled).active{background:#62b1ff;border-radius:50%}.paging[data-v-02de74be] .el-pagination .btn-next .el-icon,.paging[data-v-02de74be] .el-pagination .btn-prev .el-icon{font-size:.4rem}

1
dist/css/280.0915ca91.css vendored Normal file
View File

@@ -0,0 +1 @@
.path-box[data-v-07dc0a79]{display:flex;flex-direction:row;height:1.28rem;line-height:1.28rem;margin:.5rem .35rem 0;padding:0 .4rem;border-radius:1.68rem 1.68rem 0 1.68rem;background-color:#fff;font-size:.32rem;box-shadow:0 0 .16rem rgba(0,0,0,.1);position:relative}.path-box .path-slash[data-v-07dc0a79]{color:#d7d7d7;font-size:.32rem;margin:0 .18rem}.path-box div[data-v-07dc0a79]{color:#7f7f7f;max-width:2.5rem}.path-box div[data-v-07dc0a79]:last-child{max-width:50%;color:#000;font-weight:700}.path-box[data-v-07dc0a79]:after{content:"";width:0;height:0;position:absolute;bottom:0;right:0;border-top:.24rem solid #62b1ff;border-left:.24rem solid transparent;transform:rotateX(180deg);margin:0 .09rem .09rem 0}.paging[data-v-28440cd8]{margin-top:.48rem;padding-bottom:1rem}.paging[data-v-28440cd8] .el-pagination.is-background .el-pager li.active{background:#62b1ff;border-radius:50%}.paging[data-v-28440cd8] .el-pagination .btn-next .el-icon,.paging[data-v-28440cd8] .el-pagination .btn-prev .el-icon{font-size:.4rem}.paging[data-v-28440cd8] .is-background.el-pagination--small .el-pager li{border-radius:50%!important}.paging[data-v-28440cd8] .el-pagination.is-background.el-pagination--small .btn-next,.paging[data-v-28440cd8] .el-pagination.is-background.el-pagination--small .btn-prev,.paging[data-v-28440cd8] .el-pagination.is-background.el-pagination--small .el-pager li{border-radius:50%}section[data-v-28440cd8]{padding-top:.45rem}

1
dist/css/336.7f7c43de.css vendored Normal file
View File

@@ -0,0 +1 @@
.container[data-v-5e99c0b6]{padding-top:1.3rem}.container .header[data-v-5e99c0b6]{padding:1rem 0 .8rem}.container .header .portrait[data-v-5e99c0b6]{width:2rem;height:2rem;border-radius:50%;background-color:#fff;position:relative}.container .header .portrait-icom[data-v-5e99c0b6]{width:1.8rem;height:1.8rem;border-radius:50%}.container .header .header-username[data-v-5e99c0b6]{color:#000;font-size:.48rem;line-height:normal;margin-top:.24rem;font-weight:650}.container .header .header-uid[data-v-5e99c0b6]{color:#7f7f7f;font-weight:400;margin-top:.12rem}.container .operation-box[data-v-5e99c0b6]{background-color:#fff;margin:0 .2933rem .4rem;border-radius:.4rem}.container .operation-box .operation-item[data-v-5e99c0b6]{height:1.8rem;justify-content:space-between;padding:0 .4rem}.container .operation-box .operation-item[data-v-5e99c0b6]:not(:first-of-type){border-top:.0133rem dotted #d7d7d7}.container .operation-box .operation-item .operation-left[data-v-5e99c0b6]{color:#333;font-size:.36rem;line-height:.6rem}.container .operation-box .operation-item .operation-icom[data-v-5e99c0b6]{width:.48rem;margin-right:.32rem}.container .operation-box .operation-item .operation-data[data-v-5e99c0b6]{background-color:#f6f6f6;border-radius:.64rem;font-size:.28rem;color:#555;min-width:.9rem;text-align:center;padding:0 .2rem;box-sizing:border-box}.container .operation-box .operation-item .unread-info[data-v-5e99c0b6]{background:#fd3f5d;height:.42rem;border-radius:.64rem;color:#fff;font-size:.28rem;text-align:center;padding:0 .1rem;box-sizing:border-box}.container .operation-box .operation-item .operation-right-icom[data-v-5e99c0b6]{width:.12rem;height:.22rem;margin-left:.2rem}.container .operation-box.data-presentation[data-v-5e99c0b6]{padding-top:.4rem;padding-bottom:.4rem}.container .operation-box.data-presentation .data-presentation-item[data-v-5e99c0b6]{flex-direction:column}.container .operation-box.data-presentation .data-presentation-item[data-v-5e99c0b6]:not(:last-of-type){border-right:.0133rem solid #ebebeb}.container .operation-box.data-presentation .data-presentation-item .data-presentation-number[data-v-5e99c0b6]{color:#000;line-height:.6rem;font-size:.4rem;font-weight:900}.container .operation-box.data-presentation .data-presentation-item .data-presentation-name[data-v-5e99c0b6]{color:#333;line-height:.6rem;font-size:.32rem}.container .log-out[data-v-5e99c0b6]{font-size:.36rem;line-height:.6rem;color:#555;border-bottom:.0133rem solid #797979;width:1.46rem;margin:.6rem auto 1rem}

1
dist/css/337.fd7ddcad.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/css/354.fd7ddcad.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/css/356.f7682b16.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/css/831.25be828c.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/css/878.0c2853cd.css vendored Normal file
View File

@@ -0,0 +1 @@
.container[data-v-500ea229]{padding-top:1.3rem;padding-bottom:1.3rem}.container .search-input-box[data-v-500ea229]{margin-left:.32rem}.container .search-input-box .search-input[data-v-500ea229]{width:8.2rem;height:.96rem;border-radius:2.56rem;background:#ebebeb}.container .search-input-box .search-input .search-input-cross[data-v-500ea229],.container .search-input-box .search-input .search-input-icon[data-v-500ea229]{width:.4rem;height:.4rem}.container .search-input-box .search-input .search-input-icon[data-v-500ea229]{padding:0 .4rem}.container .search-input-box .search-input .search-input-cross[data-v-500ea229]{padding-right:.4rem}.container .search-input-box .search-input .search-input-input[data-v-500ea229]{height:100%;font-size:.4rem}.container .search-input-box .search-input-cancel[data-v-500ea229]{color:#000;font-size:.36rem;padding-left:.46rem;width:.74rem}.container .numberResults[data-v-500ea229]{font-size:.32rem;color:#555;margin:.64rem .32rem .48rem}.container .numberResults .number[data-v-500ea229]{color:#000;font-weight:650;margin:0 .1667rem}.container .result-box[data-v-500ea229]{justify-content:center;flex-direction:column;overflow:auto}.container .result-box .result-item[data-v-500ea229]{margin-bottom:.32rem;width:9.36rem;height:3.96rem;background-color:#fff;border:none;border-radius:.32rem;box-shadow:0 0 .16rem rgba(0,0,0,.08);padding:.4rem;box-sizing:border-box;flex-direction:column;position:relative}.container .result-box .result-item .result-header[data-v-500ea229]{margin-bottom:.32rem}.container .result-box .result-item .result-header .result-label[data-v-500ea229]{font-size:.28rem;height:.52rem;line-height:.52rem;background:#333;color:#fff;display:inline-block;border-radius:.16rem;padding:0 .12rem;margin-right:.12rem}.container .result-box .result-item .result-header .result-title[data-v-500ea229]{color:#000;font-size:.37333rem;line-height:.65rem;display:inline}.container .result-box .result-item .result-header .result-title[data-v-500ea229] em{color:#f95d5d}.container .result-box .result-item .result-content[data-v-500ea229]{line-height:.52rem;font-size:.3rem;color:#7f7f7f;height:1.04rem}.container .result-box .result-item .reply-visible[data-v-500ea229]{font-size:.32rem;height:1.04rem;background:hsla(0,0%,95%,.7)}.container .result-box .result-item .result-info[data-v-500ea229]{align-items:self-end;justify-content:space-between}.container .result-box .result-item .result-info .user-info .icon-head[data-v-500ea229]{width:.64rem;height:.64rem;border-radius:50%}.container .result-box .result-item .result-info .user-info .user-name[data-v-500ea229]{font-size:.32rem;color:#333;margin-left:.2rem}.container .result-box .result-item .result-info .item-data[data-v-500ea229]{font-size:.28rem}.container .result-box .result-item .result-info .item-data .item-data-item[data-v-500ea229]:last-of-type{margin-left:.4rem}.container .result-box .result-item .result-info .item-data .item-data-item .icon-look[data-v-500ea229]{width:.4267rem;height:.18rem;margin-right:.16rem}.container .result-box .result-item .result-info .item-data .item-data-item .icon-msg[data-v-500ea229]{width:.32rem;height:.28rem;margin-right:.16rem}.container .paging[data-v-500ea229]{margin-top:.48rem}.container .paging[data-v-500ea229] .el-pagination.is-background .el-pager li:not(.disabled).active{background:#62b1ff;border-radius:50%}.container .paging[data-v-500ea229] .el-pagination .btn-next .el-icon,.container .paging[data-v-500ea229] .el-pagination .btn-prev .el-icon{font-size:.4rem}.container .result-empty-box[data-v-500ea229]{height:70vh;width:9.36rem;background:#fff;margin:0 auto;border-radius:.32rem}.container .result-empty-box .result-empty-icon[data-v-500ea229]{width:2.04rem;height:2.4rem}

1
dist/css/884.9aa3ed80.css vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/css/app~189e7968.8b7662a1.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

BIN
dist/fonts/element-icons.f1a45d74.ttf vendored Normal file

Binary file not shown.

BIN
dist/fonts/element-icons.ff18efd1.woff vendored Normal file

Binary file not shown.

BIN
dist/img/defaultAvatar.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
dist/img/empty.698c52d4.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
dist/img/favicon.ico vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
dist/img/notCollect.698c52d4.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

0
src/assets/img/detail/unlock.png → dist/img/unlock.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

BIN
dist/img/user/avatarsetting.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
dist/img/user/bindemail.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
dist/img/user/bindingthird-party.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
dist/img/user/bindmobile.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
dist/img/user/changepassword.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
dist/img/user/collect.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1011 B

After

Width:  |  Height:  |  Size: 1011 B

BIN
dist/img/user/mystatus.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
dist/img/user/personaldata.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
dist/img/user/postmessage.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
dist/img/user/replymessage.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

BIN
dist/img/user/visithomepage.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

12
dist/index.html vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/124.79130f1c.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[124],{9143:function(e,t,n){n.r(t),n.d(t,{default:function(){return l}});var a=function(){var e=this,t=e._self._c;return t("div",[t("header-nav",{attrs:{issearch:!0,needgetuser:!0}},[t("template",{slot:"header-title"},[e._v("帖子详情")])],2),t("router-view",{key:e.key})],1)},r=[],u=n(517),s={name:"detail",data(){return{}},computed:{key(){return this.$route.path+Math.random()}},mounted(){},methods:{},components:{HeaderNav:u.Z}},d=s,i=n(1001),o=(0,i.Z)(d,a,r,!1,null,"10593ad7",null),l=o.exports}}]);

1
dist/js/217.d1ddcd5f.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/280.ed574ed9.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/336.52ad8d34.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/337.4b2508a0.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[337],{5817:function(e,t,n){n.r(t),n.d(t,{default:function(){return h}});var r=function(){var e=this,t=e._self._c;return t("div",[t("header-nav",{attrs:{issearch:!1,needgetuser:!0}},[t("template",{slot:"header-title"},[e._v("搜索帖子")])],2),t("router-view",{key:e.key})],1)},a=[],u=n(517),s={name:"search",data(){return{}},computed:{key(){return this.$route.path+Math.random()}},mounted(){},methods:{},components:{HeaderNav:u.Z}},o=s,c=n(1001),d=(0,c.Z)(o,r,a,!1,null,"24c9f798",null),h=d.exports}}]);

1
dist/js/354.bc2d16ec.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[354],{6170:function(e,t,n){n.r(t),n.d(t,{default:function(){return o}});var r=function(){var e=this,t=e._self._c;return t("div",[t("header-nav",{attrs:{issearch:!0,needgetuser:!0}},[t("template",{slot:"header-title"},[e._v("我的寄托")])],2),t("router-view")],1)},a=[],u=n(517),s={name:"user",data(){return{}},mounted(){},methods:{},components:{HeaderNav:u.Z}},d=s,i=n(1001),l=(0,i.Z)(d,r,a,!1,null,"7090fd6a",null),o=l.exports}}]);

1
dist/js/517.b66c61bd.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/718.165fc1ef.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/831.6fddd3bb.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[831],{2013:function(e,t,n){n.r(t),n.d(t,{default:function(){return u}});var a=function(){var e=this,t=e._self._c;return t("div",[t("header-nav",{attrs:{issearch:!0,needgetuser:!0}},[t("template",{slot:"header-title"},[e._v("寄托天下论坛")])],2),t("nav",[t("router-link",{attrs:{to:e.recommendURl,exact:""}},[e._v("推荐阅读")]),t("router-link",{attrs:{to:e.collect,exact:""}},[e._v("收藏的版块")]),t("router-link",{attrs:{to:e.allSections,exact:""}},[e._v("全部版块")])],1),t("div",{staticClass:"publish flexcolumn flexcenter",on:{click:function(t){return t.stopPropagation(),e.$skipUrl(e.invitationPost)}}},[t("svg-icon",{attrs:{"icon-class":"add","class-name":"icon-publish"}}),e._v(" 发帖 ")],1),t("router-view",{key:e.key})],1)},l=[],o=n(517),i=n(6799),r={name:"Index",data(){return{favorite:[],recommend:[],fid:null,allSections:"/allSections",collect:"/collect",recommendURl:"/recommend",invitationPost:i.a}},computed:{key(){return this.$route.path+Math.random()}},watch:{"$store.state.homeRequestState":{handler(e,t){let{favoriteList:n,recommendList:a}=this.$store.state;this.favorite=n,this.recommend=a},immediate:!0},$route:{handler(e,t){let n=e.fullPath;-1!=n.indexOf("allSections")&&(this.allSections=n),-1!=n.indexOf("collect")&&(this.collect=n),-1!=n.indexOf("recommend")&&(this.recommendURl=n)},immediate:!0}},mounted(){},components:{HeaderNav:o.Z},methods:{}},s=r,c=n(1001),d=(0,c.Z)(s,a,l,!1,null,null,null),u=d.exports}}]);

1
dist/js/878.25f811f5.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/884.b48d5ca7.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/app~42f9d7e6.9764086e.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/app~449a49d2.7db7a012.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/app~d363ae0c.bcaf0192.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/js/app~d92c34c1.f3d32b35.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

545
dist/js/jweixin-1.3.2.js vendored Normal file
View File

@@ -0,0 +1,545 @@
;((e, n) => {
"function" == typeof define && (define.amd || define.cmd)
? define(function () {
return n(e)
})
: n(e, !0)
})(this, function (r, e) {
var a, c, n, i, t, s, d, o, l, u, p, f, m, g, h, I, S, y, v, _, w, T
if (!r.jWeixin)
return (
(a = { config: "preVerifyJSAPI", onMenuShareTimeline: "menu:share:timeline", onMenuShareAppMessage: "menu:share:appmessage", onMenuShareQQ: "menu:share:qq", onMenuShareWeibo: "menu:share:weiboApp", onMenuShareQZone: "menu:share:QZone", previewImage: "imagePreview", getLocation: "geoLocation", openProductSpecificView: "openProductViewWithPid", addCard: "batchAddCard", openCard: "batchViewCard", chooseWXPay: "getBrandWCPayRequest", openEnterpriseRedPacket: "getRecevieBizHongBaoRequest", startSearchBeacons: "startMonitoringBeacons", stopSearchBeacons: "stopMonitoringBeacons", onSearchBeacons: "onBeaconsInRange", consumeAndShareCard: "consumedShareCard", openAddress: "editAddress" }),
(c = (() => {
var e,
n = {}
for (e in a) n[a[e]] = e
return n
})()),
(i = (n = r.document).title),
(t = navigator.userAgent.toLowerCase()),
(f = navigator.platform.toLowerCase()),
(s = !(!f.match("mac") && !f.match("win"))),
(d = -1 != t.indexOf("wxdebugger")),
(o = -1 != t.indexOf("micromessenger")),
(l = -1 != t.indexOf("android")),
(u = -1 != t.indexOf("iphone") || -1 != t.indexOf("ipad")),
(p = (f = t.match(/micromessenger\/(\d+\.\d+\.\d+)/) || t.match(/micromessenger\/(\d+\.\d+)/)) ? f[1] : ""),
(m = { initStartTime: L(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0 }),
(g = { version: 1, appId: "", initTime: 0, preVerifyTime: 0, networkType: "", isPreVerifyOk: 1, systemType: u ? 1 : l ? 2 : -1, clientVersion: p, url: encodeURIComponent(location.href) }),
(h = {}),
(I = { _completes: [] }),
(S = { state: 0, data: {} }),
B(function () {
m.initEndTime = L()
}),
(y = !1),
(v = []),
(_ = {
config: function (e) {
C("config", (h = e))
var o = !1 !== h.check
B(function () {
if (o)
k(
a.config,
{ verifyJsApiList: V(h.jsApiList) },
((I._complete = function (e) {
;(m.preVerifyEndTime = L()), (S.state = 1), (S.data = e)
}),
(I.success = function (e) {
g.isPreVerifyOk = 0
}),
(I.fail = function (e) {
I._fail ? I._fail(e) : (S.state = -1)
}),
(t = I._completes).push(function () {
var n
s ||
d ||
h.debug ||
p < "6.0.2" ||
g.systemType < 0 ||
((n = new Image()),
(g.appId = h.appId),
(g.initTime = m.initEndTime - m.initStartTime),
(g.preVerifyTime = m.preVerifyEndTime - m.preVerifyStartTime),
_.getNetworkType({
isInnerInvoke: !0,
success: function (e) {
;(g.networkType = e.networkType), (n.src = "https://open.weixin.qq.com/sdk/report?v=" + g.version + "&o=" + g.isPreVerifyOk + "&s=" + g.systemType + "&c=" + g.clientVersion + "&a=" + g.appId + "&n=" + g.networkType + "&i=" + g.initTime + "&p=" + g.preVerifyTime + "&u=" + g.url)
},
}))
}),
(I.complete = function (e) {
for (var n = 0, i = t.length; n < i; ++n) t[n]()
I._completes = []
}),
I)
),
(m.preVerifyStartTime = L())
else {
S.state = 1
for (var e = I._completes, n = 0, i = e.length; n < i; ++n) e[n]()
I._completes = []
}
var t
}),
_.invoke ||
((_.invoke = function (e, n, i) {
r.WeixinJSBridge && WeixinJSBridge.invoke(e, P(n), i)
}),
(_.on = function (e, n) {
r.WeixinJSBridge && WeixinJSBridge.on(e, n)
}))
},
ready: function (e) {
;(0 != S.state || (I._completes.push(e), !o && h.debug)) && e()
},
error: function (e) {
p < "6.0.2" || (-1 == S.state ? e(S.data) : (I._fail = e))
},
checkJsApi: function (e) {
k(
"checkJsApi",
{ jsApiList: V(e.jsApiList) },
((e._complete = function (e) {
l && (i = e.checkResult) && (e.checkResult = JSON.parse(i))
var n,
i = e,
t = i.checkResult
for (n in t) {
var o = c[n]
o && ((t[o] = t[n]), delete t[n])
}
}),
e)
)
},
onMenuShareTimeline: function (e) {
M(
a.onMenuShareTimeline,
{
complete: function () {
k("shareTimeline", { title: e.title || i, desc: e.title || i, img_url: e.imgUrl || "", link: e.link || location.href, type: e.type || "link", data_url: e.dataUrl || "" }, e)
},
},
e
)
},
onMenuShareAppMessage: function (n) {
M(
a.onMenuShareAppMessage,
{
complete: function (e) {
"favorite" === e.scene ? k("sendAppMessage", { title: n.title || i, desc: n.desc || "", link: n.link || location.href, img_url: n.imgUrl || "", type: n.type || "link", data_url: n.dataUrl || "" }) : k("sendAppMessage", { title: n.title || i, desc: n.desc || "", link: n.link || location.href, img_url: n.imgUrl || "", type: n.type || "link", data_url: n.dataUrl || "" }, n)
},
},
n
)
},
onMenuShareQQ: function (e) {
M(
a.onMenuShareQQ,
{
complete: function () {
k("shareQQ", { title: e.title || i, desc: e.desc || "", img_url: e.imgUrl || "", link: e.link || location.href }, e)
},
},
e
)
},
onMenuShareWeibo: function (e) {
M(
a.onMenuShareWeibo,
{
complete: function () {
k("shareWeiboApp", { title: e.title || i, desc: e.desc || "", img_url: e.imgUrl || "", link: e.link || location.href }, e)
},
},
e
)
},
onMenuShareQZone: function (e) {
M(
a.onMenuShareQZone,
{
complete: function () {
k("shareQZone", { title: e.title || i, desc: e.desc || "", img_url: e.imgUrl || "", link: e.link || location.href }, e)
},
},
e
)
},
startRecord: function (e) {
k("startRecord", {}, e)
},
stopRecord: function (e) {
k("stopRecord", {}, e)
},
onVoiceRecordEnd: function (e) {
M("onVoiceRecordEnd", e)
},
playVoice: function (e) {
k("playVoice", { localId: e.localId }, e)
},
pauseVoice: function (e) {
k("pauseVoice", { localId: e.localId }, e)
},
stopVoice: function (e) {
k("stopVoice", { localId: e.localId }, e)
},
onVoicePlayEnd: function (e) {
M("onVoicePlayEnd", e)
},
uploadVoice: function (e) {
k("uploadVoice", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
downloadVoice: function (e) {
k("downloadVoice", { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
translateVoice: function (e) {
k("translateVoice", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
chooseImage: function (e) {
k(
"chooseImage",
{ scene: "1|2", count: e.count || 9, sizeType: e.sizeType || ["original", "compressed"], sourceType: e.sourceType || ["album", "camera"] },
((e._complete = function (e) {
if (l) {
var n = e.localIds
try {
n && (e.localIds = JSON.parse(n))
} catch (e) {}
}
}),
e)
)
},
getLocation: function (e) {},
getLocation: function (e) {
;(e = e || {}),
k(
a.getLocation,
{ type: e.type || "wgs84" },
((e._complete = function (e) {
delete e.type
}),
e)
)
},
previewImage: function (e) {
k(a.previewImage, { current: e.current, urls: e.urls }, e)
},
uploadImage: function (e) {
k("uploadImage", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
downloadImage: function (e) {
k("downloadImage", { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
getLocalImgData: function (e) {
!1 === y
? ((y = !0),
k(
"getLocalImgData",
{ localId: e.localId },
((e._complete = function (e) {
var n
;(y = !1), 0 < v.length && ((n = v.shift()), wx.getLocalImgData(n))
}),
e)
))
: v.push(e)
},
getNetworkType: function (e) {
k(
"getNetworkType",
{},
((e._complete = function (e) {
var n = e,
e = n.errMsg,
i = ((n.errMsg = "getNetworkType:ok"), n.subtype)
if ((delete n.subtype, i)) n.networkType = i
else {
var i = e.indexOf(":"),
t = e.substring(i + 1)
switch (t) {
case "wifi":
case "edge":
case "wwan":
n.networkType = t
break
default:
n.errMsg = "getNetworkType:fail"
}
}
}),
e)
)
},
openLocation: function (e) {
k("openLocation", { latitude: e.latitude, longitude: e.longitude, name: e.name || "", address: e.address || "", scale: e.scale || 28, infoUrl: e.infoUrl || "" }, e)
},
hideOptionMenu: function (e) {
k("hideOptionMenu", {}, e)
},
showOptionMenu: function (e) {
k("showOptionMenu", {}, e)
},
closeWindow: function (e) {
k("closeWindow", {}, (e = e || {}))
},
hideMenuItems: function (e) {
k("hideMenuItems", { menuList: e.menuList }, e)
},
showMenuItems: function (e) {
k("showMenuItems", { menuList: e.menuList }, e)
},
hideAllNonBaseMenuItem: function (e) {
k("hideAllNonBaseMenuItem", {}, e)
},
showAllNonBaseMenuItem: function (e) {
k("showAllNonBaseMenuItem", {}, e)
},
scanQRCode: function (e) {
k(
"scanQRCode",
{ needResult: (e = e || {}).needResult || 0, scanType: e.scanType || ["qrCode", "barCode"] },
((e._complete = function (e) {
var n
u && (n = e.resultStr) && ((n = JSON.parse(n)), (e.resultStr = n && n.scan_code && n.scan_code.scan_result))
}),
e)
)
},
openAddress: function (e) {
k(
a.openAddress,
{},
((e._complete = function (e) {
;((e = e).postalCode = e.addressPostalCode), delete e.addressPostalCode, (e.provinceName = e.proviceFirstStageName), delete e.proviceFirstStageName, (e.cityName = e.addressCitySecondStageName), delete e.addressCitySecondStageName, (e.countryName = e.addressCountiesThirdStageName), delete e.addressCountiesThirdStageName, (e.detailInfo = e.addressDetailInfo), delete e.addressDetailInfo
}),
e)
)
},
openProductSpecificView: function (e) {
k(a.openProductSpecificView, { pid: e.productId, view_type: e.viewType || 0, ext_info: e.extInfo }, e)
},
addCard: function (e) {
for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
var r = n[t],
r = { card_id: r.cardId, card_ext: r.cardExt }
i.push(r)
}
k(
a.addCard,
{ card_list: i },
((e._complete = function (e) {
if ((n = e.card_list)) {
for (var n, i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
var o = n[i]
;(o.cardId = o.card_id), (o.cardExt = o.card_ext), (o.isSuccess = !!o.is_succ), delete o.card_id, delete o.card_ext, delete o.is_succ
}
;(e.cardList = n), delete e.card_list
}
}),
e)
)
},
chooseCard: function (e) {
k(
"chooseCard",
{ app_id: h.appId, location_id: e.shopId || "", sign_type: e.signType || "SHA1", card_id: e.cardId || "", card_type: e.cardType || "", card_sign: e.cardSign, time_stamp: e.timestamp + "", nonce_str: e.nonceStr },
((e._complete = function (e) {
;(e.cardList = e.choose_card_info), delete e.choose_card_info
}),
e)
)
},
openCard: function (e) {
for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
var r = n[t],
r = { card_id: r.cardId, code: r.code }
i.push(r)
}
k(a.openCard, { card_list: i }, e)
},
consumeAndShareCard: function (e) {
k(a.consumeAndShareCard, { consumedCardId: e.cardId, consumedCode: e.code }, e)
},
chooseWXPay: function (e) {
k(a.chooseWXPay, x(e), e)
},
openEnterpriseRedPacket: function (e) {
k(a.openEnterpriseRedPacket, x(e), e)
},
startSearchBeacons: function (e) {
k(a.startSearchBeacons, { ticket: e.ticket }, e)
},
stopSearchBeacons: function (e) {
k(a.stopSearchBeacons, {}, e)
},
onSearchBeacons: function (e) {
M(a.onSearchBeacons, e)
},
openEnterpriseChat: function (e) {
k("openEnterpriseChat", { useridlist: e.userIds, chatname: e.groupName }, e)
},
launchMiniProgram: function (e) {
k(
"launchMiniProgram",
{
targetAppId: e.targetAppId,
path: (e => {
var n
if ("string" == typeof e && 0 < e.length) return (n = e.split("?")[0]), (n += ".html"), void 0 !== (e = e.split("?")[1]) ? n + "?" + e : n
})(e.path),
envVersion: e.envVersion,
},
e
)
},
miniProgram: {
navigateBack: function (e) {
;(e = e || {}),
B(function () {
k("invokeMiniProgramAPI", { name: "navigateBack", arg: { delta: e.delta || 1 } }, e)
})
},
navigateTo: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "navigateTo", arg: { url: e.url } }, e)
})
},
redirectTo: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "redirectTo", arg: { url: e.url } }, e)
})
},
switchTab: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "switchTab", arg: { url: e.url } }, e)
})
},
reLaunch: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "reLaunch", arg: { url: e.url } }, e)
})
},
postMessage: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "postMessage", arg: e.data || {} }, e)
})
},
getEnv: function (e) {
B(function () {
e({ miniprogram: "miniprogram" === r.__wxjs_environment })
})
},
},
}),
(w = 1),
(T = {}),
n.addEventListener(
"error",
function (e) {
var n, i, t
l ||
((t = (n = e.target).tagName), (i = n.src), "IMG" != t && "VIDEO" != t && "AUDIO" != t && "SOURCE" != t) ||
(-1 != i.indexOf("wxlocalresource://") &&
(e.preventDefault(),
e.stopPropagation(),
(t = n["wx-id"]) || ((t = w++), (n["wx-id"] = t)),
T[t] ||
((T[t] = !0),
wx.ready(function () {
wx.getLocalImgData({
localId: i,
success: function (e) {
n.src = e.localData
},
})
}))))
},
!0
),
n.addEventListener(
"load",
function (e) {
var n
l || ((n = (e = e.target).tagName), "IMG" != n && "VIDEO" != n && "AUDIO" != n && "SOURCE" != n) || ((n = e["wx-id"]) && (T[n] = !1))
},
!0
),
e && (r.wx = r.jWeixin = _),
_
)
function k(n, e, i) {
r.WeixinJSBridge
? WeixinJSBridge.invoke(n, P(e), function (e) {
A(n, e, i)
})
: C(n, i)
}
function M(n, i, t) {
r.WeixinJSBridge
? WeixinJSBridge.on(n, function (e) {
t && t.trigger && t.trigger(e), A(n, e, i)
})
: C(n, t || i)
}
function P(e) {
return ((e = e || {}).appId = h.appId), (e.verifyAppId = h.appId), (e.verifySignType = "sha1"), (e.verifyTimestamp = h.timestamp + ""), (e.verifyNonceStr = h.nonceStr), (e.verifySignature = h.signature), e
}
function x(e) {
return { timeStamp: e.timestamp + "", nonceStr: e.nonceStr, package: e.package, paySign: e.paySign, signType: e.signType || "SHA1" }
}
function A(e, n, i) {
"openEnterpriseChat" == e && (n.errCode = n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail
var t = n.errMsg,
e =
(t ||
((t = n.err_msg),
delete n.err_msg,
(t = ((e, n) => {
var i,
t = c[e]
return t && (e = t), (t = "ok"), n && ((i = n.indexOf(":")), ("access denied" != (t = (t = (t = -1 != (t = -1 != (t = "failed" == (t = "confirm" == (t = n.substring(i + 1)) ? "ok" : t) ? "fail" : t).indexOf("failed_") ? t.substring(7) : t).indexOf("fail_") ? t.substring(5) : t).replace(/_/g, " ")).toLowerCase()) && "no permission to execute" != t) || (t = "permission denied"), "" == (t = "config" == e && "function not exist" == t ? "ok" : t)) && (t = "fail"), (n = e + ":" + t)
})(e, t)),
(n.errMsg = t)),
(i = i || {})._complete && (i._complete(n), delete i._complete),
(t = n.errMsg || ""),
h.debug && !i.isInnerInvoke && alert(JSON.stringify(n)),
t.indexOf(":"))
switch (t.substring(e + 1)) {
case "ok":
i.success && i.success(n)
break
case "cancel":
i.cancel && i.cancel(n)
break
default:
i.fail && i.fail(n)
}
i.complete && i.complete(n)
}
function V(e) {
if (e) {
for (var n = 0, i = e.length; n < i; ++n) {
var t = e[n],
t = a[t]
t && (e[n] = t)
}
return e
}
}
function C(e, n) {
var i
!h.debug || (n && n.isInnerInvoke) || ((i = c[e]) && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || ""))
}
function L() {
return new Date().getTime()
}
function B(e) {
o && (r.WeixinJSBridge ? e() : n.addEventListener && n.addEventListener("WeixinJSBridgeReady", e, !1))
}
})

17111
package-lock.json generated Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,6 @@
"svg-sprite-loader": "^6.0.11",
"vue": "^2.6.14",
"vue-router": "^3.5.1",
"vue-sanitize": "^0.2.3",
"vuex": "^3.6.2"
},
"devDependencies": {
@@ -22,9 +21,11 @@
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"postcss": "^8.4.21",
"sass-loader": "^13.2.0",
"vue-template-compiler": "^2.6.14",
"vue2-svg-icon": "^1.3.2"
"vue2-svg-icon": "^1.3.2",
"webpack-bundle-analyzer": "^4.8.0"
},
"browserslist": [
"> 1%",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

BIN
public/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,17 +1,51 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
<!-- <link rel="icon" href="<%= BASE_URL %>/img/favicon.ico"> -->
<!-- <link rel="icon" href="<%= BASE_URL %>/img/favicon.ico"> -->
<link rel="icon" href="https://ansnid.oss-cn-shenzhen.aliyuncs.com/forum/img/favicon.ico" />
<!-- <title><%= htmlWebpackPlugin.options.title %></title> -->
<title>寄托家园留学论坛_出国留学经验分享|留学申请|留学考试|DIY留学</title>
<meta name="application-name" content="寄托家园留学论坛" />
<meta name="msapplication-tooltip" content="寄托家园留学论坛" />
<meta name="Keywords" content="美国留学,加拿大留学,香港留学,新加坡留学,英国留学,欧洲留学, 留学经验分享,DIY留学,留学申请,留学流程,留学费用,出国留学,留学论坛, 留学网站,留学考试,GRE,TOEFL,IBT,GMAT,IELTS,SAT,VISA,文书,签证" />
<meta name="Description" content="提供最有用的出国留学资讯和最热心的留学交流论坛。在BBS上你可以咨询签证面试机经offer奖学金名校专业等也可以分享雅思、托福、GRE的学习心得。无论你留学在美国、加拿大、英国还是澳洲都能在留学论坛上找到寄托情感的归宿。" />
<title>寄托论坛</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<div style="display: none">
<!-- <script type="text/javascript" src="//v1.cnzz.com/z_stat.php?id=1281224882&amp;web_id=1281224882"></script> -->
<script>
let $baseURL = "https://framework.x-php.com/forum/"
document.addEventListener("DOMContentLoaded", function () {
const script = document.createElement("script")
script.src = (["localhost"].includes(location.hostname) ? "" : $baseURL) + "/js/jweixin-1.3.2.js"
document.head.appendChild(script)
})
</script>
<script defer src="//stat.gter.net/script.js" data-website-id="28aa17dc7c163e7e7cf88d0c556a729b"></script>
<script type="text/javascript">
var _hmt = _hmt || []
;(function () {
var hm = document.createElement("script")
hm.src = "//hm.baidu.com/hm.js?4bd66cbe45a640b607fe46c48f658746"
var s = document.getElementsByTagName("script")[0]
s.parentNode.insertBefore(hm, s)
})()
</script>
</div>
<!-- 这个统计代码 明天加在H5论坛页面 -->
<!-- built files will be auto injected -->
</body>
</html>

545
public/js/jweixin-1.3.2.js Normal file
View File

@@ -0,0 +1,545 @@
;((e, n) => {
"function" == typeof define && (define.amd || define.cmd)
? define(function () {
return n(e)
})
: n(e, !0)
})(this, function (r, e) {
var a, c, n, i, t, s, d, o, l, u, p, f, m, g, h, I, S, y, v, _, w, T
if (!r.jWeixin)
return (
(a = { config: "preVerifyJSAPI", onMenuShareTimeline: "menu:share:timeline", onMenuShareAppMessage: "menu:share:appmessage", onMenuShareQQ: "menu:share:qq", onMenuShareWeibo: "menu:share:weiboApp", onMenuShareQZone: "menu:share:QZone", previewImage: "imagePreview", getLocation: "geoLocation", openProductSpecificView: "openProductViewWithPid", addCard: "batchAddCard", openCard: "batchViewCard", chooseWXPay: "getBrandWCPayRequest", openEnterpriseRedPacket: "getRecevieBizHongBaoRequest", startSearchBeacons: "startMonitoringBeacons", stopSearchBeacons: "stopMonitoringBeacons", onSearchBeacons: "onBeaconsInRange", consumeAndShareCard: "consumedShareCard", openAddress: "editAddress" }),
(c = (() => {
var e,
n = {}
for (e in a) n[a[e]] = e
return n
})()),
(i = (n = r.document).title),
(t = navigator.userAgent.toLowerCase()),
(f = navigator.platform.toLowerCase()),
(s = !(!f.match("mac") && !f.match("win"))),
(d = -1 != t.indexOf("wxdebugger")),
(o = -1 != t.indexOf("micromessenger")),
(l = -1 != t.indexOf("android")),
(u = -1 != t.indexOf("iphone") || -1 != t.indexOf("ipad")),
(p = (f = t.match(/micromessenger\/(\d+\.\d+\.\d+)/) || t.match(/micromessenger\/(\d+\.\d+)/)) ? f[1] : ""),
(m = { initStartTime: L(), initEndTime: 0, preVerifyStartTime: 0, preVerifyEndTime: 0 }),
(g = { version: 1, appId: "", initTime: 0, preVerifyTime: 0, networkType: "", isPreVerifyOk: 1, systemType: u ? 1 : l ? 2 : -1, clientVersion: p, url: encodeURIComponent(location.href) }),
(h = {}),
(I = { _completes: [] }),
(S = { state: 0, data: {} }),
B(function () {
m.initEndTime = L()
}),
(y = !1),
(v = []),
(_ = {
config: function (e) {
C("config", (h = e))
var o = !1 !== h.check
B(function () {
if (o)
k(
a.config,
{ verifyJsApiList: V(h.jsApiList) },
((I._complete = function (e) {
;(m.preVerifyEndTime = L()), (S.state = 1), (S.data = e)
}),
(I.success = function (e) {
g.isPreVerifyOk = 0
}),
(I.fail = function (e) {
I._fail ? I._fail(e) : (S.state = -1)
}),
(t = I._completes).push(function () {
var n
s ||
d ||
h.debug ||
p < "6.0.2" ||
g.systemType < 0 ||
((n = new Image()),
(g.appId = h.appId),
(g.initTime = m.initEndTime - m.initStartTime),
(g.preVerifyTime = m.preVerifyEndTime - m.preVerifyStartTime),
_.getNetworkType({
isInnerInvoke: !0,
success: function (e) {
;(g.networkType = e.networkType), (n.src = "https://open.weixin.qq.com/sdk/report?v=" + g.version + "&o=" + g.isPreVerifyOk + "&s=" + g.systemType + "&c=" + g.clientVersion + "&a=" + g.appId + "&n=" + g.networkType + "&i=" + g.initTime + "&p=" + g.preVerifyTime + "&u=" + g.url)
},
}))
}),
(I.complete = function (e) {
for (var n = 0, i = t.length; n < i; ++n) t[n]()
I._completes = []
}),
I)
),
(m.preVerifyStartTime = L())
else {
S.state = 1
for (var e = I._completes, n = 0, i = e.length; n < i; ++n) e[n]()
I._completes = []
}
var t
}),
_.invoke ||
((_.invoke = function (e, n, i) {
r.WeixinJSBridge && WeixinJSBridge.invoke(e, P(n), i)
}),
(_.on = function (e, n) {
r.WeixinJSBridge && WeixinJSBridge.on(e, n)
}))
},
ready: function (e) {
;(0 != S.state || (I._completes.push(e), !o && h.debug)) && e()
},
error: function (e) {
p < "6.0.2" || (-1 == S.state ? e(S.data) : (I._fail = e))
},
checkJsApi: function (e) {
k(
"checkJsApi",
{ jsApiList: V(e.jsApiList) },
((e._complete = function (e) {
l && (i = e.checkResult) && (e.checkResult = JSON.parse(i))
var n,
i = e,
t = i.checkResult
for (n in t) {
var o = c[n]
o && ((t[o] = t[n]), delete t[n])
}
}),
e)
)
},
onMenuShareTimeline: function (e) {
M(
a.onMenuShareTimeline,
{
complete: function () {
k("shareTimeline", { title: e.title || i, desc: e.title || i, img_url: e.imgUrl || "", link: e.link || location.href, type: e.type || "link", data_url: e.dataUrl || "" }, e)
},
},
e
)
},
onMenuShareAppMessage: function (n) {
M(
a.onMenuShareAppMessage,
{
complete: function (e) {
"favorite" === e.scene ? k("sendAppMessage", { title: n.title || i, desc: n.desc || "", link: n.link || location.href, img_url: n.imgUrl || "", type: n.type || "link", data_url: n.dataUrl || "" }) : k("sendAppMessage", { title: n.title || i, desc: n.desc || "", link: n.link || location.href, img_url: n.imgUrl || "", type: n.type || "link", data_url: n.dataUrl || "" }, n)
},
},
n
)
},
onMenuShareQQ: function (e) {
M(
a.onMenuShareQQ,
{
complete: function () {
k("shareQQ", { title: e.title || i, desc: e.desc || "", img_url: e.imgUrl || "", link: e.link || location.href }, e)
},
},
e
)
},
onMenuShareWeibo: function (e) {
M(
a.onMenuShareWeibo,
{
complete: function () {
k("shareWeiboApp", { title: e.title || i, desc: e.desc || "", img_url: e.imgUrl || "", link: e.link || location.href }, e)
},
},
e
)
},
onMenuShareQZone: function (e) {
M(
a.onMenuShareQZone,
{
complete: function () {
k("shareQZone", { title: e.title || i, desc: e.desc || "", img_url: e.imgUrl || "", link: e.link || location.href }, e)
},
},
e
)
},
startRecord: function (e) {
k("startRecord", {}, e)
},
stopRecord: function (e) {
k("stopRecord", {}, e)
},
onVoiceRecordEnd: function (e) {
M("onVoiceRecordEnd", e)
},
playVoice: function (e) {
k("playVoice", { localId: e.localId }, e)
},
pauseVoice: function (e) {
k("pauseVoice", { localId: e.localId }, e)
},
stopVoice: function (e) {
k("stopVoice", { localId: e.localId }, e)
},
onVoicePlayEnd: function (e) {
M("onVoicePlayEnd", e)
},
uploadVoice: function (e) {
k("uploadVoice", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
downloadVoice: function (e) {
k("downloadVoice", { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
translateVoice: function (e) {
k("translateVoice", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
chooseImage: function (e) {
k(
"chooseImage",
{ scene: "1|2", count: e.count || 9, sizeType: e.sizeType || ["original", "compressed"], sourceType: e.sourceType || ["album", "camera"] },
((e._complete = function (e) {
if (l) {
var n = e.localIds
try {
n && (e.localIds = JSON.parse(n))
} catch (e) {}
}
}),
e)
)
},
getLocation: function (e) {},
getLocation: function (e) {
;(e = e || {}),
k(
a.getLocation,
{ type: e.type || "wgs84" },
((e._complete = function (e) {
delete e.type
}),
e)
)
},
previewImage: function (e) {
k(a.previewImage, { current: e.current, urls: e.urls }, e)
},
uploadImage: function (e) {
k("uploadImage", { localId: e.localId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
downloadImage: function (e) {
k("downloadImage", { serverId: e.serverId, isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1 }, e)
},
getLocalImgData: function (e) {
!1 === y
? ((y = !0),
k(
"getLocalImgData",
{ localId: e.localId },
((e._complete = function (e) {
var n
;(y = !1), 0 < v.length && ((n = v.shift()), wx.getLocalImgData(n))
}),
e)
))
: v.push(e)
},
getNetworkType: function (e) {
k(
"getNetworkType",
{},
((e._complete = function (e) {
var n = e,
e = n.errMsg,
i = ((n.errMsg = "getNetworkType:ok"), n.subtype)
if ((delete n.subtype, i)) n.networkType = i
else {
var i = e.indexOf(":"),
t = e.substring(i + 1)
switch (t) {
case "wifi":
case "edge":
case "wwan":
n.networkType = t
break
default:
n.errMsg = "getNetworkType:fail"
}
}
}),
e)
)
},
openLocation: function (e) {
k("openLocation", { latitude: e.latitude, longitude: e.longitude, name: e.name || "", address: e.address || "", scale: e.scale || 28, infoUrl: e.infoUrl || "" }, e)
},
hideOptionMenu: function (e) {
k("hideOptionMenu", {}, e)
},
showOptionMenu: function (e) {
k("showOptionMenu", {}, e)
},
closeWindow: function (e) {
k("closeWindow", {}, (e = e || {}))
},
hideMenuItems: function (e) {
k("hideMenuItems", { menuList: e.menuList }, e)
},
showMenuItems: function (e) {
k("showMenuItems", { menuList: e.menuList }, e)
},
hideAllNonBaseMenuItem: function (e) {
k("hideAllNonBaseMenuItem", {}, e)
},
showAllNonBaseMenuItem: function (e) {
k("showAllNonBaseMenuItem", {}, e)
},
scanQRCode: function (e) {
k(
"scanQRCode",
{ needResult: (e = e || {}).needResult || 0, scanType: e.scanType || ["qrCode", "barCode"] },
((e._complete = function (e) {
var n
u && (n = e.resultStr) && ((n = JSON.parse(n)), (e.resultStr = n && n.scan_code && n.scan_code.scan_result))
}),
e)
)
},
openAddress: function (e) {
k(
a.openAddress,
{},
((e._complete = function (e) {
;((e = e).postalCode = e.addressPostalCode), delete e.addressPostalCode, (e.provinceName = e.proviceFirstStageName), delete e.proviceFirstStageName, (e.cityName = e.addressCitySecondStageName), delete e.addressCitySecondStageName, (e.countryName = e.addressCountiesThirdStageName), delete e.addressCountiesThirdStageName, (e.detailInfo = e.addressDetailInfo), delete e.addressDetailInfo
}),
e)
)
},
openProductSpecificView: function (e) {
k(a.openProductSpecificView, { pid: e.productId, view_type: e.viewType || 0, ext_info: e.extInfo }, e)
},
addCard: function (e) {
for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
var r = n[t],
r = { card_id: r.cardId, card_ext: r.cardExt }
i.push(r)
}
k(
a.addCard,
{ card_list: i },
((e._complete = function (e) {
if ((n = e.card_list)) {
for (var n, i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
var o = n[i]
;(o.cardId = o.card_id), (o.cardExt = o.card_ext), (o.isSuccess = !!o.is_succ), delete o.card_id, delete o.card_ext, delete o.is_succ
}
;(e.cardList = n), delete e.card_list
}
}),
e)
)
},
chooseCard: function (e) {
k(
"chooseCard",
{ app_id: h.appId, location_id: e.shopId || "", sign_type: e.signType || "SHA1", card_id: e.cardId || "", card_type: e.cardType || "", card_sign: e.cardSign, time_stamp: e.timestamp + "", nonce_str: e.nonceStr },
((e._complete = function (e) {
;(e.cardList = e.choose_card_info), delete e.choose_card_info
}),
e)
)
},
openCard: function (e) {
for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {
var r = n[t],
r = { card_id: r.cardId, code: r.code }
i.push(r)
}
k(a.openCard, { card_list: i }, e)
},
consumeAndShareCard: function (e) {
k(a.consumeAndShareCard, { consumedCardId: e.cardId, consumedCode: e.code }, e)
},
chooseWXPay: function (e) {
k(a.chooseWXPay, x(e), e)
},
openEnterpriseRedPacket: function (e) {
k(a.openEnterpriseRedPacket, x(e), e)
},
startSearchBeacons: function (e) {
k(a.startSearchBeacons, { ticket: e.ticket }, e)
},
stopSearchBeacons: function (e) {
k(a.stopSearchBeacons, {}, e)
},
onSearchBeacons: function (e) {
M(a.onSearchBeacons, e)
},
openEnterpriseChat: function (e) {
k("openEnterpriseChat", { useridlist: e.userIds, chatname: e.groupName }, e)
},
launchMiniProgram: function (e) {
k(
"launchMiniProgram",
{
targetAppId: e.targetAppId,
path: (e => {
var n
if ("string" == typeof e && 0 < e.length) return (n = e.split("?")[0]), (n += ".html"), void 0 !== (e = e.split("?")[1]) ? n + "?" + e : n
})(e.path),
envVersion: e.envVersion,
},
e
)
},
miniProgram: {
navigateBack: function (e) {
;(e = e || {}),
B(function () {
k("invokeMiniProgramAPI", { name: "navigateBack", arg: { delta: e.delta || 1 } }, e)
})
},
navigateTo: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "navigateTo", arg: { url: e.url } }, e)
})
},
redirectTo: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "redirectTo", arg: { url: e.url } }, e)
})
},
switchTab: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "switchTab", arg: { url: e.url } }, e)
})
},
reLaunch: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "reLaunch", arg: { url: e.url } }, e)
})
},
postMessage: function (e) {
B(function () {
k("invokeMiniProgramAPI", { name: "postMessage", arg: e.data || {} }, e)
})
},
getEnv: function (e) {
B(function () {
e({ miniprogram: "miniprogram" === r.__wxjs_environment })
})
},
},
}),
(w = 1),
(T = {}),
n.addEventListener(
"error",
function (e) {
var n, i, t
l ||
((t = (n = e.target).tagName), (i = n.src), "IMG" != t && "VIDEO" != t && "AUDIO" != t && "SOURCE" != t) ||
(-1 != i.indexOf("wxlocalresource://") &&
(e.preventDefault(),
e.stopPropagation(),
(t = n["wx-id"]) || ((t = w++), (n["wx-id"] = t)),
T[t] ||
((T[t] = !0),
wx.ready(function () {
wx.getLocalImgData({
localId: i,
success: function (e) {
n.src = e.localData
},
})
}))))
},
!0
),
n.addEventListener(
"load",
function (e) {
var n
l || ((n = (e = e.target).tagName), "IMG" != n && "VIDEO" != n && "AUDIO" != n && "SOURCE" != n) || ((n = e["wx-id"]) && (T[n] = !1))
},
!0
),
e && (r.wx = r.jWeixin = _),
_
)
function k(n, e, i) {
r.WeixinJSBridge
? WeixinJSBridge.invoke(n, P(e), function (e) {
A(n, e, i)
})
: C(n, i)
}
function M(n, i, t) {
r.WeixinJSBridge
? WeixinJSBridge.on(n, function (e) {
t && t.trigger && t.trigger(e), A(n, e, i)
})
: C(n, t || i)
}
function P(e) {
return ((e = e || {}).appId = h.appId), (e.verifyAppId = h.appId), (e.verifySignType = "sha1"), (e.verifyTimestamp = h.timestamp + ""), (e.verifyNonceStr = h.nonceStr), (e.verifySignature = h.signature), e
}
function x(e) {
return { timeStamp: e.timestamp + "", nonceStr: e.nonceStr, package: e.package, paySign: e.paySign, signType: e.signType || "SHA1" }
}
function A(e, n, i) {
"openEnterpriseChat" == e && (n.errCode = n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail
var t = n.errMsg,
e =
(t ||
((t = n.err_msg),
delete n.err_msg,
(t = ((e, n) => {
var i,
t = c[e]
return t && (e = t), (t = "ok"), n && ((i = n.indexOf(":")), ("access denied" != (t = (t = (t = -1 != (t = -1 != (t = "failed" == (t = "confirm" == (t = n.substring(i + 1)) ? "ok" : t) ? "fail" : t).indexOf("failed_") ? t.substring(7) : t).indexOf("fail_") ? t.substring(5) : t).replace(/_/g, " ")).toLowerCase()) && "no permission to execute" != t) || (t = "permission denied"), "" == (t = "config" == e && "function not exist" == t ? "ok" : t)) && (t = "fail"), (n = e + ":" + t)
})(e, t)),
(n.errMsg = t)),
(i = i || {})._complete && (i._complete(n), delete i._complete),
(t = n.errMsg || ""),
h.debug && !i.isInnerInvoke && alert(JSON.stringify(n)),
t.indexOf(":"))
switch (t.substring(e + 1)) {
case "ok":
i.success && i.success(n)
break
case "cancel":
i.cancel && i.cancel(n)
break
default:
i.fail && i.fail(n)
}
i.complete && i.complete(n)
}
function V(e) {
if (e) {
for (var n = 0, i = e.length; n < i; ++n) {
var t = e[n],
t = a[t]
t && (e[n] = t)
}
return e
}
}
function C(e, n) {
var i
!h.debug || (n && n.isInnerInvoke) || ((i = c[e]) && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || ""))
}
function L() {
return new Date().getTime()
}
function B(e) {
o && (r.WeixinJSBridge ? e() : n.addEventListener && n.addEventListener("WeixinJSBridgeReady", e, !1))
}
})

View File

@@ -1,139 +1,299 @@
<!-- node 版本是18.20.0 -->
<template>
<div id="app">
<div class="container">
<router-view />
</div>
</div>
<div id="app">
<div class="container">
<router-view />
</div>
</div>
</template>
<script src="../public/js/jweixin-1.3.2.js"></script>
<script>
export default {
name: "App",
data() {
return {
loading: null,
}
},
watch:{
name: "App",
data() {
return {
loading: null,
pathname: "",
parameterObject: {},
isPc: false,
socketTask: null,
}
},
watch: {
// "$route": {
// handler(to, from) {
// console.log("1111111");
// //避免首次获取不到window._czc
// if (window._czc) {
// let location = window.location
// let contentUrl = location.pathname + location.hash
// let refererUrl = "/"
},
// window._czc.push(["_trackPageview", contentUrl, refererUrl])
// window._czc.push(["_setAutoPageview", false])
// }
// if (window._hmt) {
// if (to["path"]) window._hmt.push(["_trackPageview", to["fullPath"]])
// }
// },
// // immediate: true, // 首次进入页面即执行
// },
},
mounted() {
// console.log(new Date());
console.log("初始化");
mounted() {
this.$store.dispatch('fetchHistoricalSearch') // 获取历史搜索记录
this.$store.dispatch('getAllForum', this) // 获取全部板块
// this.$store.dispatch('getUserInfo', this) /// 获取用户信息
},
this.$store.dispatch("fetchHistoricalSearch") // 获取历史搜索记录
this.$store.dispatch("getAllForum", this) // 获取全部板块
// this.isJudgePc()
// this.$skipUrl("gggg", false)
// setTimeout(() => {
// // this.hasMiucmsSessionCookie()
// // this.useSocket
// console.log(this.$store.state['user']);
// }, 1000)
let timer = setInterval(() => {
if (Object.keys(this.$store.state.user).length !== 0) {
this.useSocket()
clearInterval(timer)
}
}, 1000)
},
methods: {
// 开启socket
useSocket() {
let token = this.getMiucmsSessionCookie() || ""
this.socketTask = new WebSocket(`wss://socket.gter.net?token=${token}`)
this.socketTask.onopen = () => {
let user = this.$store.state.user || {}
if (user && token) {
this.socketTask.send(
JSON.stringify({
type: "bind",
data: {
token,
uid: user.uid || 0,
},
})
)
}
setTimeout(() => this.timedTransmission(), 50000)
}
this.socketTask.onclose = () => {
console.log("socket关闭了", new Date())
}
},
// 定时发送
timedTransmission() {
if (this.socketTask.readyState != 1) return
this.socketTask.send(JSON.stringify({type: "ping"}))
setTimeout(() => this.timedTransmission(), 50000)
},
getMiucmsSessionCookie() {
let cookies = document.cookie.split(";")
for (let i = 0; i < cookies.length; i++) {
let cookie = cookies[i].split("=")
if (cookie[0].trim() === "miucms_session") {
return cookie[1]
}
}
return null
},
isJudgePc() {
const userAgentInfo = navigator.userAgent
const Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]
let flag = true
for (let i = 0; i < Agents.length; i++) {
if (userAgentInfo.indexOf(Agents[i]) > 0) {
flag = false
break
}
}
if (flag) {
console.log("flag", flag)
let pathname = window.location.pathname
const queryString = window.location.search
const parameters = queryString.substring(1)
let parameterObject = Object.fromEntries(new URLSearchParams(parameters))
this.pathname = pathname
this.parameterObject = parameterObject
if (this.pathname.indexOf("allSections") != -1 && this.parameterObject["fid"]) {
this.handleNeedAllSkipPc()
return
}
if (this.pathname.indexOf("userIndex") != -1) {
this.handleNeedInfo()
return
}
let url = ""
if (pathname.indexOf("detailIndex") != -1) url = `https://bbs.gter.net/thread-${parameterObject["tid"]}-${parameterObject["page"] || 1}-1.html`
if (pathname.indexOf("searchResult") != -1) url = `https://search.gter.net/index.html?type=forum${parameterObject["kw"] ? `&kw=${parameterObject["kw"]}` : ""}`
if (pathname.indexOf("allSections") != -1 && !parameterObject["fid"]) url = `https://bbs.gter.net/forum.php`
if (pathname.indexOf("recommend") != -1) url = `https://bbs.gter.net/forum.php`
if (pathname.indexOf("collect") != -1) url = `https://bbs.gter.net/forum.php`
if (pathname == "/" || pathname == "" || !pathname) url = `https://bbs.gter.net/forum.php`
if (url) this.$skipUrl(url, false)
}
},
// 处理需要user信息的跳转PC端
handleNeedInfo() {
let user = this.$store.state.user || {}
let url = ""
if (JSON.stringify(user) != "{}") {
url = `https://bbs.gter.net/home.php?mod=space&uid=${user.uin}`
this.$skipUrl(url, false)
} else {
setTimeout(() => {
this.handleNeedInfo()
}, 300)
}
},
// 处理需要全部板块的跳转PC端
handleNeedAllSkipPc() {
let allForumList = this.$store.state.allForumList || []
let url = ""
let fid = this.parameterObject["fid"] || null
if (allForumList.length != 0) {
allForumList.forEach((element, index) => {
if (element.fid == fid) url = `https://bbs.gter.net/forum.php?gid=${element.fid}`
element.data.forEach((el, i) => {
if (el.fid == fid) url = `https://bbs.gter.net/forum-${el.fid}-${this.parameterObject["page"] || 1}.html`
})
})
this.$skipUrl(url, false)
} else {
setTimeout(() => {
this.handleNeedAllSkipPc()
}, 300)
}
},
},
}
</script>
<style lang="scss">
@import 'assets/css/normalize.css';
@import 'assets/css/public.scss'; //帖子内容样式
@import "assets/css/normalize.css";
@import "assets/css/public.scss"; //帖子内容样式
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: flex;
flex-direction: column;
margin: 0 auto;
position: relative;
// overflow: hidden;
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: flex;
flex-direction: column;
margin: 0 auto;
position: relative;
// overflow: hidden;
}
a {
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-decoration: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
text-decoration: none;
}
.container {
// padding: 0 0.35rem;
background-color: rgba(246, 246, 246, 1);
min-height: 100vh;
// padding: 0 0.35rem;
background-color: rgba(246, 246, 246, 1);
min-height: 100vh;
}
.flexflex {
display: flex;
display: flex;
}
.flexcenter {
display: flex;
justify-content: center;
align-items: center;
display: flex;
justify-content: center;
align-items: center;
}
.flexacenter {
display: flex;
align-items: center;
display: flex;
align-items: center;
}
.flexcolumn {
display: flex;
flex-direction: column;
display: flex;
flex-direction: column;
}
.flex1 {
flex: 1;
flex: 1;
}
.el-message {
min-width: 7rem !important;
min-width: 7rem !important;
}
// 文字一行显示
.one-line {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: -moz-box;
-moz-box-orient: vertical;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: -moz-box;
-moz-box-orient: vertical;
}
// 文字两行显示
.two-lines {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
// 文章三行显示
.three-lines {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
text-overflow: ellipsis;
}
// 阴影
.shadow {
-webkit-box-shadow: 0 0 .3rem rgba(0, 0, 0, .1);
box-shadow: 0 0 .3rem rgba(0, 0, 0, .1);
-webkit-box-shadow: 0 0 0.3rem rgba(0, 0, 0, 0.1);
box-shadow: 0 0 0.3rem rgba(0, 0, 0, 0.1);
}
// 弹窗公共类 蒙版
.pop-box {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.64);
z-index: 100;
align-items: center;
justify-content: flex-end;
overflow: auto;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.64);
z-index: 100;
align-items: center;
justify-content: flex-end;
overflow: auto;
}
// 清除 input 和 textarea 的默认样式
input,
textarea {
border: none;
outline: none;
background: transparent;
resize: none;
border: none;
outline: none;
background: transparent;
resize: none;
}
</style>

View File

@@ -1,6 +1,6 @@
// 热门版块标签
.hot-box {
padding: .34rem 0 0.3rem;
padding: .34rem 0 0;
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
@@ -12,9 +12,9 @@
font-size: 0.3rem;
margin: 0 .16rem .24rem 0;
padding: 0 0.15rem;
height: 0.72rem;
line-height: 0.72rem;
text-align: center;
word-break: break-word;
&.active {
border: 0.02rem solid #62B1FF;
@@ -93,12 +93,18 @@ section {
flex-direction: row;
justify-content: space-between;
.bottom-box {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
&:first-of-type {
margin-right: .2rem;
}
.icon-head {
width: 0.64rem;
height: 0.64rem;
@@ -108,16 +114,15 @@ section {
.bottom-name {
margin-left: 0.15rem;
font-size: 0.32rem;
word-break: break-word;
}
.bottom-right {
display: flex;
flex-direction: row;
align-items: center;
// padding-left: 0.25rem;
&:last-child {
// margin-left: 0.133333rem;
margin-left: .4rem;
}
@@ -161,7 +166,6 @@ section {
transform: rotate(45deg);
transform-origin: bottom;
margin-top: 0.05rem;
// margin-top: 0.01rem;
margin-left: 0.25rem;
width: 0.9rem;
font-size: 0.3rem;
@@ -174,15 +178,10 @@ section {
// 广告
.banner-box {
margin-bottom: 0.32rem;
width: 100%;
display: block;
border-radius: 0.32rem;
margin-bottom: 0.2rem;
// 广告图
.banner {
width: 100%;
display: block;
border-radius: 0.32rem;
}
}
// 分页
@@ -249,7 +248,7 @@ section {
.el-pagination.is-background.el-pagination--small .btn-prev,
.el-pagination.is-background.el-pagination--small .el-pager li {
border-radius: 50%;
}
}
}

View File

@@ -0,0 +1,9 @@
{
"{:1_1:}": "https://bbs.gter.net/static/image/smiley/default/smile.gif",
":(": "https://bbs.gter.net/static/image/smiley/default/frown.gif",
":@": "https://bbs.gter.net/static/image/smiley/default/default.gif",
":O": "https://bbs.gter.net/static/image/smiley/default/shocked.gif",
":p": "https://bbs.gter.net/static/image/smiley/default/frown.gif",
":(": "https://bbs.gter.net/static/image/smiley/default/frown.gif",
":(": "https://bbs.gter.net/static/image/smiley/default/frown.gif"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

View File

@@ -12,14 +12,12 @@
<div class="discussion-single-box flexflex flex1">
<div class="discussion-single-content flexacenter flex1">
<input class="discussion-single-input flex1" cursor-spacing="5" type="text"
:placeholder="twoCommentData ? '写回复…' : '想问啥,大胆问…'" :value="commentContent"
:placeholder="twoCommentData ? '写回复…' : '想问啥,大胆问…'" maxlength="500" :value="commentContent"
@input="inputCommentContent($event)" v-focus />
<img class="discussion-single-input-icom" @click.stop="setValue()"
src="@/assets/img/detail/unfold.png" />
</div>
<div class="discussion-single-btn flexcenter" @click.stop="postComment()">
发布
</div>
<div class="discussion-single-btn flexcenter" @click.stop="postComment()">发布</div>
</div>
</div>
</div>
@@ -59,7 +57,6 @@ export default {
props: ["twoCommentData", "popState", "commentContent"],
mounted() {
// console.log("子组件");
},
methods: {
@@ -73,8 +70,6 @@ export default {
this.$parent.twoCommentData = null
this.$parent.popState = ""
this.$parent.commentContent = ""
},
// 清空
@@ -107,11 +102,17 @@ export default {
</script>
<style lang="scss" scoped>
.pop-box {
height: 100%;
}
.pop-box-box {
width: 100vw;
background-color: #fff;
border-radius: .64rem .64rem 0 0;
position: relative;
position: fixed;
bottom: 0;
left: 0;
}
.discussion-single-box {
@@ -148,6 +149,7 @@ export default {
.discussion-single-input {
height: 100%;
font-size: 0.4rem;
}
.discussion-header {
@@ -189,7 +191,8 @@ export default {
.discussion-multi-content {
position: relative;
height: 8.84rem;
// height: 8.84rem;
max-height: 40vh;
box-sizing: border-box;
}
@@ -198,7 +201,8 @@ export default {
font-size: .4rem;
padding: .32rem;
box-sizing: border-box;
height: 50vh;
// height: 50vh;
height: 40vh;
overflow: auto;

File diff suppressed because it is too large Load Diff

View File

@@ -24,7 +24,6 @@ export default {
},
mounted() {
console.log(this.messagehint, "messagehint");
},
methods: {

View File

@@ -1,37 +1,44 @@
<template>
<div>
<!-- 帖子 -->
<div class="card-box" v-for="(item,index) in list" :key="index" @click.stop="toDetail(item.tid)">
<div class="top moreEllipsis">
<div class="top-label">{{ item.typename }}</div>
<div class="top-title">{{ item.subject }}</div>
</div>
<div class="center">
<div class="center-text moreEllipsis">{{ item.message }}</div>
</div>
<div class="bottom">
<div class="bottom-box">
<!-- <svg-icon icon-class="test-head" class-name="icon-head"></svg-icon> -->
<img class="icon-head" :src="item.avatar">
<div class="bottom-name">{{ item.author }}</div>
<div v-for="(item, index) in list" :key="index">
<template v-if="item.type == 'ad'">
<a :href="item.url"><img class="banner-box" :src="item.image"></a>
</template>
<div class="card-box" v-else @click.stop="toDetail(item.tid)">
<div class="top moreEllipsis">
<div class="top-label" v-if="item.typename">{{ item.typename }}</div>
<div class="top-title">{{ item.subject }}</div>
</div>
<div class="bottom-box">
<div class="bottom-right">
<svg-icon icon-class="look" class-name="icon-look"></svg-icon>
<div>{{ item.views }}</div>
<div class="center">
<div class="center-text moreEllipsis">{{ item.message }}</div>
</div>
<div class="bottom">
<div class="bottom-box">
<img class="icon-head" :src="item.avatar">
<div class="bottom-name">{{ item.author }}</div>
</div>
<div class="bottom-right">
<svg-icon icon-class="msg" class-name="icon-msg"></svg-icon>
<div>{{ item.replies }}</div>
<div class="bottom-box">
<div class="bottom-right">
<svg-icon icon-class="look" class-name="icon-look"></svg-icon>
<div>{{ item.views }}</div>
</div>
<div class="bottom-right">
<svg-icon icon-class="msg" class-name="icon-msg"></svg-icon>
<div>{{ item.replies }}</div>
</div>
</div>
</div>
</div>
<!-- 精华 -->
<div class="rightTop" v-if="item.digest>0">
<img class="rightTop-img" src="@/assets/img/icon/topRight .png">
<span>精华</span>
<!-- 精华 -->
<div class="rightTop" v-if="item.digest > 0">
<img class="rightTop-img" src="@/assets/img/icon/topRight .png">
<span>精华</span>
</div>
</div>
</div>
<!-- <div class="card-box">
<div class="top moreEllipsis">
<div class="top-label">经验</div>
@@ -81,10 +88,9 @@ export default {
},
methods: {
// 跳转详细
toDetail(tid){
this.$router.push(`/detail?tid=${tid}`)
toDetail(tid) {
this.$router.push(`/detail?tid=${tid}`)
},
},
};

View File

@@ -1,13 +1,12 @@
<!-- 板块导航 头部 点击板块后的头部导航 -->
<template>
<div class="path-box">
<router-link class="path-box" :to="`/allSections?fid=${fid}`">
<div>论坛</div>
<span class="path-slash">/</span>
<div class="oneEllipsis">{{ stairname }}</div>
<span class="path-slash">/</span>
<div class="oneEllipsis">{{ subsectionsname }}</div>
<router-link v-if="isskip" class="path-box-a" :to="path"></router-link>
</div>
</router-link>
</template>
<script>
@@ -19,7 +18,7 @@ export default {
path: "/allSections",
};
},
props: ["stairname", "subsectionsname", "isskip"],
props: ["stairname", "subsectionsname", "fid"],
mounted() {
},
@@ -37,8 +36,7 @@ export default {
flex-direction: row;
height: 1.28rem;
line-height: 1.28rem;
margin: 0.2rem 0.35rem 0;
// padding: 0 0.25rem;
margin: 0.5rem 0.35rem 0;
padding: 0 .4rem;
border-radius: 1.68rem 1.68rem 0 1.68rem;
background-color: #fff;
@@ -47,14 +45,6 @@ export default {
box-shadow: 0 0 0.16rem rgba(0, 0, 0, 0.1);
position: relative;
.path-box-a {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.path-slash {
color: #D7D7D7;
font-size: .32rem;
@@ -65,22 +55,11 @@ export default {
color: #7F7F7F;
max-width: 2.5rem;
// &::before {
// content: "/";
// width: 0.2rem;
// padding: 0 0.07rem;
// color: #7F7F7F;
// }
&:last-child {
max-width: 50%;
color: #000;
font-weight: bold;
}
// &:first-child::before {
// content: "";
// }
}
&::after {
@@ -97,6 +76,4 @@ export default {
}
}
</style>

View File

@@ -12,7 +12,7 @@
<div class="form flexacenter">
<img class="search-icon" src="@/assets/img/headerNav/search.png">
<input class="flex1" ref="searchInput" v-model="searchText" type="text" placeholder="请输入搜索关键词"
@keydown.enter="toSearchResult(searchText)" />
@keydown.enter="toSearchResult(searchText)" maxlength="20" />
<img v-if="searchText" @click.stop="clearText()" class="clear-text" src="@/assets/img/icon/clear.png">
</div>
@@ -22,8 +22,9 @@
<div class="search-content flexcolumn" v-if="$store.state.historicalSearch.length != 0">
<div class="search-text">历史搜索</div>
<div class="search-label">
<span v-for="(item, index) in $store.state.historicalSearch" :key="index" @click.stop="toSearchResult(item)">{{ item
}}</span>
<span v-for="(item, index) in $store.state.historicalSearch" :key="index"
@click.stop="toSearchResult(item)">{{ item
}}</span>
</div>
</div>
<!-- 热门搜索 -->
@@ -49,12 +50,13 @@ export default {
}
},
props: ["issearch", "hotSearchkeywords"],
mounted() {
if (this.searchText.length > 0) this.showClear = true
else this.showClear = false
},
methods: {
collapseClick() {
if (this.collapseShow == true) this.collapseShow = false;
@@ -145,7 +147,7 @@ export default {
}
input {
font-size: 0.36rem;
font-size: 0.40rem;
border: none;
outline: 0;
color: #000;
@@ -185,7 +187,7 @@ export default {
span {
padding: 0 0.2rem;
height: 0.96rem;
// height: 0.96rem;
line-height: 0.96rem;
background-color: #fff;
border-radius: 0.16rem;
@@ -194,6 +196,7 @@ export default {
font-size: 0.36rem;
margin-right: .2rem;
margin-bottom: .24rem;
word-break: break-word;
}
}
}

View File

@@ -29,7 +29,7 @@
</div>
<div class="unlockCoin-hint flexacenter" style="font-size: .36rem;">作者设置了阅读限制解锁所有内容仅需 <div
class="unlockCoin-hint-sum">{{ info.price }}</div> 寄托币</div>
<div class="unlockCoin-btn flexcenter" @click="postCoin(defaultcoinnum)">立即解锁
<div class="unlockCoin-btn flexcenter" @click="postCoin()">立即解锁
</div>
<div class="unlockCoin-hint flexcenter">你共有 {{ mybalance }} 个寄托币</div>
</div>
@@ -44,14 +44,12 @@ export default {
props: ["popState", "coinConfig", "info", "mybalance"],
data() {
return {
defaultcoinnum: 1
};
},
mounted() {
},
methods: {
@@ -59,6 +57,11 @@ export default {
this.$parent.popState = ""
},
// 点击投币解锁
postCoin() {
this.$parent.postCoin()
}
},
};
@@ -69,7 +72,9 @@ export default {
width: 100vw;
background-color: #fff;
border-radius: .64rem .64rem 0 0;
position: relative;
position: fixed;
bottom: 0;
left: 0;
}
.coin-insufficient {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -2,17 +2,14 @@ import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI, { Message, Pagination, loading } from 'element-ui';
import { Message, Pagination, Alert, Loading, Dialog } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import { skipUrl, pageStop, pageMove, goTologin, copy, startupUnderLoading, closeUnderLoading, formattedDate, updateURLSearchParams, clearCookies } from "@/utils/common.js"
import http from "@/utils/request"
import VueSanitize from 'vue-sanitize'
import hintBox from '@/components/Hintbox'
Vue.config.productionTip = false
Vue.prototype.$baseURL = "https://forum.gter.net/api" // 请求接口的共 url
Vue.prototype.$loginUrl = "https://passport.gter.net/" // 跳转登录的url
Vue.prototype.$http = http // 跳转登录页面的方法
@@ -23,7 +20,7 @@ Vue.prototype.$goTologin = goTologin // 跳转登录页面的方法
Vue.prototype.$pageStop = pageStop // 页面禁止滑动
Vue.prototype.$pageMove = pageMove // 页面可以滑动
Vue.prototype.$Message = Message // 消息提示框
Vue.prototype.$loading = loading // 消息提示框
Vue.prototype.$loading = Loading // 消息提示框
Vue.prototype.$copy = copy // 复制
Vue.prototype.$startupUnderLoading = startupUnderLoading // 开启加载提示 element的
Vue.prototype.$closeUnderLoading = closeUnderLoading // 关闭加载提示 element的
@@ -31,12 +28,13 @@ Vue.prototype.$formattedDate = formattedDate // 时间戳转格式
Vue.prototype.$updateURLSearchParams = updateURLSearchParams // 不刷新的情况下修改url
Vue.prototype.$clearCookies = clearCookies // 清空Cookies
//svg文件引入
Vue.prototype.$baseURL = $baseURL // 清空Cookies
//svg文件引入
import './icons'
//动态设置fontsize
import './utils/fontSize.js'
// 判断是否是数组的 ,兼容操作
if (!Array.isArray) {
Array.isArray = function (arg) {
@@ -44,14 +42,11 @@ if (!Array.isArray) {
}
}
//ElementUI
Vue.use(ElementUI);
// Vue.use(ElementUI);
Vue.use(Pagination);
// 不要的
Vue.use(VueSanitize);
Vue.use(Alert);
Vue.use(Loading);
Vue.use(Dialog);
// v-focus
Vue.directive('focus', {

View File

@@ -1,120 +1,158 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
// import Recommend from "views/recommend/Recommend.vue"
import Vue from "vue"
import VueRouter from "vue-router"
Vue.use(VueRouter)
const VueRouterPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(to) {
return VueRouterPush.call(this, to).catch(err => err)
return VueRouterPush.call(this, to).catch(err => err)
}
//标题js
import getPageTitle from "@/utils/title-config";
import getPageTitle from "@/utils/title-config"
const Index = () => import('views/index/index')
const Recommend = () => import('views/index/recommend/Recommend')
const Collect = () => import('views/index/collect/Collect')
const AllSections = () => import('views/index/allSections/AllSections')
const search = () => import('views/search/search')
const SearchResult = () => import('views/search/searchResult/SearchResult')
const user = () => import('views/user/user')
const userIndex = () => import('views/user/UserIndex')
const detail = () => import('views/detail/detail')
const detailIndex = () => import('views/detail/detailIndex')
const Index = () => import("views/index/index")
const Recommend = () => import("views/index/recommend/Recommend")
const Collect = () => import("views/index/collect/Collect")
const AllSections = () => import("views/index/allSections/AllSections")
const search = () => import("views/search/search")
const SearchResult = () => import("views/search/searchResult/SearchResult")
const user = () => import("views/user/user")
const userIndex = () => import("views/user/UserIndex")
const detail = () => import("views/detail/detail")
const detailIndex = () => import("views/detail/detailIndex")
const routes = [
{
// 首页
path: '/',
name: 'Index',
redirect: "/recommend",
component: Index,
children: [
{
path: '/recommend',
name: 'Recommend',
component: Recommend,
meta: {
title: "推荐版块"
}
},
{
path: '/collect',
name: 'Collect',
component: Collect,
meta: {
title: "收藏的版块"
}
},
{
path: '/allSections',
name: 'AllSections',
component: AllSections,
meta: {
title: "全部版块"
}
},
]
}, {
path: '/searchResult', // 搜索结果
name: 'search',
redirect: "/searchResult",
component: search,
children: [
{
path: '/searchResult',
name: 'Recommend',
component: SearchResult,
meta: {
title: "搜索帖子"
}
},
]
}, {
path: '/user', // 我的
name: 'user',
redirect: "/userIndex",
component: user,
children: [
{
path: '/userIndex',
name: 'userIndex',
component: userIndex,
meta: {
title: "我的寄托"
}
},
]
}, {
path: '/detail', // 帖子详情
name: 'detail',
redirect: "/detailIndex",
component: detail,
children: [
{
path: '/detailIndex',
name: 'detailIndex',
component: detailIndex,
meta: {
title: "帖子详情"
}
},
]
}
{
// 首页
// path: '*',
path: "/",
name: "Index",
redirect: "/recommend",
component: Index,
children: [
{
path: "/recommend",
name: "Recommend",
component: Recommend,
meta: {
title: "推荐版块",
},
},
{
path: "/collect",
name: "Collect",
component: Collect,
meta: {
title: "收藏的版块",
},
},
{
path: "/allSections",
name: "AllSections",
component: AllSections,
meta: {
title: "全部版块",
},
},
],
},
{
path: "/searchResult", // 搜索结果
name: "search",
redirect: "/searchResult",
component: search,
children: [
{
path: "/searchResult",
name: "Recommend",
component: SearchResult,
meta: {
title: "搜索帖子",
},
},
],
},
{
path: "/user", // 我的
name: "user",
redirect: "/userIndex",
component: user,
children: [
{
path: "/userIndex",
name: "userIndex",
component: userIndex,
meta: {
title: "我的寄托",
},
},
],
},
{
path: "/detail", // 帖子详情
name: "detail",
redirect: "/detailIndex",
component: detail,
children: [
{
path: "/detailIndex",
name: "detailIndex",
component: detailIndex,
meta: {
title: "帖子详情",
},
},
],
},
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
mode: "history",
// mode: 'hash',
// mode: process.env.NODE_ENV == "development" ? 'hash' : 'history',
// base: process.env.BASE_URL,
routes,
})
router.beforeEach(async (to, from, next) => {
if (to.meta.title) document.title = getPageTitle(to.meta.title);
next();
});
// 判断是不是首次 加载
let isInitialNavigation = true
router.beforeEach(async (to, from, next) => {
if (to.meta.title) document.title = getPageTitle(to.meta.title)
if (isInitialNavigation) {
isInitialNavigation = false
} else {
if (window._hmt) {
if (to.path) {
window._hmt.push(["_trackPageview", "/#" + to.fullPath])
}
}
// if (window._czc) {
// let location = window.location
// let contentUrl = location.pathname + location.hash
// let refererUrl = "/"
// // 用于发送某个URL的PV统计请求
// window._czc.push(["_trackPageview", contentUrl, refererUrl])
// }
}
if (typeof wx !== "undefined") {
// console.log("to.fullPath", to.fullPath)
setTimeout(() => {
wx.miniProgram.postMessage({
data: location.href,
})
}, 200)
// wx.miniProgram.postMessage({
// data: to.fullPath,
// })
}
next()
})
export default router

View File

@@ -1,128 +1,135 @@
import Vue from 'vue'
import Vuex from 'vuex'
import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
export default new Vuex.Store({
state: {
historicalSearch: [], // 历史数据
allForumList: [], // 全部板块数据
homeRequestState: false, // 首页推荐和收藏接口的数据请求状态 这个是是否需要发送请求,因为用户点击收藏后需要重新获取
getUserInfoState: false, // 这个是是否在请求状态
favoriteList: [], // 收藏板块 数据
recommendList: [], // 推荐板块数据
menu: [],
user: {}, // 用户信息
hotSearchkeywords: [], // 热门搜索
loading: null,
},
getters: {
},
state: {
historicalSearch: [], // 历史数据
allForumList: [], // 全部板块数据
homeRequestState: false, // 首页推荐和收藏接口的数据请求状态 这个是是否需要发送请求,因为用户点击收藏后需要重新获取
getUserInfoState: false, // 这个是是否在请求状态
favoriteList: [], // 收藏板块 数据
recommendList: [], // 推荐板块数据
menu: [],
user: {}, // 用户信息
hotSearchkeywords: [], // 热门搜索
loading: null,
},
getters: {},
mutations: {
setHistoricalSearch(state, payload) {
if (!Array.isArray(payload)) payload = [payload]
let targetArr = [...new Set([...payload, ...state.historicalSearch])]
if (targetArr.length > 10) targetArr = targetArr.slice(0, 10)
mutations: {
setHistoricalSearch(state, payload) {
if (!Array.isArray(payload)) payload = [payload]
let targetArr = [...new Set([...payload, ...state.historicalSearch])]
if (targetArr.length > 10) targetArr = targetArr.slice(0, 10)
state.historicalSearch = targetArr
localStorage.setItem('historicalSearch', JSON.stringify(targetArr))
state.historicalSearch = targetArr
localStorage.setItem("historicalSearch", JSON.stringify(targetArr))
},
setAllForumList(state, payload) {
state.allForumList = payload
},
setHomeRequestState(state, payload) {
state.homeRequestState = payload
},
setFavoriteList(state, payload) {
state.favoriteList = payload
},
setRecommendList(state, payload) {
state.recommendList = payload
},
setUser(state, payload) {
state.user = payload
},
setHotSearchkeywords(state, payload) {
state.hotSearchkeywords = payload
},
setgetUserInfoState(state, payload) {
state.getUserInfoState = payload
},
setMenu(state, payload) {
state.menu = payload
},
},
setAllForumList(state, payload) {
state.allForumList = payload
actions: {
// 获取历史搜索的数据
fetchHistoricalSearch({ commit }) {
let historicalSearch = JSON.parse(localStorage.getItem("historicalSearch")) || []
commit("setHistoricalSearch", historicalSearch)
},
// 获取全部板块的数据
getAllForum({ commit }, that) {
that.$http
.get("/api/home/allForum")
.then(res => {
if (res.code != 200) return
let allForumList = res.data
commit("setAllForumList", allForumList)
})
.catch(err => {
that.$message.error(err.message)
})
},
// 获取用户信息 获取收藏信息那些数据
getUserInfo({ state, commit }, that) {
if (state.getUserInfoState) return
commit("setgetUserInfoState", true)
that.$http
.post("/api/home")
.then(res => {
if (res.code != 200) return
let data = res.data
let { config, favorite, hotSearchkeywords, recommend, user, menu } = data
const islogin = user.uin > 0 || user.uid > 0 ? true : false
// console.log("islogin", islogin)
commit("setHomeRequestState", true)
commit("setUser", user)
commit("setFavoriteList", favorite)
commit("setRecommendList", recommend)
commit("setHotSearchkeywords", hotSearchkeywords)
commit("setMenu", menu)
if (user.uid > 0 || user.uin > 0) {
// 这个是顶部用户数据的 这样不用监听是否请求成功
setTimeout(() => {
if (typeof xstat !== "undefined") {
xstat.identify({
uid: user.uid,
uin: user.uin,
})
}
}, 600)
}
if (that.userInfo) {
// 这个是顶部用户数据的 这样不用监听是否请求成功
that.userInfo = user
that.islogin = user.uid > 0 || user.uin > 0 ? true : false
that.hotSearchkeywords = hotSearchkeywords
that.menu = menu
}
})
.catch(err => {
that.$message.error(err.message)
})
.finally(() => {
// that.$closeUnderLoading(that)
commit("setgetUserInfoState", false)
})
},
},
setHomeRequestState(state, payload) {
state.homeRequestState = payload
},
setFavoriteList(state, payload) {
state.favoriteList = payload
},
setRecommendList(state, payload) {
state.recommendList = payload
},
setUser(state, payload) {
state.user = payload
},
setHotSearchkeywords(state, payload) {
state.hotSearchkeywords = payload
},
setgetUserInfoState(state, payload) {
state.getUserInfoState = payload
},
setMenu(state, payload) {
state.menu = payload
}
},
actions: {
// 获取历史搜索的数据
fetchHistoricalSearch({ commit }) {
let historicalSearch = JSON.parse(localStorage.getItem('historicalSearch')) || []
commit('setHistoricalSearch', historicalSearch)
},
// 获取全部板块的数据
getAllForum({ commit }, that) {
// getAllForum(commit, that) {
that.$startupUnderLoading(that)
that.$http.get("/api/home/allForum").then(res => {
if (res.code != 200) return;
let allForumList = res.data
commit('setAllForumList', allForumList)
}).catch(err => {
that.$message.error(err.message)
}).finally(() => {
that.$closeUnderLoading(that)
})
},
// 获取用户信息 获取收藏信息那些数据
getUserInfo({ state, commit }, that) {
if (state.getUserInfoState) return
commit('setgetUserInfoState', true)
// that.$startupUnderLoading(that)
that.$http.post("/api/home").then(res => {
if (res.code != 200) return;
let data = res.data
let { config, favorite, hotSearchkeywords, recommend, user, menu } = data
commit('setHomeRequestState', true)
commit('setUser', user)
commit('setFavoriteList', favorite)
commit('setRecommendList', recommend)
commit('setHotSearchkeywords', hotSearchkeywords)
commit('setMenu', menu)
if (that.userInfo) { // 这个是顶部用户数据的 这样不用监听是否请求成功
that.userInfo = user
that.islogin = user.uid > 0 ? true : false;
that.hotSearchkeywords = hotSearchkeywords
that.menu = menu
}
}).catch(err => {
that.$message.error(err.message)
}).finally(() => {
// that.$closeUnderLoading(that)
commit('setgetUserInfoState', false)
})
},
},
modules: {
}
modules: {},
})

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