Compare commits

..

20 Commits

Author SHA1 Message Date
A1300399510
4c0d840705 no message 2025-02-08 12:10:33 +08:00
A1300399510
2b2bd9da53 修改登录判断 2025-02-08 11:45:15 +08:00
A1300399510
f6091b0b28 修改详情删除提示 2024-12-09 17:07:59 +08:00
A1300399510
170ba990fa no message 2024-12-04 19:22:21 +08:00
A1300399510
bc299037e5 no message 2024-12-03 18:58:14 +08:00
A1300399510
1d0d54e445 no message 2024-12-03 18:51:04 +08:00
A1300399510
00f30db09e no message 2024-12-03 18:32:38 +08:00
A1300399510
ca024d9a16 no message 2024-12-03 17:54:23 +08:00
A1300399510
44aeb78e4f no message 2024-12-03 17:53:36 +08:00
A1300399510
70f4c35039 no message 2024-12-03 17:44:22 +08:00
A1300399510
380dde983a no message 2024-12-03 17:21:57 +08:00
A1300399510
a7deaea24e no message 2024-12-03 17:06:22 +08:00
A1300399510
cc4295f008 加向小程序发url ,分享用 2024-12-03 16:58:46 +08:00
A1300399510
3ee03375b8 no message 2024-10-21 11:36:05 +08:00
A1300399510
3589d6a3f0 增加登录后定时器,修改socket链接 2024-10-21 11:16:14 +08:00
A1300399510
f0de39f135 修改统计代码 2024-10-21 10:47:53 +08:00
A1300399510
399922bb77 no message 2024-08-26 17:16:43 +08:00
A1300399510
11056a74a4 增加管理员删除操作 2024-08-26 16:58:58 +08:00
A1300399510
98301d80fe 去掉顿号 2024-08-14 17:13:28 +08:00
A1300399510
25e15aa336 详情页加求定位 2024-08-14 17:08:38 +08:00
41 changed files with 1582 additions and 503 deletions

192
01.html
View File

