Compare commits
71 Commits
d5ab2ca459
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4c0d840705 | ||
|
|
2b2bd9da53 | ||
|
|
f6091b0b28 | ||
|
|
170ba990fa | ||
|
|
bc299037e5 | ||
|
|
1d0d54e445 | ||
|
|
00f30db09e | ||
|
|
ca024d9a16 | ||
|
|
44aeb78e4f | ||
|
|
70f4c35039 | ||
|
|
380dde983a | ||
|
|
a7deaea24e | ||
|
|
cc4295f008 | ||
|
|
3ee03375b8 | ||
|
|
3589d6a3f0 | ||
|
|
f0de39f135 | ||
|
|
399922bb77 | ||
|
|
11056a74a4 | ||
|
|
98301d80fe | ||
|
|
25e15aa336 | ||
|
|
deffec9e26 | ||
|
|
1abc53b06d | ||
|
|
e29e0e36b9 | ||
|
|
7563c6c30e | ||
|
|
4d520f5665 | ||
|
|
6501d55e4f | ||
|
|
da5e80313b | ||
|
|
22ff67243f | ||
|
|
094aac1ac7 | ||
|
|
3df8333302 | ||
|
|
983ec684ce | ||
|
|
725786811a | ||
|
|
4e3046596e | ||
|
|
0425959db4 | ||
|
|
c791f02ee4 | ||
|
|
46a14bea6c | ||
|
|
e0af963c4a | ||
|
|
1138eac28f | ||
|
|
72aa4006b7 | ||
|
|
3c35324cfa | ||
|
|
b7fc627226 | ||
|
|
59d40d3609 | ||
|
|
bc778c3a48 | ||
|
|
bd0beb426b | ||
|
|
c0bc6c5431 | ||
|
|
442ad9ff31 | ||
|
|
462aefb7b9 | ||
|
|
98d53ad45e | ||
|
|
07b7eb2471 | ||
|
|
562481d08c | ||
|
|
7dc3c78715 | ||
|
|
9fe6c9046b | ||
|
|
4b9614be25 | ||
|
|
2c601cf573 | ||
|
|
7d3a84d6ae | ||
|
|
517d4803c3 | ||
|
|
126fb7355c | ||
|
|
e1bcfc00c5 | ||
|
|
787f4e8094 | ||
|
|
2f3e1198e6 | ||
|
|
25b6e6128d | ||
|
|
79405f8853 | ||
|
|
261a6c61c4 | ||
|
|
bcfaa0b260 | ||
|
|
39456715c8 | ||
|
|
7b2c4584b4 | ||
|
|
4e228cadd1 | ||
|
|
808baf798b | ||
|
|
34d052255f | ||
|
|
1ecc639410 | ||
|
|
bb952fc553 |
2
.gitignore
vendored
@@ -3,5 +3,5 @@ logs
|
|||||||
*.log
|
*.log
|
||||||
node_modules
|
node_modules
|
||||||
.DS_Store
|
.DS_Store
|
||||||
dist
|
# dist
|
||||||
*.local
|
*.local
|
||||||
|
|||||||
4
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"editor.suggest.snippetsPreventQuickSuggestions": false,
|
||||||
|
"aiXcoder.showTrayIcon": true
|
||||||
|
}
|
||||||
21
.vscode/tasks.json
vendored
Normal 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
1
dist/css/217.0fc0e835.css
vendored
Normal 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
@@ -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
@@ -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
1
dist/css/354.fd7ddcad.css
vendored
Normal file
1
dist/css/356.f7682b16.css
vendored
Normal file
1
dist/css/831.25be828c.css
vendored
Normal file
1
dist/css/878.0c2853cd.css
vendored
Normal 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
1
dist/css/app~189e7968.8b7662a1.css
vendored
Normal file
1
dist/css/chunk-vendors~7b6a7b5f.8608dd3a.css
vendored
Normal file
BIN
dist/fonts/element-icons.f1a45d74.ttf
vendored
Normal file
BIN
dist/fonts/element-icons.ff18efd1.woff
vendored
Normal file
BIN
dist/img/defaultAvatar.jpg
vendored
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
dist/img/empty.698c52d4.png
vendored
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
dist/img/favicon.ico
vendored
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
dist/img/notCollect.698c52d4.png
vendored
Normal file
|
After Width: | Height: | Size: 82 KiB |
0
src/assets/img/detail/unlock.png → dist/img/unlock.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
BIN
dist/img/user/avatarsetting.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
dist/img/user/bindemail.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
dist/img/user/bindingthird-party.png
vendored
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
dist/img/user/bindmobile.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
dist/img/user/changepassword.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
dist/img/user/collect.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
0
src/assets/img/user/information.png → dist/img/user/information.png
vendored
Executable file → Normal file
|
Before Width: | Height: | Size: 1011 B After Width: | Height: | Size: 1011 B |
BIN
dist/img/user/mystatus.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
dist/img/user/personaldata.png
vendored
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
dist/img/user/postmessage.png
vendored
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
dist/img/user/replymessage.png
vendored
Normal file
|
After Width: | Height: | Size: 968 B |
BIN
dist/img/user/visithomepage.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
12
dist/index.html
vendored
Normal file
1
dist/js/124.79130f1c.js
vendored
Normal 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
1
dist/js/280.ed574ed9.js
vendored
Normal file
1
dist/js/336.52ad8d34.js
vendored
Normal file
1
dist/js/337.4b2508a0.js
vendored
Normal 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
@@ -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
1
dist/js/718.165fc1ef.js
vendored
Normal file
1
dist/js/831.6fddd3bb.js
vendored
Normal 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
1
dist/js/884.b48d5ca7.js
vendored
Normal file
1
dist/js/app~42f9d7e6.9764086e.js
vendored
Normal file
1
dist/js/app~449a49d2.7db7a012.js
vendored
Normal file
1
dist/js/app~d363ae0c.bcaf0192.js
vendored
Normal file
1
dist/js/app~d92c34c1.f3d32b35.js
vendored
Normal file
1
dist/js/chunk-vendors~060599a5.24f19e49.js
vendored
Normal file
1
dist/js/chunk-vendors~200a565d.39847fe1.js
vendored
Normal file
1
dist/js/chunk-vendors~25e64ae6.c55fb344.js
vendored
Normal file
1
dist/js/chunk-vendors~2882e66b.2c8093d6.js
vendored
Normal file
1
dist/js/chunk-vendors~3430543d.cf0009ef.js
vendored
Normal file
1
dist/js/chunk-vendors~439af1fa.860dcae1.js
vendored
Normal file
1
dist/js/chunk-vendors~5551fa64.bd95ba0f.js
vendored
Normal file
1
dist/js/chunk-vendors~5c533fba.9bf46ea1.js
vendored
Normal file
1
dist/js/chunk-vendors~6012a5e8.fad4069d.js
vendored
Normal file
1
dist/js/chunk-vendors~61c4e7a6.414f2dab.js
vendored
Normal file
1
dist/js/chunk-vendors~7a6313df.5ee224e3.js
vendored
Normal file
1
dist/js/chunk-vendors~7bad1921.83749175.js
vendored
Normal file
1
dist/js/chunk-vendors~842dc778.64dc62a7.js
vendored
Normal file
1
dist/js/chunk-vendors~8787c537.316fdd09.js
vendored
Normal file
16
dist/js/chunk-vendors~89d5c698.efc5b497.js
vendored
Normal file
1
dist/js/chunk-vendors~8e64475f.812b7299.js
vendored
Normal file
1
dist/js/chunk-vendors~92ecdc2e.3a846b57.js
vendored
Normal file
1
dist/js/chunk-vendors~9b5e7775.6adfbd8e.js
vendored
Normal file
1
dist/js/chunk-vendors~b64a843a.c93ce69d.js
vendored
Normal file
1
dist/js/chunk-vendors~bb5633b7.bff7c084.js
vendored
Normal file
1
dist/js/chunk-vendors~bc050c32.2a84bea8.js
vendored
Normal file
1
dist/js/chunk-vendors~c08e88ca.200eba88.js
vendored
Normal file
7
dist/js/chunk-vendors~c3943e85.8bc853d5.js
vendored
Normal file
9
dist/js/chunk-vendors~c7cbfa4b.cdfe4d69.js
vendored
Normal file
5
dist/js/chunk-vendors~eb2fbf4c.11aa1638.js
vendored
Normal file
1
dist/js/chunk-vendors~f1d6293b.12e3b1ae.js
vendored
Normal file
1
dist/js/chunk-vendors~f7b4906f.b7dd6763.js
vendored
Normal file
545
dist/js/jweixin-1.3.2.js
vendored
Normal 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))
|
||||||
|
}
|
||||||
|
})
|
||||||
17109
package-lock.json
generated
Executable file → Normal file
@@ -14,7 +14,6 @@
|
|||||||
"svg-sprite-loader": "^6.0.11",
|
"svg-sprite-loader": "^6.0.11",
|
||||||
"vue": "^2.6.14",
|
"vue": "^2.6.14",
|
||||||
"vue-router": "^3.5.1",
|
"vue-router": "^3.5.1",
|
||||||
"vue-sanitize": "^0.2.3",
|
|
||||||
"vuex": "^3.6.2"
|
"vuex": "^3.6.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -22,9 +21,11 @@
|
|||||||
"@vue/cli-plugin-router": "~5.0.0",
|
"@vue/cli-plugin-router": "~5.0.0",
|
||||||
"@vue/cli-plugin-vuex": "~5.0.0",
|
"@vue/cli-plugin-vuex": "~5.0.0",
|
||||||
"@vue/cli-service": "~5.0.0",
|
"@vue/cli-service": "~5.0.0",
|
||||||
|
"postcss": "^8.4.21",
|
||||||
"sass-loader": "^13.2.0",
|
"sass-loader": "^13.2.0",
|
||||||
"vue-template-compiler": "^2.6.14",
|
"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": [
|
"browserslist": [
|
||||||
"> 1%",
|
"> 1%",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.2 KiB |
BIN
public/img/favicon.ico
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
@@ -1,17 +1,51 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="">
|
<html lang="">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
|
<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">
|
<!-- <link rel="icon" href="<%= BASE_URL %>/img/favicon.ico"> -->
|
||||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
<!-- <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>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<noscript>
|
<noscript>
|
||||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||||
</noscript>
|
</noscript>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
<div style="display: none">
|
||||||
|
<!-- <script type="text/javascript" src="//v1.cnzz.com/z_stat.php?id=1281224882&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 -->
|
<!-- built files will be auto injected -->
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
545
public/js/jweixin-1.3.2.js
Normal 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))
|
||||||
|
}
|
||||||
|
})
|
||||||
180
src/App.vue
@@ -1,11 +1,13 @@
|
|||||||
|
<!-- node 版本是18.20.0 -->
|
||||||
<template>
|
<template>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<router-view />
|
<router-view />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<script src="../public/js/jweixin-1.3.2.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -13,24 +15,182 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: null,
|
loading: null,
|
||||||
|
pathname: "",
|
||||||
|
parameterObject: {},
|
||||||
|
isPc: false,
|
||||||
|
socketTask: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch:{
|
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() {
|
mounted() {
|
||||||
this.$store.dispatch('fetchHistoricalSearch') // 获取历史搜索记录
|
// console.log(new Date());
|
||||||
this.$store.dispatch('getAllForum', this) // 获取全部板块
|
console.log("初始化");
|
||||||
// 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>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import 'assets/css/normalize.css';
|
@import "assets/css/normalize.css";
|
||||||
@import 'assets/css/public.scss'; //帖子内容样式
|
@import "assets/css/public.scss"; //帖子内容样式
|
||||||
|
|
||||||
#app {
|
#app {
|
||||||
font-family: Avenir, Helvetica, Arial, sans-serif;
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
@@ -110,8 +270,8 @@ a {
|
|||||||
|
|
||||||
// 阴影
|
// 阴影
|
||||||
.shadow {
|
.shadow {
|
||||||
-webkit-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 .3rem rgba(0, 0, 0, .1);
|
box-shadow: 0 0 0.3rem rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 弹窗公共类 蒙版
|
// 弹窗公共类 蒙版
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// 热门版块标签
|
// 热门版块标签
|
||||||
.hot-box {
|
.hot-box {
|
||||||
padding: .34rem 0 0.3rem;
|
padding: .34rem 0 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
@@ -12,9 +12,9 @@
|
|||||||
font-size: 0.3rem;
|
font-size: 0.3rem;
|
||||||
margin: 0 .16rem .24rem 0;
|
margin: 0 .16rem .24rem 0;
|
||||||
padding: 0 0.15rem;
|
padding: 0 0.15rem;
|
||||||
height: 0.72rem;
|
|
||||||
line-height: 0.72rem;
|
line-height: 0.72rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
word-break: break-word;
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
border: 0.02rem solid #62B1FF;
|
border: 0.02rem solid #62B1FF;
|
||||||
@@ -93,12 +93,18 @@ section {
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.bottom-box {
|
.bottom-box {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
|
&:first-of-type {
|
||||||
|
margin-right: .2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.icon-head {
|
.icon-head {
|
||||||
width: 0.64rem;
|
width: 0.64rem;
|
||||||
height: 0.64rem;
|
height: 0.64rem;
|
||||||
@@ -108,16 +114,15 @@ section {
|
|||||||
.bottom-name {
|
.bottom-name {
|
||||||
margin-left: 0.15rem;
|
margin-left: 0.15rem;
|
||||||
font-size: 0.32rem;
|
font-size: 0.32rem;
|
||||||
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-right {
|
.bottom-right {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
// padding-left: 0.25rem;
|
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
// margin-left: 0.133333rem;
|
|
||||||
margin-left: .4rem;
|
margin-left: .4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +166,6 @@ section {
|
|||||||
transform: rotate(45deg);
|
transform: rotate(45deg);
|
||||||
transform-origin: bottom;
|
transform-origin: bottom;
|
||||||
margin-top: 0.05rem;
|
margin-top: 0.05rem;
|
||||||
// margin-top: 0.01rem;
|
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
width: 0.9rem;
|
width: 0.9rem;
|
||||||
font-size: 0.3rem;
|
font-size: 0.3rem;
|
||||||
@@ -174,15 +178,10 @@ section {
|
|||||||
|
|
||||||
// 广告
|
// 广告
|
||||||
.banner-box {
|
.banner-box {
|
||||||
border-radius: 0.32rem;
|
margin-bottom: 0.32rem;
|
||||||
margin-bottom: 0.2rem;
|
|
||||||
|
|
||||||
// 广告图
|
|
||||||
.banner {
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
border-radius: 0.32rem;
|
border-radius: 0.32rem;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 分页
|
// 分页
|
||||||
|
|||||||
9
src/assets/emojiList.json
Normal 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"
|
||||||
|
}
|
||||||
|
Before Width: | Height: | Size: 6.7 KiB |
@@ -12,14 +12,12 @@
|
|||||||
<div class="discussion-single-box flexflex flex1">
|
<div class="discussion-single-box flexflex flex1">
|
||||||
<div class="discussion-single-content flexacenter flex1">
|
<div class="discussion-single-content flexacenter flex1">
|
||||||
<input class="discussion-single-input flex1" cursor-spacing="5" type="text"
|
<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 />
|
@input="inputCommentContent($event)" v-focus />
|
||||||
<img class="discussion-single-input-icom" @click.stop="setValue()"
|
<img class="discussion-single-input-icom" @click.stop="setValue()"
|
||||||
src="@/assets/img/detail/unfold.png" />
|
src="@/assets/img/detail/unfold.png" />
|
||||||
</div>
|
</div>
|
||||||
<div class="discussion-single-btn flexcenter" @click.stop="postComment()">
|
<div class="discussion-single-btn flexcenter" @click.stop="postComment()">发布</div>
|
||||||
发布
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -59,7 +57,6 @@ export default {
|
|||||||
props: ["twoCommentData", "popState", "commentContent"],
|
props: ["twoCommentData", "popState", "commentContent"],
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
// console.log("子组件");
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
@@ -73,8 +70,6 @@ export default {
|
|||||||
this.$parent.twoCommentData = null
|
this.$parent.twoCommentData = null
|
||||||
this.$parent.popState = ""
|
this.$parent.popState = ""
|
||||||
this.$parent.commentContent = ""
|
this.$parent.commentContent = ""
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 清空
|
// 清空
|
||||||
@@ -107,11 +102,17 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
.pop-box {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.pop-box-box {
|
.pop-box-box {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: .64rem .64rem 0 0;
|
border-radius: .64rem .64rem 0 0;
|
||||||
position: relative;
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.discussion-single-box {
|
.discussion-single-box {
|
||||||
@@ -148,6 +149,7 @@ export default {
|
|||||||
|
|
||||||
.discussion-single-input {
|
.discussion-single-input {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
font-size: 0.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.discussion-header {
|
.discussion-header {
|
||||||
@@ -189,7 +191,8 @@ export default {
|
|||||||
|
|
||||||
.discussion-multi-content {
|
.discussion-multi-content {
|
||||||
position: relative;
|
position: relative;
|
||||||
height: 8.84rem;
|
// height: 8.84rem;
|
||||||
|
max-height: 40vh;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -198,7 +201,8 @@ export default {
|
|||||||
font-size: .4rem;
|
font-size: .4rem;
|
||||||
padding: .32rem;
|
padding: .32rem;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
height: 50vh;
|
// height: 50vh;
|
||||||
|
height: 40vh;
|
||||||
|
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
|
||||||
|
|||||||
@@ -21,34 +21,35 @@
|
|||||||
<div class="head-arrows" :class="{ animation: headMorePopState }" v-if="headMorePopState"></div>
|
<div class="head-arrows" :class="{ animation: headMorePopState }" v-if="headMorePopState"></div>
|
||||||
<div class="head-more-pop" :class="{ animation: headMorePopState }">
|
<div class="head-more-pop" :class="{ animation: headMorePopState }">
|
||||||
<div class="head-more-userinfo flex1 flexacenter">
|
<div class="head-more-userinfo flex1 flexacenter">
|
||||||
<div class="head-more-left flexacenter">
|
<div class="head-more-left flexacenter" v-if="islogin">
|
||||||
<router-link to="/user">
|
<router-link class="flexacenter" to="/user" @click.native="headMorePopState = !headMorePopState">
|
||||||
<img class="head-more-userinfo-avatar" :src="userInfo.avatar || './img/defaultAvatar.jpg'" />
|
<img class="head-more-userinfo-avatar" :src="userInfo.avatar || $baseURL + '/img/defaultAvatar.jpg'" />
|
||||||
|
<div class="head-more-userinfo-username">{{ userInfo.nickname || "未登录" }}</div>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
</div>
|
||||||
|
<div class="head-more-left flexacenter" v-else @click="handleRegister()">
|
||||||
|
<img class="head-more-userinfo-avatar" :src="userInfo.avatar || $baseURL + '/img/defaultAvatar.jpg'" />
|
||||||
|
<div class="head-more-userinfo-username">{{ userInfo.nickname || "未登录" }}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="head-more-userinfo-username">
|
|
||||||
{{ userInfo.nickname || '未登录' }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="head-more-right">
|
<div class="head-more-right">
|
||||||
<!-- 消息 -->
|
<!-- 消息 -->
|
||||||
<div class="information-box" v-if="userInfo.messagenum">
|
<div class="information-box" v-if="userInfo.messagenum">
|
||||||
<img class="information-icon" src="@/assets/img/headerNav/information.png" />
|
<img class="information-icon" src="@/assets/img/icon/email.png" />
|
||||||
<div class="red-dot flexcenter">{{ userInfo.messagenum }}</div>
|
<div class="red-dot flexcenter">{{ userInfo.messagenum }}</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 登录按钮 -->
|
<!-- 登录按钮 -->
|
||||||
<div v-if="!islogin" class="loginBtn flexcenter" @click="handleRegister">
|
<div v-if="!islogin" class="loginBtn flexcenter" @click="handleRegister()">
|
||||||
登录/注册
|
登录/注册
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-list">
|
<div class="tab-list">
|
||||||
<a class="tab-item flexacenter" :href="item.url" target="_blank" :class="{ pitch: item.current == 1 }"
|
<a class="tab-item flexacenter" :href="item.url" target="_blank" :class="{ pitch: item.current == 1 }" v-for="(item, index) in menu" :key="index">{{ item.name }}</a>
|
||||||
v-for="(item, index) in menu" :key="index">{{ item.name }}</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="head-more-post flexcenter" @click.stop="$skipUrl('https://www.gter.net/bbs/post.html', false)">
|
<div class="head-more-post flexcenter" @click.stop="$skipUrl(invitationPost, false)">
|
||||||
<div class="head-more-post-icon flexcenter">
|
<div class="head-more-post-icon flexcenter">
|
||||||
<svg-icon icon-class="addyellow" class-name="head-more-post-img"></svg-icon>
|
<svg-icon icon-class="addyellow" class-name="head-more-post-img"></svg-icon>
|
||||||
</div>
|
</div>
|
||||||
@@ -58,8 +59,6 @@
|
|||||||
<div v-if="headMorePopState" @click="headMorePopState = !headMorePopState">
|
<div v-if="headMorePopState" @click="headMorePopState = !headMorePopState">
|
||||||
<svg-icon icon-class="cross" class-name="cross-icon"></svg-icon>
|
<svg-icon icon-class="cross" class-name="cross-icon"></svg-icon>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="head-pop" v-if="headMorePopState" @click="headMorePopState = !headMorePopState"></div>
|
<div class="head-pop" v-if="headMorePopState" @click="headMorePopState = !headMorePopState"></div>
|
||||||
@@ -68,7 +67,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import SearchBox from "../components/SearchBox.vue";
|
import SearchBox from "../components/SearchBox.vue"
|
||||||
|
|
||||||
|
import { invitationPost } from "@/utils/bizarreUrl"
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "HeaderNav",
|
name: "HeaderNav",
|
||||||
@@ -81,63 +82,52 @@ export default {
|
|||||||
userInfo: {}, // 注意 userInfo 写I 是否是大写 ,, 因为 user 已经改为全局,后面要删除传值的 user
|
userInfo: {}, // 注意 userInfo 写I 是否是大写 ,, 因为 user 已经改为全局,后面要删除传值的 user
|
||||||
menu: [],
|
menu: [],
|
||||||
hotSearchkeywords: [], // 热门搜索
|
hotSearchkeywords: [], // 热门搜索
|
||||||
};
|
invitationPost,
|
||||||
|
$baseURL: "", // 根目录
|
||||||
|
}
|
||||||
},
|
},
|
||||||
props: ["issearch", "needgetuser", "userinfo"],
|
props: ["issearch", "needgetuser", "userinfo"],
|
||||||
watch: {
|
watch: {
|
||||||
headMorePopState(newValue, oldValue) {
|
headMorePopState(newValue, oldValue) {
|
||||||
if (newValue) this.$pageStop();
|
if (newValue) this.$pageStop()
|
||||||
else this.$pageMove();
|
else this.$pageMove()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let user = this.$store.state.user
|
let user = this.$store.state.user
|
||||||
if (JSON.stringify(user) === "{}") this.$store.dispatch('getUserInfo', this)
|
if (JSON.stringify(user) === "{}") this.$store.dispatch("getUserInfo", this)
|
||||||
else {
|
else {
|
||||||
this.userInfo = user
|
this.userInfo = user
|
||||||
this.islogin = user.uid > 0 ? true : false;
|
this.islogin = user.uid > 0 || user.uin > 0 ? true : false
|
||||||
this.hotSearchkeywords = this.$store.state.hotSearchkeywords
|
this.hotSearchkeywords = this.$store.state.hotSearchkeywords
|
||||||
this.menu = this.$store.state.menu
|
this.menu = this.$store.state.menu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
components: {
|
|
||||||
SearchBox,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
// 处理登录
|
// 处理登录
|
||||||
handleRegister() {
|
handleRegister() {
|
||||||
let url = encodeURIComponent(location.href);
|
let url = encodeURIComponent(location.href)
|
||||||
this.$skipUrl(`${this.$loginUrl}?referer=${url}`, false);
|
this.$skipUrl(`${this.$loginUrl}?referer=${url}`, false)
|
||||||
},
|
|
||||||
|
|
||||||
// 获取用户信息
|
|
||||||
getUserInfoData() {
|
|
||||||
return
|
|
||||||
// this.$http.post("/widget/getUser").then((res) => {
|
|
||||||
this.$http.post("/api/index",).then((res) => {
|
|
||||||
if (res.code != 200) return;
|
|
||||||
this.userInfo = res.data.user;
|
|
||||||
this.islogin = res.data.user.uid > 0 ? true : false;
|
|
||||||
this.hotSearchkeywords = res.data.hotSearchkeywords
|
|
||||||
|
|
||||||
}).catch(err => {
|
|
||||||
this.$message.error(err.message)
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
|
|
||||||
collapseClick() {
|
collapseClick() {
|
||||||
if (this.collapseShow == true) this.collapseShow = false;
|
if (this.collapseShow == true) this.collapseShow = false
|
||||||
else this.collapseShow = true;
|
else this.collapseShow = true
|
||||||
},
|
},
|
||||||
collapseClose() {
|
collapseClose() {
|
||||||
this.collapseShow = false;
|
this.collapseShow = false
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
|
||||||
|
destroyed() {
|
||||||
|
this.$pageMove()
|
||||||
|
},
|
||||||
|
|
||||||
|
components: {
|
||||||
|
SearchBox,
|
||||||
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@@ -164,44 +154,42 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.right {
|
.right {
|
||||||
|
|
||||||
.head-more {
|
.head-more {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.head-more-icon {
|
.head-more-icon {
|
||||||
width: .48rem;
|
width: 0.48rem;
|
||||||
height: .4rem;
|
height: 0.4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.red-dot {
|
.red-dot {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: -0.2rem;
|
right: -0.2rem;
|
||||||
top: -0.2rem;
|
top: -0.2rem;
|
||||||
width: .16rem;
|
width: 0.16rem;
|
||||||
height: .16rem;
|
height: 0.16rem;
|
||||||
border-radius: .64rem;
|
border-radius: 0.64rem;
|
||||||
background-color: rgba(253, 63, 93, 1);
|
background-color: rgba(253, 63, 93, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.head-arrows {
|
.head-arrows {
|
||||||
width: .1333rem;
|
width: 0.1333rem;
|
||||||
height: .1333rem;
|
height: 0.1333rem;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: -.0133rem;
|
bottom: -0.0133rem;
|
||||||
right: -0.5333rem;
|
right: -0.5333rem;
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 0;
|
height: 0;
|
||||||
transform: translateX(50%);
|
transform: translateX(50%);
|
||||||
border: .24rem solid #000;
|
border: 0.24rem solid #000;
|
||||||
border-top-color: transparent;
|
border-top-color: transparent;
|
||||||
border-bottom-color: rgb(255, 255, 255);
|
border-bottom-color: rgb(255, 255, 255);
|
||||||
border-left-color: transparent;
|
border-left-color: transparent;
|
||||||
border-right-color: transparent;
|
border-right-color: transparent;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: all .2s;
|
transition: all 0.2s;
|
||||||
|
|
||||||
&.animation {
|
&.animation {
|
||||||
animation: slide-in-left2 0.5s ease-out forwards;
|
animation: slide-in-left2 0.5s ease-out forwards;
|
||||||
@@ -210,13 +198,13 @@ export default {
|
|||||||
|
|
||||||
.head-more-pop {
|
.head-more-pop {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: calc(100% - .0133rem);
|
top: calc(100% - 0.0133rem);
|
||||||
height: calc(100vh - 1.3rem);
|
height: calc(100vh - 1.3rem);
|
||||||
width: 7.6rem;
|
width: 7.6rem;
|
||||||
right: 0;
|
right: 0;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
transition: all .2s;
|
transition: all 0.2s;
|
||||||
right: -100%;
|
right: -100%;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
|
|
||||||
@@ -248,40 +236,37 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.head-more-userinfo {
|
.head-more-userinfo {
|
||||||
height: 2.88rem;
|
height: 2.88rem;
|
||||||
margin-left: .64rem;
|
margin-left: 0.64rem;
|
||||||
padding-right: .72rem;
|
margin-right: 0.72rem;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-bottom: .0133rem solid #ebebeb;
|
border-bottom: 0.0133rem solid #ebebeb;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.head-more-left {
|
.head-more-left {
|
||||||
|
|
||||||
.head-more-userinfo-avatar {
|
.head-more-userinfo-avatar {
|
||||||
margin-right: .24rem;
|
margin-right: 0.24rem;
|
||||||
width: 1.28rem;
|
width: 1.28rem;
|
||||||
height: 1.28rem;
|
height: 1.28rem;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.head-more-userinfo-username {
|
.head-more-userinfo-username {
|
||||||
font-size: .36rem;
|
font-size: 0.36rem;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.head-more-right {
|
.head-more-right {
|
||||||
.information-box {
|
.information-box {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: .44rem;
|
width: 0.44rem;
|
||||||
height: .44rem;
|
height: 0.44rem;
|
||||||
|
|
||||||
.information-icon {
|
.information-icon {
|
||||||
width: .44rem;
|
width: 0.44rem;
|
||||||
height: .44rem;
|
height: 0.44rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,36 +274,36 @@ export default {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
right: -0.2rem;
|
right: -0.2rem;
|
||||||
top: -0.2rem;
|
top: -0.2rem;
|
||||||
width: .36rem;
|
width: 0.36rem;
|
||||||
height: .36rem;
|
height: 0.36rem;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: .64rem;
|
border-radius: 0.64rem;
|
||||||
background-color: rgba(253, 63, 93, 1);
|
background-color: rgba(253, 63, 93, 1);
|
||||||
font-size: .26rem;
|
font-size: 0.26rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loginBtn {
|
.loginBtn {
|
||||||
width: 2.24rem;
|
width: 2.24rem;
|
||||||
height: .8rem;
|
height: 0.8rem;
|
||||||
border-radius: 3.12rem;
|
border-radius: 3.12rem;
|
||||||
background-color: rgba(98, 177, 255, 1);
|
background-color: rgba(98, 177, 255, 1);
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: .34rem;
|
font-size: 0.34rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-list {
|
.tab-list {
|
||||||
padding-right: .72rem;
|
padding-right: 0.72rem;
|
||||||
margin-left: 0.64rem;
|
margin-left: 0.64rem;
|
||||||
border-bottom: .0133rem solid #ebebeb;
|
border-bottom: 0.0133rem solid #ebebeb;
|
||||||
|
|
||||||
.tab-item {
|
.tab-item {
|
||||||
height: 1.44rem;
|
height: 1.44rem;
|
||||||
margin: .328rem 0;
|
margin: 0.328rem 0;
|
||||||
border-radius: .22rem;
|
border-radius: 0.22rem;
|
||||||
padding-left: .64rem;
|
padding-left: 0.64rem;
|
||||||
font-size: .36rem;
|
font-size: 0.36rem;
|
||||||
color: #555555;
|
color: #555555;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
|
||||||
@@ -332,28 +317,28 @@ export default {
|
|||||||
|
|
||||||
.head-more-post {
|
.head-more-post {
|
||||||
color: #000;
|
color: #000;
|
||||||
font-size: .4rem;
|
font-size: 0.4rem;
|
||||||
margin: 1.28rem 0 2.6667rem;
|
margin: 1.28rem 0 2.6667rem;
|
||||||
|
|
||||||
.head-more-post-icon {
|
.head-more-post-icon {
|
||||||
width: .48rem;
|
width: 0.48rem;
|
||||||
height: .48rem;
|
height: 0.48rem;
|
||||||
margin-right: .1333rem;
|
margin-right: 0.1333rem;
|
||||||
background-color: #fddf6d;
|
background-color: #fddf6d;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
|
||||||
.head-more-post-img {
|
.head-more-post-img {
|
||||||
width: .24rem;
|
width: 0.24rem;
|
||||||
height: .24rem;
|
height: 0.24rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cross-icon {
|
.cross-icon {
|
||||||
width: .32rem;
|
width: 0.32rem;
|
||||||
height: .32rem;
|
height: 0.32rem;
|
||||||
// padding: .8rem;
|
// padding: .8rem;
|
||||||
padding: .4rem;
|
padding: 0.4rem;
|
||||||
// position: sticky;
|
// position: sticky;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
// bottom: .2667rem;
|
// bottom: .2667rem;
|
||||||
@@ -369,10 +354,7 @@ export default {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.head-pop {
|
.head-pop {
|
||||||
@@ -554,7 +536,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
header {
|
header {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -597,7 +578,5 @@ header {
|
|||||||
top: -0.15rem;
|
top: -0.15rem;
|
||||||
right: -0.2rem;
|
right: -0.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
console.log(this.messagehint, "messagehint");
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!-- 帖子 -->
|
<!-- 帖子 -->
|
||||||
<div class="card-box" v-for="(item,index) in list" :key="index" @click.stop="toDetail(item.tid)">
|
<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 moreEllipsis">
|
||||||
<div class="top-label">{{ item.typename }}</div>
|
<div class="top-label" v-if="item.typename">{{ item.typename }}</div>
|
||||||
<div class="top-title">{{ item.subject }}</div>
|
<div class="top-title">{{ item.subject }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="center">
|
<div class="center">
|
||||||
@@ -11,7 +16,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<div class="bottom-box">
|
<div class="bottom-box">
|
||||||
<!-- <svg-icon icon-class="test-head" class-name="icon-head"></svg-icon> -->
|
|
||||||
<img class="icon-head" :src="item.avatar">
|
<img class="icon-head" :src="item.avatar">
|
||||||
<div class="bottom-name">{{ item.author }}</div>
|
<div class="bottom-name">{{ item.author }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -27,11 +31,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 精华 -->
|
<!-- 精华 -->
|
||||||
<div class="rightTop" v-if="item.digest>0">
|
<div class="rightTop" v-if="item.digest > 0">
|
||||||
<img class="rightTop-img" src="@/assets/img/icon/topRight .png">
|
<img class="rightTop-img" src="@/assets/img/icon/topRight .png">
|
||||||
<span>精华</span>
|
<span>精华</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- <div class="card-box">
|
<!-- <div class="card-box">
|
||||||
<div class="top moreEllipsis">
|
<div class="top moreEllipsis">
|
||||||
<div class="top-label">经验</div>
|
<div class="top-label">经验</div>
|
||||||
@@ -81,9 +88,8 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
// 跳转详细
|
// 跳转详细
|
||||||
toDetail(tid){
|
toDetail(tid) {
|
||||||
this.$router.push(`/detail?tid=${tid}`)
|
this.$router.push(`/detail?tid=${tid}`)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
<!-- 板块导航 头部 点击板块后的头部导航 -->
|
<!-- 板块导航 头部 点击板块后的头部导航 -->
|
||||||
<template>
|
<template>
|
||||||
<div class="path-box">
|
<router-link class="path-box" :to="`/allSections?fid=${fid}`">
|
||||||
<div>论坛</div>
|
<div>论坛</div>
|
||||||
<span class="path-slash">/</span>
|
<span class="path-slash">/</span>
|
||||||
<div class="oneEllipsis">{{ stairname }}</div>
|
<div class="oneEllipsis">{{ stairname }}</div>
|
||||||
<span class="path-slash">/</span>
|
<span class="path-slash">/</span>
|
||||||
<div class="oneEllipsis">{{ subsectionsname }}</div>
|
<div class="oneEllipsis">{{ subsectionsname }}</div>
|
||||||
<router-link v-if="isskip" class="path-box-a" :to="path"></router-link>
|
</router-link>
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -19,7 +18,7 @@ export default {
|
|||||||
path: "/allSections",
|
path: "/allSections",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: ["stairname", "subsectionsname", "isskip"],
|
props: ["stairname", "subsectionsname", "fid"],
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -37,8 +36,7 @@ export default {
|
|||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
height: 1.28rem;
|
height: 1.28rem;
|
||||||
line-height: 1.28rem;
|
line-height: 1.28rem;
|
||||||
margin: 0.2rem 0.35rem 0;
|
margin: 0.5rem 0.35rem 0;
|
||||||
// padding: 0 0.25rem;
|
|
||||||
padding: 0 .4rem;
|
padding: 0 .4rem;
|
||||||
border-radius: 1.68rem 1.68rem 0 1.68rem;
|
border-radius: 1.68rem 1.68rem 0 1.68rem;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
@@ -47,14 +45,6 @@ export default {
|
|||||||
box-shadow: 0 0 0.16rem rgba(0, 0, 0, 0.1);
|
box-shadow: 0 0 0.16rem rgba(0, 0, 0, 0.1);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.path-box-a {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.path-slash {
|
.path-slash {
|
||||||
color: #D7D7D7;
|
color: #D7D7D7;
|
||||||
font-size: .32rem;
|
font-size: .32rem;
|
||||||
@@ -65,22 +55,11 @@ export default {
|
|||||||
color: #7F7F7F;
|
color: #7F7F7F;
|
||||||
max-width: 2.5rem;
|
max-width: 2.5rem;
|
||||||
|
|
||||||
// &::before {
|
|
||||||
// content: "/";
|
|
||||||
// width: 0.2rem;
|
|
||||||
// padding: 0 0.07rem;
|
|
||||||
// color: #7F7F7F;
|
|
||||||
// }
|
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
max-width: 50%;
|
max-width: 50%;
|
||||||
color: #000;
|
color: #000;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
// &:first-child::before {
|
|
||||||
// content: "";
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
@@ -97,6 +76,4 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
<div class="form flexacenter">
|
<div class="form flexacenter">
|
||||||
<img class="search-icon" src="@/assets/img/headerNav/search.png">
|
<img class="search-icon" src="@/assets/img/headerNav/search.png">
|
||||||
<input class="flex1" ref="searchInput" v-model="searchText" type="text" placeholder="请输入搜索关键词"
|
<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">
|
<img v-if="searchText" @click.stop="clearText()" class="clear-text" src="@/assets/img/icon/clear.png">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -22,7 +22,8 @@
|
|||||||
<div class="search-content flexcolumn" v-if="$store.state.historicalSearch.length != 0">
|
<div class="search-content flexcolumn" v-if="$store.state.historicalSearch.length != 0">
|
||||||
<div class="search-text">历史搜索</div>
|
<div class="search-text">历史搜索</div>
|
||||||
<div class="search-label">
|
<div class="search-label">
|
||||||
<span v-for="(item, index) in $store.state.historicalSearch" :key="index" @click.stop="toSearchResult(item)">{{ item
|
<span v-for="(item, index) in $store.state.historicalSearch" :key="index"
|
||||||
|
@click.stop="toSearchResult(item)">{{ item
|
||||||
}}</span>
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -55,6 +56,7 @@ export default {
|
|||||||
else this.showClear = false
|
else this.showClear = false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
collapseClick() {
|
collapseClick() {
|
||||||
if (this.collapseShow == true) this.collapseShow = false;
|
if (this.collapseShow == true) this.collapseShow = false;
|
||||||
@@ -145,7 +147,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
font-size: 0.36rem;
|
font-size: 0.40rem;
|
||||||
border: none;
|
border: none;
|
||||||
outline: 0;
|
outline: 0;
|
||||||
color: #000;
|
color: #000;
|
||||||
@@ -185,7 +187,7 @@ export default {
|
|||||||
|
|
||||||
span {
|
span {
|
||||||
padding: 0 0.2rem;
|
padding: 0 0.2rem;
|
||||||
height: 0.96rem;
|
// height: 0.96rem;
|
||||||
line-height: 0.96rem;
|
line-height: 0.96rem;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 0.16rem;
|
border-radius: 0.16rem;
|
||||||
@@ -194,6 +196,7 @@ export default {
|
|||||||
font-size: 0.36rem;
|
font-size: 0.36rem;
|
||||||
margin-right: .2rem;
|
margin-right: .2rem;
|
||||||
margin-bottom: .24rem;
|
margin-bottom: .24rem;
|
||||||
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="unlockCoin-hint flexacenter" style="font-size: .36rem;">作者设置了阅读限制,解锁所有内容仅需 <div
|
<div class="unlockCoin-hint flexacenter" style="font-size: .36rem;">作者设置了阅读限制,解锁所有内容仅需 <div
|
||||||
class="unlockCoin-hint-sum">{{ info.price }}</div> 寄托币</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>
|
||||||
<div class="unlockCoin-hint flexcenter">你共有 {{ mybalance }} 个寄托币</div>
|
<div class="unlockCoin-hint flexcenter">你共有 {{ mybalance }} 个寄托币</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -44,14 +44,12 @@ export default {
|
|||||||
props: ["popState", "coinConfig", "info", "mybalance"],
|
props: ["popState", "coinConfig", "info", "mybalance"],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
defaultcoinnum: 1
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
@@ -59,6 +57,11 @@ export default {
|
|||||||
this.$parent.popState = ""
|
this.$parent.popState = ""
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 点击投币解锁
|
||||||
|
postCoin() {
|
||||||
|
this.$parent.postCoin()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -69,7 +72,9 @@ export default {
|
|||||||
width: 100vw;
|
width: 100vw;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: .64rem .64rem 0 0;
|
border-radius: .64rem .64rem 0 0;
|
||||||
position: relative;
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.coin-insufficient {
|
.coin-insufficient {
|
||||||
|
|||||||
21
src/main.js
@@ -2,17 +2,14 @@ import Vue from 'vue'
|
|||||||
import App from './App.vue'
|
import App from './App.vue'
|
||||||
import router from './router'
|
import router from './router'
|
||||||
import store from './store'
|
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 'element-ui/lib/theme-chalk/index.css';
|
||||||
import { skipUrl, pageStop, pageMove, goTologin, copy, startupUnderLoading, closeUnderLoading, formattedDate, updateURLSearchParams, clearCookies } from "@/utils/common.js"
|
import { skipUrl, pageStop, pageMove, goTologin, copy, startupUnderLoading, closeUnderLoading, formattedDate, updateURLSearchParams, clearCookies } from "@/utils/common.js"
|
||||||
import http from "@/utils/request"
|
import http from "@/utils/request"
|
||||||
import VueSanitize from 'vue-sanitize'
|
|
||||||
|
|
||||||
import hintBox from '@/components/Hintbox'
|
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
Vue.prototype.$baseURL = "https://forum.gter.net/api" // 请求接口的共 url
|
|
||||||
Vue.prototype.$loginUrl = "https://passport.gter.net/" // 跳转登录的url
|
Vue.prototype.$loginUrl = "https://passport.gter.net/" // 跳转登录的url
|
||||||
|
|
||||||
Vue.prototype.$http = http // 跳转登录页面的方法
|
Vue.prototype.$http = http // 跳转登录页面的方法
|
||||||
@@ -23,7 +20,7 @@ Vue.prototype.$goTologin = goTologin // 跳转登录页面的方法
|
|||||||
Vue.prototype.$pageStop = pageStop // 页面禁止滑动
|
Vue.prototype.$pageStop = pageStop // 页面禁止滑动
|
||||||
Vue.prototype.$pageMove = pageMove // 页面可以滑动
|
Vue.prototype.$pageMove = pageMove // 页面可以滑动
|
||||||
Vue.prototype.$Message = Message // 消息提示框
|
Vue.prototype.$Message = Message // 消息提示框
|
||||||
Vue.prototype.$loading = loading // 消息提示框
|
Vue.prototype.$loading = Loading // 消息提示框
|
||||||
Vue.prototype.$copy = copy // 复制
|
Vue.prototype.$copy = copy // 复制
|
||||||
Vue.prototype.$startupUnderLoading = startupUnderLoading // 开启加载提示 element的
|
Vue.prototype.$startupUnderLoading = startupUnderLoading // 开启加载提示 element的
|
||||||
Vue.prototype.$closeUnderLoading = closeUnderLoading // 关闭加载提示 element的
|
Vue.prototype.$closeUnderLoading = closeUnderLoading // 关闭加载提示 element的
|
||||||
@@ -31,12 +28,13 @@ Vue.prototype.$formattedDate = formattedDate // 时间戳转格式
|
|||||||
Vue.prototype.$updateURLSearchParams = updateURLSearchParams // 不刷新的情况下修改url
|
Vue.prototype.$updateURLSearchParams = updateURLSearchParams // 不刷新的情况下修改url
|
||||||
Vue.prototype.$clearCookies = clearCookies // 清空Cookies
|
Vue.prototype.$clearCookies = clearCookies // 清空Cookies
|
||||||
|
|
||||||
|
Vue.prototype.$baseURL = $baseURL // 清空Cookies
|
||||||
|
|
||||||
//svg文件引入
|
//svg文件引入
|
||||||
import './icons'
|
import './icons'
|
||||||
//动态设置fontsize
|
//动态设置fontsize
|
||||||
import './utils/fontSize.js'
|
import './utils/fontSize.js'
|
||||||
|
|
||||||
|
|
||||||
// 判断是否是数组的 ,兼容操作
|
// 判断是否是数组的 ,兼容操作
|
||||||
if (!Array.isArray) {
|
if (!Array.isArray) {
|
||||||
Array.isArray = function (arg) {
|
Array.isArray = function (arg) {
|
||||||
@@ -44,14 +42,11 @@ if (!Array.isArray) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//ElementUI
|
// Vue.use(ElementUI);
|
||||||
Vue.use(ElementUI);
|
|
||||||
Vue.use(Pagination);
|
Vue.use(Pagination);
|
||||||
|
Vue.use(Alert);
|
||||||
// 不要的
|
Vue.use(Loading);
|
||||||
Vue.use(VueSanitize);
|
Vue.use(Dialog);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// v-focus
|
// v-focus
|
||||||
Vue.directive('focus', {
|
Vue.directive('focus', {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import Vue from 'vue'
|
import Vue from "vue"
|
||||||
import VueRouter from 'vue-router'
|
import VueRouter from "vue-router"
|
||||||
// import Recommend from "views/recommend/Recommend.vue"
|
|
||||||
|
|
||||||
Vue.use(VueRouter)
|
Vue.use(VueRouter)
|
||||||
|
|
||||||
@@ -8,113 +7,152 @@ const VueRouterPush = VueRouter.prototype.push
|
|||||||
VueRouter.prototype.push = function push(to) {
|
VueRouter.prototype.push = function push(to) {
|
||||||
return VueRouterPush.call(this, to).catch(err => err)
|
return VueRouterPush.call(this, to).catch(err => err)
|
||||||
}
|
}
|
||||||
|
|
||||||
//标题js
|
//标题js
|
||||||
import getPageTitle from "@/utils/title-config";
|
import getPageTitle from "@/utils/title-config"
|
||||||
|
|
||||||
|
const Index = () => import("views/index/index")
|
||||||
const Index = () => import('views/index/index')
|
const Recommend = () => import("views/index/recommend/Recommend")
|
||||||
const Recommend = () => import('views/index/recommend/Recommend')
|
const Collect = () => import("views/index/collect/Collect")
|
||||||
const Collect = () => import('views/index/collect/Collect')
|
const AllSections = () => import("views/index/allSections/AllSections")
|
||||||
const AllSections = () => import('views/index/allSections/AllSections')
|
const search = () => import("views/search/search")
|
||||||
const search = () => import('views/search/search')
|
const SearchResult = () => import("views/search/searchResult/SearchResult")
|
||||||
const SearchResult = () => import('views/search/searchResult/SearchResult')
|
const user = () => import("views/user/user")
|
||||||
const user = () => import('views/user/user')
|
const userIndex = () => import("views/user/UserIndex")
|
||||||
const userIndex = () => import('views/user/UserIndex')
|
const detail = () => import("views/detail/detail")
|
||||||
const detail = () => import('views/detail/detail')
|
const detailIndex = () => import("views/detail/detailIndex")
|
||||||
const detailIndex = () => import('views/detail/detailIndex')
|
|
||||||
|
|
||||||
const routes = [
|
const routes = [
|
||||||
{
|
{
|
||||||
// 首页
|
// 首页
|
||||||
path: '/',
|
// path: '*',
|
||||||
name: 'Index',
|
path: "/",
|
||||||
|
name: "Index",
|
||||||
redirect: "/recommend",
|
redirect: "/recommend",
|
||||||
component: Index,
|
component: Index,
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/recommend',
|
path: "/recommend",
|
||||||
name: 'Recommend',
|
name: "Recommend",
|
||||||
component: Recommend,
|
component: Recommend,
|
||||||
meta: {
|
meta: {
|
||||||
title: "推荐版块"
|
title: "推荐版块",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/collect',
|
path: "/collect",
|
||||||
name: 'Collect',
|
name: "Collect",
|
||||||
component: Collect,
|
component: Collect,
|
||||||
meta: {
|
meta: {
|
||||||
title: "收藏的版块"
|
title: "收藏的版块",
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/allSections',
|
path: "/allSections",
|
||||||
name: 'AllSections',
|
name: "AllSections",
|
||||||
component: AllSections,
|
component: AllSections,
|
||||||
meta: {
|
meta: {
|
||||||
title: "全部版块"
|
title: "全部版块",
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
},
|
||||||
]
|
],
|
||||||
}, {
|
},
|
||||||
path: '/searchResult', // 搜索结果
|
{
|
||||||
name: 'search',
|
path: "/searchResult", // 搜索结果
|
||||||
|
name: "search",
|
||||||
redirect: "/searchResult",
|
redirect: "/searchResult",
|
||||||
component: search,
|
component: search,
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/searchResult',
|
path: "/searchResult",
|
||||||
name: 'Recommend',
|
name: "Recommend",
|
||||||
component: SearchResult,
|
component: SearchResult,
|
||||||
meta: {
|
meta: {
|
||||||
title: "搜索帖子"
|
title: "搜索帖子",
|
||||||
}
|
|
||||||
},
|
},
|
||||||
]
|
},
|
||||||
}, {
|
],
|
||||||
path: '/user', // 我的
|
},
|
||||||
name: 'user',
|
{
|
||||||
|
path: "/user", // 我的
|
||||||
|
name: "user",
|
||||||
redirect: "/userIndex",
|
redirect: "/userIndex",
|
||||||
component: user,
|
component: user,
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/userIndex',
|
path: "/userIndex",
|
||||||
name: 'userIndex',
|
name: "userIndex",
|
||||||
component: userIndex,
|
component: userIndex,
|
||||||
meta: {
|
meta: {
|
||||||
title: "我的寄托"
|
title: "我的寄托",
|
||||||
}
|
|
||||||
},
|
},
|
||||||
]
|
},
|
||||||
}, {
|
],
|
||||||
path: '/detail', // 帖子详情
|
},
|
||||||
name: 'detail',
|
{
|
||||||
|
path: "/detail", // 帖子详情
|
||||||
|
name: "detail",
|
||||||
redirect: "/detailIndex",
|
redirect: "/detailIndex",
|
||||||
component: detail,
|
component: detail,
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/detailIndex',
|
path: "/detailIndex",
|
||||||
name: 'detailIndex',
|
name: "detailIndex",
|
||||||
component: detailIndex,
|
component: detailIndex,
|
||||||
meta: {
|
meta: {
|
||||||
title: "帖子详情"
|
title: "帖子详情",
|
||||||
}
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
const router = new VueRouter({
|
const router = new VueRouter({
|
||||||
mode: 'history',
|
mode: "history",
|
||||||
base: process.env.BASE_URL,
|
// mode: 'hash',
|
||||||
routes
|
// 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
|
export default router
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import Vue from 'vue'
|
import Vue from "vue"
|
||||||
import Vuex from 'vuex'
|
import Vuex from "vuex"
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
|
|
||||||
@@ -16,8 +16,7 @@ export default new Vuex.Store({
|
|||||||
hotSearchkeywords: [], // 热门搜索
|
hotSearchkeywords: [], // 热门搜索
|
||||||
loading: null,
|
loading: null,
|
||||||
},
|
},
|
||||||
getters: {
|
getters: {},
|
||||||
},
|
|
||||||
|
|
||||||
mutations: {
|
mutations: {
|
||||||
setHistoricalSearch(state, payload) {
|
setHistoricalSearch(state, payload) {
|
||||||
@@ -26,7 +25,7 @@ export default new Vuex.Store({
|
|||||||
if (targetArr.length > 10) targetArr = targetArr.slice(0, 10)
|
if (targetArr.length > 10) targetArr = targetArr.slice(0, 10)
|
||||||
|
|
||||||
state.historicalSearch = targetArr
|
state.historicalSearch = targetArr
|
||||||
localStorage.setItem('historicalSearch', JSON.stringify(targetArr))
|
localStorage.setItem("historicalSearch", JSON.stringify(targetArr))
|
||||||
},
|
},
|
||||||
|
|
||||||
setAllForumList(state, payload) {
|
setAllForumList(state, payload) {
|
||||||
@@ -59,70 +58,78 @@ export default new Vuex.Store({
|
|||||||
|
|
||||||
setMenu(state, payload) {
|
setMenu(state, payload) {
|
||||||
state.menu = payload
|
state.menu = payload
|
||||||
}
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
actions: {
|
actions: {
|
||||||
// 获取历史搜索的数据
|
// 获取历史搜索的数据
|
||||||
fetchHistoricalSearch({ commit }) {
|
fetchHistoricalSearch({ commit }) {
|
||||||
let historicalSearch = JSON.parse(localStorage.getItem('historicalSearch')) || []
|
let historicalSearch = JSON.parse(localStorage.getItem("historicalSearch")) || []
|
||||||
commit('setHistoricalSearch', historicalSearch)
|
commit("setHistoricalSearch", historicalSearch)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取全部板块的数据
|
// 获取全部板块的数据
|
||||||
getAllForum({ commit }, that) {
|
getAllForum({ commit }, that) {
|
||||||
// getAllForum(commit, that) {
|
that.$http
|
||||||
that.$startupUnderLoading(that)
|
.get("/api/home/allForum")
|
||||||
that.$http.get("/api/home/allForum").then(res => {
|
.then(res => {
|
||||||
if (res.code != 200) return;
|
if (res.code != 200) return
|
||||||
let allForumList = res.data
|
let allForumList = res.data
|
||||||
commit('setAllForumList', allForumList)
|
commit("setAllForumList", allForumList)
|
||||||
|
})
|
||||||
}).catch(err => {
|
.catch(err => {
|
||||||
that.$message.error(err.message)
|
that.$message.error(err.message)
|
||||||
}).finally(() => {
|
|
||||||
that.$closeUnderLoading(that)
|
|
||||||
})
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取用户信息 获取收藏信息那些数据
|
// 获取用户信息 获取收藏信息那些数据
|
||||||
getUserInfo({ state, commit }, that) {
|
getUserInfo({ state, commit }, that) {
|
||||||
if (state.getUserInfoState) return
|
if (state.getUserInfoState) return
|
||||||
commit('setgetUserInfoState', true)
|
commit("setgetUserInfoState", true)
|
||||||
// that.$startupUnderLoading(that)
|
that.$http
|
||||||
that.$http.post("/api/home").then(res => {
|
.post("/api/home")
|
||||||
if (res.code != 200) return;
|
.then(res => {
|
||||||
|
if (res.code != 200) return
|
||||||
let data = res.data
|
let data = res.data
|
||||||
let { config, favorite, hotSearchkeywords, recommend, user, menu } = data
|
let { config, favorite, hotSearchkeywords, recommend, user, menu } = data
|
||||||
|
|
||||||
commit('setHomeRequestState', true)
|
const islogin = user.uin > 0 || user.uid > 0 ? true : false
|
||||||
commit('setUser', user)
|
// console.log("islogin", islogin)
|
||||||
commit('setFavoriteList', favorite)
|
commit("setHomeRequestState", true)
|
||||||
commit('setRecommendList', recommend)
|
commit("setUser", user)
|
||||||
commit('setHotSearchkeywords', hotSearchkeywords)
|
commit("setFavoriteList", favorite)
|
||||||
commit('setMenu', menu)
|
commit("setRecommendList", recommend)
|
||||||
|
commit("setHotSearchkeywords", hotSearchkeywords)
|
||||||
|
commit("setMenu", menu)
|
||||||
|
|
||||||
if (that.userInfo) { // 这个是顶部用户数据的 这样不用监听是否请求成功
|
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.userInfo = user
|
||||||
that.islogin = user.uid > 0 ? true : false;
|
that.islogin = user.uid > 0 || user.uin > 0 ? true : false
|
||||||
that.hotSearchkeywords = hotSearchkeywords
|
that.hotSearchkeywords = hotSearchkeywords
|
||||||
that.menu = menu
|
that.menu = menu
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}).catch(err => {
|
.catch(err => {
|
||||||
that.$message.error(err.message)
|
that.$message.error(err.message)
|
||||||
}).finally(() => {
|
})
|
||||||
|
.finally(() => {
|
||||||
// that.$closeUnderLoading(that)
|
// that.$closeUnderLoading(that)
|
||||||
commit('setgetUserInfoState', false)
|
commit("setgetUserInfoState", false)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
modules: {
|
modules: {},
|
||||||
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||