@ -1,192 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<div class="typeoption" id="position_thread">
<table class="cgtl mbm" v-if="load">
<caption>
个人信息
</caption>
<tbody>
<tr v-if="info.profession">
<th>目前专业:</th>
<td v-text="info.profession"></td>
</tr>
<tr v-if="info.estate">
<th>目前状态:</th>
<td v-text="info.estate_text"></td>
</tr>
<tr v-if="info.undergraduate_school">
<th>本科学校:</th>
<td v-text="info.undergraduate_school"></td>
</tr>
<tr v-if="info.gpa_score">
<th>GPA:</th>
<td v-text="info.gpa_score"></td>
</tr>
<tr v-if="info.gpa_ranking">
<th>排名:</th>
<td v-text="info.gpa_ranking"></td>
</tr>
<tr v-if="info.master_school">
<th>硕士学校:</th>
<td v-text="info.master_school"></td>
</tr>
<tr v-if="info.master_achievement">
<th>成绩:</th>
<td v-text="info.master_achievement"></td>
</tr>
<tr v-if="info.gre_total">
<th>GRE</th>
<td>总分: <span v-text="info.gre_total"></span> V: <span v-text="info.gre_v"></span> Q: <span v-text="info.gre_q"></span> AW: <span v-text="info.gre_aw"></span></td>
</tr>
<tr v-if="info.ielts_total">
<th>IELTS</th>
<td>总分:<span v-text="info.ielts_total"></span> R:<span v-text="info.ielts_r"></span> L:<span v-text="info.ielts_l"></span> S:<span v-text="info.ielts_s"></span> W:<span v-text="info.ielts_w"></span></td>
</tr>
<tr v-if="info.toefl_total">
<th>TOEFL</th>
<td>总分:<span v-text="info.toefl_total"></span> R:<span v-text="info.toefl_r"></span> L:<span v-text="info.toefl_l"></span> S:<span v-text="info.toefl_s"></span> W:<span v-text="info.toefl_w"></span></td>
</tr>
</tbody>
</table>
<table class="cgtl mbm" v-else="">
<tbody>
<tr>
<td>数据加载中.. <img src="http://www.gter.net/static/img/loading-black.gif" /></td>
</tr>
</tbody>
</table>
<table class="cgtl mbm" v-if="load">
<caption>
申请信息
</caption>
<tbody>
<tr v-if="thread.profession">
<th>申请专业</th>
<td v-text="thread.profession"></td>
</tr>
<tr v-if="thread.profession_cid">
<th>专业分类</th>
<td>
<span v-text="thread.profession_text"></span>
<span v-if="thread.profession_cid &amp;&amp; thread.apply_llm">LL.M</span>
<span v-if="thread.profession_cid &amp;&amp; thread.apply_jd">J.D</span>
</td>
</tr>
<tr v-if="thread.apply_doctor || thread.apply_master">
<th>学位</th>
<td>
<span v-if="thread.apply_doctor">申博</span>
<span v-if="thread.apply_master" v-text="thread.apply_master_text"></span>
</td>
</tr>
<tr v-if="thread.country">
<th>国家或地区</th>
<td v-text="thread.country"></td>
</tr>
<tr v-if="thread.experience">
<th>科研经验</th>
<td v-text="thread.experience_text"></td>
</tr>
<tr v-if="thread.scholarship">
<th>是否要奖学金</th>
<td></td>
</tr>
<tr v-if="thread.profession_cid==2 &amp;&amp; thread.lsat">
<th>LSAT</th>
<td v-text="thread.lsat"></td>
</tr>
<tr v-if="thread.profession_cid==2 &amp;&amp; thread.sex>0">
<th>性别</th>
<td v-text="thread.sex_text"></td>
</tr>
</tbody>
</table>
<table v-if="load &amp;&amp; thread.paper" cellpadding="0" cellspacing="0" class="cgtl mbm">
<caption>
论文发表
</caption>
<tbody>
<tr>
<td v-html="thread.paper">...</td>
</tr>
</tbody>
</table>
<table v-if="load &amp;&amp; thread.recommendation" cellpadding="0" cellspacing="0" class="cgtl mbm">
<caption>
推荐信
</caption>
<tbody>
<tr>
<td v-html="thread.recommendation">...</td>
</tr>
</tbody>
</table>
<table v-if="load &amp;&amp; thread.hope" cellpadding="0" cellspacing="0" class="cgtl mbm">
<caption>
定位期望
</caption>
<tbody>
<tr>
<td v-html="thread.hope">...</td>
</tr>
</tbody>
</table>
<script>
new Vue({
el:'#position_thread',
data:{
key: '0f3949ebfda1e40e21ce37526326c0d8',
tid: '2613455',
session: '3d3ecbefcf5b45c59c66327135cc263d',
load: false,
info: [],
thread: [],
},
ready: function() {
this.loaddata()
},
methods: {
loaddata: function()
{
this.load = false;
this.$http.post('//www.gter.net/position_thread.json', {tid: this.tid, session: this.session, key: this.key }, {emulateJSON: true}).then(function(res) {
var data = typeof res.data=='string' ? JSON.parse(res.data) : res.data;
this.thread = data.thread
this.info = data.info
if (this.thread.id) {
this.load = true;
}
})
},
}
});
</script>
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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

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

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

19
dist/index.html vendored

File diff suppressed because one or more lines are too long

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

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

File diff suppressed because one or more lines are too long

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

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

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

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

View File

@ -1 +0,0 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[483],{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(4917),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/517.b66c61bd.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[561],{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(4917),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}}]);

View File

@ -1 +0,0 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[584],{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(4917),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/718.165fc1ef.js vendored Normal file

File diff suppressed because one or more lines are too long

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

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

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
"use strict";(self["webpackChunkninepage"]=self["webpackChunkninepage"]||[]).push([[94],{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(4917),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/app~42f9d7e6.9764086e.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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

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

View File

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

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

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

View File

@ -6,7 +6,10 @@
</div>
</div>
</template>
<script src="../public/js/jweixin-1.3.2.js"></script>
<script>
export default {
name: "App",
data() {
@ -57,7 +60,7 @@ export default {
if (Object.keys(this.$store.state.user).length !== 0) {
this.useSocket()
clearInterval(timer)
}
}
}, 1000)
},
@ -65,7 +68,7 @@ export default {
// socket
useSocket() {
let token = this.getMiucmsSessionCookie() || ""
this.socketTask = new WebSocket(`wss://app.gter.net/socket?token=${token}`)
this.socketTask = new WebSocket(`wss://socket.gter.net?token=${token}`)
this.socketTask.onopen = () => {
let user = this.$store.state.user || {}
if (user && token) {

View File

@ -18,8 +18,8 @@
</div>
</div>
<div class="head-arrows" :class="{animation: headMorePopState}" v-if="headMorePopState"></div>
<div class="head-more-pop" :class="{animation: headMorePopState}">
<div class="head-arrows" :class="{ animation: headMorePopState }" v-if="headMorePopState"></div>
<div class="head-more-pop" :class="{ animation: headMorePopState }">
<div class="head-more-userinfo flex1 flexacenter">
<div class="head-more-left flexacenter" v-if="islogin">
<router-link class="flexacenter" to="/user" @click.native="headMorePopState = !headMorePopState">
@ -46,7 +46,7 @@
</div>
<div class="tab-list">
<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>
<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>
</div>
<div class="head-more-post flexcenter" @click.stop="$skipUrl(invitationPost, false)">
@ -69,7 +69,7 @@
<script>
import SearchBox from "../components/SearchBox.vue"
import {invitationPost} from "@/utils/bizarreUrl"
import { invitationPost } from "@/utils/bizarreUrl"
export default {
name: "HeaderNav",
@ -98,11 +98,10 @@ export default {
if (JSON.stringify(user) === "{}") this.$store.dispatch("getUserInfo", this)
else {
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.menu = this.$store.state.menu
}
},
methods: {

View File

@ -2,11 +2,12 @@ import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import { Message, Pagination, Alert, Loading } from 'element-ui';
import { Message, Pagination, Alert, Loading, Dialog } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import { skipUrl, pageStop, pageMove, goTologin, copy, startupUnderLoading, closeUnderLoading, formattedDate, updateURLSearchParams, clearCookies } from "@/utils/common.js"
import http from "@/utils/request"
Vue.config.productionTip = false
Vue.prototype.$loginUrl = "https://passport.gter.net/" // 跳转登录的url
@ -26,7 +27,8 @@ Vue.prototype.$closeUnderLoading = closeUnderLoading // 关闭加载提示 elem
Vue.prototype.$formattedDate = formattedDate // 时间戳转格式
Vue.prototype.$updateURLSearchParams = updateURLSearchParams // 不刷新的情况下修改url
Vue.prototype.$clearCookies = clearCookies // 清空Cookies
Vue.prototype.$baseURL = "https://ansnid.oss-cn-shenzhen.aliyuncs.com/forum" // 清空Cookies
Vue.prototype.$baseURL = $baseURL // 清空Cookies
//svg文件引入
import './icons'
@ -44,6 +46,7 @@ if (!Array.isArray) {
Vue.use(Pagination);
Vue.use(Alert);
Vue.use(Loading);
Vue.use(Dialog);
// v-focus
Vue.directive('focus', {

View File

@ -1,143 +1,158 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
import Vue from "vue"
import VueRouter from "vue-router"
Vue.use(VueRouter)
const VueRouterPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(to) {
return VueRouterPush.call(this, to).catch(err => err)
return VueRouterPush.call(this, to).catch(err => err)
}
//标题js
import getPageTitle from "@/utils/title-config";
import getPageTitle from "@/utils/title-config"
const Index = () => import('views/index/index')
const Recommend = () => import('views/index/recommend/Recommend')
const Collect = () => import('views/index/collect/Collect')
const AllSections = () => import('views/index/allSections/AllSections')
const search = () => import('views/search/search')
const SearchResult = () => import('views/search/searchResult/SearchResult')
const user = () => import('views/user/user')
const userIndex = () => import('views/user/UserIndex')
const detail = () => import('views/detail/detail')
const detailIndex = () => import('views/detail/detailIndex')
const Index = () => import("views/index/index")
const Recommend = () => import("views/index/recommend/Recommend")
const Collect = () => import("views/index/collect/Collect")
const AllSections = () => import("views/index/allSections/AllSections")
const search = () => import("views/search/search")
const SearchResult = () => import("views/search/searchResult/SearchResult")
const user = () => import("views/user/user")
const userIndex = () => import("views/user/UserIndex")
const detail = () => import("views/detail/detail")
const detailIndex = () => import("views/detail/detailIndex")
const routes = [
{
// 首页
// path: '*',
path: '/',
name: 'Index',
redirect: "/recommend",
component: Index,
children: [
{
path: '/recommend',
name: 'Recommend',
component: Recommend,
meta: {
title: "推荐版块"
}
},
{
path: '/collect',
name: 'Collect',
component: Collect,
meta: {
title: "收藏的版块"
}
},
{
path: '/allSections',
name: 'AllSections',
component: AllSections,
meta: {
title: "全部版块"
}
},
]
}, {
path: '/searchResult', // 搜索结果
name: 'search',
redirect: "/searchResult",
component: search,
children: [
{
path: '/searchResult',
name: 'Recommend',
component: SearchResult,
meta: {
title: "搜索帖子"
}
},
]
}, {
path: '/user', // 我的
name: 'user',
redirect: "/userIndex",
component: user,
children: [
{
path: '/userIndex',
name: 'userIndex',
component: userIndex,
meta: {
title: "我的寄托"
}
},
]
}, {
path: '/detail', // 帖子详情
name: 'detail',
redirect: "/detailIndex",
component: detail,
children: [
{
path: '/detailIndex',
name: 'detailIndex',
component: detailIndex,
meta: {
title: "帖子详情"
}
},
]
}
{
// 首页
// path: '*',
path: "/",
name: "Index",
redirect: "/recommend",
component: Index,
children: [
{
path: "/recommend",
name: "Recommend",
component: Recommend,
meta: {
title: "推荐版块",
},
},
{
path: "/collect",
name: "Collect",
component: Collect,
meta: {
title: "收藏的版块",
},
},
{
path: "/allSections",
name: "AllSections",
component: AllSections,
meta: {
title: "全部版块",
},
},
],
},
{
path: "/searchResult", // 搜索结果
name: "search",
redirect: "/searchResult",
component: search,
children: [
{
path: "/searchResult",
name: "Recommend",
component: SearchResult,
meta: {
title: "搜索帖子",
},
},
],
},
{
path: "/user", // 我的
name: "user",
redirect: "/userIndex",
component: user,
children: [
{
path: "/userIndex",
name: "userIndex",
component: userIndex,
meta: {
title: "我的寄托",
},
},
],
},
{
path: "/detail", // 帖子详情
name: "detail",
redirect: "/detailIndex",
component: detail,
children: [
{
path: "/detailIndex",
name: "detailIndex",
component: detailIndex,
meta: {
title: "帖子详情",
},
},
],
},
]
const router = new VueRouter({
mode: 'history',
// mode: 'hash',
// mode: process.env.NODE_ENV == "development" ? 'hash' : 'history',
// base: process.env.BASE_URL,
routes
mode: "history",
// mode: 'hash',
// mode: process.env.NODE_ENV == "development" ? 'hash' : 'history',
// base: process.env.BASE_URL,
routes,
})
// 判断是不是首次 加载
let isInitialNavigation = true
router.beforeEach(async (to, from, next) => {
if (to.meta.title) document.title = getPageTitle(to.meta.title);
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 (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 (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)
next();
});
setTimeout(() => {
wx.miniProgram.postMessage({
data: location.href,
})
}, 200)
// wx.miniProgram.postMessage({
// data: to.fullPath,
// })
}
next()
})
export default router

View File

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

View File

@ -32,7 +32,7 @@ service.interceptors.request.use(
// config['headers']['authorization'] = "661aiz52k5e6vqgmkxnz0wvbv8nciz8h"
// if (process.env.NODE_ENV == "development") config['headers']['authorization'] = "0h870ovk2xckoqfsh8a3t3sg4sg5z7eg"
if (process.env.NODE_ENV == "development") config["headers"]["authorization"] = "95paemsnrr393p9vikpp16qo72"
if (process.env.NODE_ENV == "development") config["headers"]["authorization"] = "fed3c5700b07f543d336c9efe03c82c2"
return config
},

View File

@ -29,6 +29,21 @@
<a class="edit-box flexcenter" v-if="info.isauthor == 1" :href="`https://www.gter.net/bbs/post/edit.html?tid=${tid}&pid=${info.pid}`">
<img class="edit-icom" src="@/assets/img/detail/edit.png" />
</a>
<div class="manager-box" v-if="managementauthority">
<div class="dot-box flexflex" @click="openAdminOperate(null)">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<template v-if="adminOperateState">
<div class="operate-mask" @click="closeAdminOperate"></div>
<div class="operate">
<div class="item" @click="popUupDialog(0)">删除该帖</div>
<div class="item" @click="popUupDialog(1)">删帖且禁言</div>
</div>
</template>
</div>
</div>
<template v-if="type == 5">
<div class="summary-content">
@ -165,6 +180,20 @@
<div class="edit-box flexcenter" v-if="item.ismyself == 1" @click.stop="openEditPop(item)">
<img class="edit-icom" src="@/assets/img/detail/edit.png" />
</div>
<div class="manager-box" v-if="managementauthority">
<div class="dot-box flexflex" @click="openAdminOperate(index)">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
<template v-if="item.adminOperateState">
<div class="operate-mask" @click="closeAdminOperate"></div>
<div class="operate">
<div class="item" @click="popUupDialog(0)">删除该楼</div>
<div class="item" @click="popUupDialog(1)">删楼且禁言</div>
</div>
</template>
</div>
</div>
<div class="card-content flex1" @click.stop="handleReplyPop(item)" v-html="item.message"></div>
@ -527,6 +556,11 @@ export default {
9: "CS/EE",
10: "生农医药",
},
adminOperateState: false, //
deletePostToken: "",
managementauthority: 0, //
adminOperateListIndex: null, //
}
},
@ -538,7 +572,7 @@ export default {
"$store.state.user": {
handler(newV, oldV) {
if (JSON.stringify(newV) != "{}") {
this.islogin = newV.uid > 0 ? true : false
this.islogin = newV.uid > 0 || newV.uin > 0 ? true : false
this.tid = this.$route.query["tid"]
this.postList.page = this.$route.query["page"] || 1
@ -569,7 +603,7 @@ export default {
let data = res.data
let info = data.info
console.log(data.type)
this.managementauthority = data.managementauthority
info["message"] = info["message"].trim()
@ -1134,8 +1168,8 @@ export default {
if (thread.apply_llm) value += " LL.M"
if (thread.apply_jd) value += " J.D"
} else if (key == "country") {
thread.country.forEach(element => {
value += element.name + "、"
thread.country.forEach((element, i) => {
value += element.name + (i > 1 ? "、" : "")
})
} else if (key == "scholarship") {
value = "是"
@ -1143,7 +1177,7 @@ export default {
if (thread.profession_cid == 2) value = thread[key] == 1 ? "男" : "女"
else value = null
} else if (key == "lsat") {
if (thread.profession_cid == 2) value = thread['lsat']
if (thread.profession_cid == 2) value = thread["lsat"]
else value = null
} else if (key == "experience") {
value = experience[thread[key]]
@ -1165,6 +1199,60 @@ export default {
this.locationThreadData = obj1
})
},
//
openAdminOperate(index) {
this.deletePostToken = ""
this.adminOperateListIndex = null
if (index == null) {
this.adminOperateState = true
this.deletePostToken = this.token
return
}
this.postList.list[index]["adminOperateState"] = true
this.deletePostToken = this.postList.list[index].token
this.adminOperateListIndex = index
this.$forceUpdate()
// this.postList = this.token
},
//
closeAdminOperate() {
this.adminOperateState = false
this.postList.list.forEach(element => {
element["adminOperateState"] = false
})
this.$forceUpdate()
},
//
popUupDialog(hackinguser) {
this.closeAdminOperate()
const userConfirmed = confirm(`确定要${hackinguser ? "删除且禁言" : "删除"}?`)
if (userConfirmed) this.deletePost(hackinguser)
},
//
deletePost(hackinguser) {
console.log(this.adminOperateListIndex, "this.adminOperateListIndex")
// return
this.$http.post("/api/manage/delete", { token: this.deletePostToken, hackinguser }).then(res => {
if (res.code != 200) return
console.log(this.adminOperateListIndex)
if (this.adminOperateListIndex != null) {
location.reload()
return
}
if (document.referrer) window.history.back()
else window.location.href = "/"
this.openHintBox(res.message)
this.deletePostToken = ""
})
},
},
components: {
@ -1338,6 +1426,57 @@ export default {
width: 0.4rem;
}
}
.manager-box {
position: relative;
.dot-box {
margin-left: 0.4533rem;
height: 0.8rem;
align-items: center;
.item {
width: 0.0667rem;
height: 0.0667rem;
border-radius: 50%;
background: #8a8a8a;
border: 0.0133rem #7f7f7f solid;
&:not(:last-of-type) {
margin-right: 0.04rem;
}
}
}
.operate-mask {
width: 100vw;
height: 100vh;
// background: rgba(138, 138, 138, 0.6);
position: fixed;
top: 0;
left: 0;
}
.operate {
box-shadow: 0 0 0.3rem rgba(0, 0, 0, 0.1);
background: #fff;
position: absolute;
top: 0.8rem;
right: 0;
font-size: 0.36rem;
width: 2.9067rem;
border-radius: 0.1rem;
.item {
height: 1.0667rem;
line-height: 1.0667rem;
text-align: center;
color: #333;
&:not(:last-of-type) {
border-bottom: 0.0133rem solid #f0f0f0;
}
}
}
}
}
.card-content {

View File

@ -55,7 +55,7 @@
<div v-if="count > limit" class="paging flexcenter">
<el-pagination small background layout="prev, pager, next" @current-change="currentChange()"
:current-page.sync="page" :page-size="limit" :total="count">
:current-page.sync="page" :page-size="limit" :total="count * 1">
</el-pagination>
</div>

View File

@ -8,7 +8,7 @@ function resolve(dir) {
}
module.exports = defineConfig({
transpileDependencies: true,
publicPath: process.env.NODE_ENV === 'production' ? "https://ansnid.oss-cn-shenzhen.aliyuncs.com/forum" : '/',
publicPath: process.env.NODE_ENV === 'production' ? "https://framework.x-php.com/forum/" : '/',
// publicPath: "https://x-cloud-project.oss-cn-guangzhou.aliyuncs.com/forum",
configureWebpack: {
optimization: {