feat: 更新组件样式和功能,优化路由链接和用户体验
refactor: 重构组件模板,统一使用相对路径和内部路由 style: 调整CSS样式,修复布局和间距问题 fix: 修复投票和offer组件链接错误问题 chore: 添加新图片资源并更新相关引用路径 perf: 移除调试日志,优化页面加载性能 docs: 更新组件注释和文档说明 test: 更新测试用例以适配新功能 ci: 调整构建配置以支持新资源文件 build: 更新依赖项以兼容新功能
This commit is contained in:
@@ -16,8 +16,15 @@ export const headTop = defineComponent({
|
||||
onMounted(() => {});
|
||||
|
||||
let signInAlreadyState = ref(false);
|
||||
return { signInAlreadyState };
|
||||
|
||||
let input = ref("");
|
||||
let defaultSearchText = ref("屯特");
|
||||
const goSearch = () => {
|
||||
const searchText = input.value || defaultSearchText.value;
|
||||
redirectToExternalWebsite("/search/" + searchText);
|
||||
};
|
||||
return { input, defaultSearchText, goSearch, signInAlreadyState };
|
||||
},
|
||||
|
||||
template: `<div class="head-top flexacenter"> <img class="logo" src="https://oss.gter.net/logo" alt="" /> <div class="flex1"></div> <div class="input-box flexacenter"> <input class="input flex1" type="text" placeholder="大家都在搜:屯特" /> <img class="icon" src="./img/search-icon.svg" /> </div> <div class="sign-in sign-in-already flexcenter" v-if="signInAlreadyState" v-cloak onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')"> <img class="sign-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-icon.png" /> <span>已签到,明天再来</span> </div> <div class="sign-in sign-in-no flexacenter" v-else onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')" v-cloak> <img class="sign-in-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-in-bj.svg" /> <img class="coin-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-bj.svg" /> <img class="coin-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-icon.png" /> <span class="text flex1">签到领寄托币</span> <div class="sign-go flexcenter"> <img class="sign-go-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-go.svg" /> GO </div> <img class="petal1" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal1.png" /> <img class="petal2" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal2.png" /> <img class="petal3" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal3.png" /> </div></div>`,
|
||||
template: `<div class="head-top flexacenter"> <a href="/" class="flexacenter" target="_blank"> <img class="logo" src="https://oss.gter.net/logo" alt="" /> </a> <div class="flex1"></div> <div class="input-box flexacenter"> <input class="input flex1" type="text" :placeholder="'大家都在搜:' + defaultSearchText" @keyup.enter="goSearch" v-model="input" /> <img class="icon" src="/img/search-icon.svg" @click="goSearch" /> </div> <div class="sign-in sign-in-already flexcenter" v-if="signInAlreadyState" v-cloak onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')"> <img class="sign-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-icon.png" /> <span>已签到,明天再来</span> </div> <div class="sign-in sign-in-no flexacenter" v-else onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')" v-cloak> <img class="sign-in-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-in-bj.svg" /> <img class="coin-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-bj.svg" /> <img class="coin-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-icon.png" /> <span class="text flex1">签到领寄托币</span> <div class="sign-go flexcenter"> <img class="sign-go-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-go.svg" /> GO </div> <img class="petal1" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal1.png" /> <img class="petal2" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal2.png" /> <img class="petal3" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal3.png" /> </div></div>`,
|
||||
});
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
<div class="head-top flexacenter">
|
||||
<img class="logo" src="https://oss.gter.net/logo" alt="" />
|
||||
<a href="/" class="flexacenter" target="_blank">
|
||||
<img class="logo" src="https://oss.gter.net/logo" alt="" />
|
||||
</a>
|
||||
<div class="flex1"></div>
|
||||
<div class="input-box flexacenter">
|
||||
<input class="input flex1" type="text" placeholder="大家都在搜:屯特" />
|
||||
<img class="icon" src="./img/search-icon.svg" />
|
||||
<input class="input flex1" type="text" :placeholder="'大家都在搜:' + defaultSearchText" @keyup.enter="goSearch" v-model="input" />
|
||||
<img class="icon" src="/img/search-icon.svg" @click="goSearch" />
|
||||
</div>
|
||||
|
||||
<div class="sign-in sign-in-already flexcenter" v-if="signInAlreadyState" v-cloak onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')">
|
||||
|
||||
@@ -25,5 +25,5 @@ export const hotSearch = defineComponent({
|
||||
|
||||
components: {},
|
||||
|
||||
template: `<div class="hot-tag" v-if="list.length > 0"> <div class="hot-tag-title"> <img class="icon" src="./img/triangle-violet.svg" /> 热门搜索 </div> <div class="list flexflex"> <a class="item" v-for="item in list" :href="'http://14.22.79.19:9551/?tpl=forum/search&kw=' + item.keyword" target="_blank">{{ item.keyword }}</a> </div></div>`,
|
||||
template: `<div class="hot-tag" v-if="list.length > 0"> <div class="hot-tag-title"> <img class="icon" src="/img/triangle-violet.svg" /> 热门搜索 </div> <div class="list flexflex"> <a class="item" v-for="item in list" :href="'/search/' + item.keyword" target="_blank">{{ item.keyword }}</a> </div></div>`,
|
||||
});
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<div class="hot-tag" v-if="list.length > 0">
|
||||
<div class="hot-tag-title">
|
||||
<img class="icon" src="./img/triangle-violet.svg" />
|
||||
<img class="icon" src="/img/triangle-violet.svg" />
|
||||
热门搜索
|
||||
</div>
|
||||
<div class="list flexflex">
|
||||
<a class="item" v-for="item in list" :href="'http://14.22.79.19:9551/?tpl=forum/search&kw=' + item.keyword" target="_blank">{{ item.keyword }}</a>
|
||||
<a class="item" v-for="item in list" :href="'/search/' + item.keyword" target="_blank">{{ item.keyword }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -25,5 +25,5 @@ export const hotTag = defineComponent({
|
||||
|
||||
components: {},
|
||||
|
||||
template: `<div class="hot-tag" v-if="list.length > 0"> <div class="hot-tag-title"> <img class="icon" src="./img/triangle-orange.svg" /> 热门标签 </div> <div class="list flexflex"> <a class="item" v-for="item in list" :href="'http://14.22.79.19:9551/?tpl=forum/search-tag&tag=' + item.tagname" target="_blank">{{ item.tagname }}</a> </div></div>`,
|
||||
template: `<div class="hot-tag" v-if="list.length > 0"> <div class="hot-tag-title"> <img class="icon" src="./img/triangle-orange.svg" /> 热门标签 </div> <div class="list flexflex"> <a class="item" v-for="item in list" :href="'/tag/' + item.tagname" target="_blank">{{ item.tagname }}</a> </div></div>`,
|
||||
});
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
热门标签
|
||||
</div>
|
||||
<div class="list flexflex">
|
||||
<a class="item" v-for="item in list" :href="'http://14.22.79.19:9551/?tpl=forum/search-tag&tag=' + item.tagname" target="_blank">{{ item.tagname }}</a>
|
||||
<a class="item" v-for="item in list" :href="'/tag/' + item.tagname" target="_blank">{{ item.tagname }}</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -51,6 +51,7 @@ export const itemBottom = defineComponent({
|
||||
creationAlertBox("error", res.message);
|
||||
return;
|
||||
}
|
||||
|
||||
let data = res.data;
|
||||
creationAlertBox("success", res.message);
|
||||
|
||||
@@ -99,15 +100,24 @@ export const itemBottom = defineComponent({
|
||||
};
|
||||
|
||||
const copyLinkClick = () => {
|
||||
copyUid(`http://14.22.79.19:9551/?tpl=forum/details&uniqid=${item.value.uniqid}`);
|
||||
}
|
||||
copyForumUid(`http://14.22.79.19:9551/?tpl=forum/details&uniqid=${item.value.uniqid}`);
|
||||
};
|
||||
let QRcode = ref("");
|
||||
const showQRcode = () => {
|
||||
if (QRcode.value) return
|
||||
ajaxget(`/v2/api/forum/getQrcode?token=${item.value.token}`).then((res) => {
|
||||
if (res.code != 200) return;
|
||||
const data = res.data || {};
|
||||
QRcode.value = data.url || "";
|
||||
});
|
||||
};
|
||||
|
||||
return { copyLinkClick, collectClick, item, likeClick, isLogin, isLikeGif };
|
||||
return { QRcode, showQRcode, copyLinkClick, collectClick, item, likeClick, isLogin, isLikeGif };
|
||||
},
|
||||
|
||||
components: {
|
||||
like,
|
||||
},
|
||||
|
||||
template: `<div class="comment flexacenter" v-if="item?.commentreviews && !Array.isArray(item?.commentreviews)"> <img class="icon" :src="item?.commentreviews?.avatar" /> <div class="text one-line-display">{{ item?.commentreviews?.content || "[图]" }}</div></div><template v-if="item.comment_list?.length != 0"> <div class="comment flexacenter" style="margin-bottom: 15px" v-for="(item, index) in item.comment_list" :key="index"> <img class="icon" :src="item.avatar" /> <div class="text one-line-display">{{ item.content || "[图]" }}</div> </div></template><div class="bottom flexacenter"> <div class="bottom-item like flexacenter" @click="likeClick()" v-if="item?.type != 'tenement'"> <img v-if="item.is_like" class="icon" src="./img/like-red-icon.png" /> <img v-else class="icon" src="./img/like-icon.png" /> <div class="text">{{ item.likes || "赞" }}</div> </div> <div class="bottom-item flexacenter" @click="collectClick()"> <img v-if="item.is_collect" class="icon" src="./img/collect-golden.svg" /> <img v-else class="icon" src="./img/collect-gray.png" /> <div class="text">{{ item.collections || "收藏" }}</div> </div> <div class="bottom-item flexacenter" v-if="item?.type != 'tenement'"> <img class="icon" src="./img/discuss-icon.png" /> <div class="text">{{ item.comments || "讨论" }}</div> </div> <div class="bottom-item flexacenter" v-if="item?.type != 'tenement'"> <img class="icon" src="./img/bi-copper-icon.png" /> <div class="text">{{ item.coins || "投币" }}</div> </div> <div class="bottom-item share flexacenter"> <img class="icon" src="./img/share-gray.png" /> <div class="text">转发</div> <div class="share-box flexcenter"> <div class="share-item flexcenter" @click="copyLinkClick()"> <img class="share-icon" src="./img/copy-black-icon.png" /> <div class="text">复制链接</div> </div> <div class="share-item wenxin flexcenter"> <img class="share-icon" src="./img/weixin-icon.png" /> <div class="text">微信转发</div> <div class="QRcode-box flexcenter"> <img class="QRcode" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c-5kpcnzqqsgFptxhcq_cQnrlJKN1WgxCBq_D-81qNDQyOQ~~" /> <div class="text">微信扫码</div> </div> </div> </div> </div></div><like v-if="isLikeGif"></like>`,
|
||||
template: `<div class="comment flexacenter" v-if="item?.commentreviews && !Array.isArray(item?.commentreviews)"> <img class="icon" :src="item?.commentreviews?.avatar" /> <div class="text one-line-display">{{ item?.commentreviews?.content || "[图]" }}</div></div><template v-if="item.comment_list?.length != 0"> <div class="comment flexacenter" style="margin-bottom: 15px" v-for="(item, index) in item.comment_list" :key="index"> <img class="icon" :src="item.avatar" /> <div class="text one-line-display">{{ item.content || "[图]" }}</div> </div></template><div class="bottom flexacenter"> <div class="bottom-item like flexacenter" @click="likeClick()" v-if="item?.type != 'tenement'"> <img v-if="item.is_like" class="icon" src="/img/like-red-icon.png" /> <img v-else class="icon" src="/img/like-icon.png" /> <div class="text">{{ item.likes || "赞" }}</div> </div> <div class="bottom-item flexacenter" @click="collectClick()"> <img v-if="item.is_collect" class="icon" src="/img/collect-golden.svg" /> <img v-else class="icon" src="/img/collect-gray.png" /> <div class="text">{{ item.collections || "收藏" }}</div> </div> <a class="bottom-item flexacenter" v-if="item?.type != 'tenement'" :href="'/details/' + item.uniqid" target="_blank"> <img class="icon" src="/img/discuss-icon.png" /> <div class="text">{{ item.comments || "讨论" }}</div> </a> <a class="bottom-item flexacenter" v-if="item?.type != 'tenement'" :href="'/details/' + item.uniqid" target="_blank"> <img class="icon" src="/img/bi-copper-icon.png" /> <div class="text">{{ item.coins || "投币" }}</div> </a> <div class="bottom-item share flexacenter"> <img class="icon" src="/img/share-gray.png" /> <div class="text">转发</div> <div class="share-box flexcenter"> <div class="share-item flexcenter" @click="copyLinkClick()"> <img class="share-icon" src="/img/copy-black-icon.png" /> <div class="text">复制链接</div> </div> <!-- 鼠标移入 加载二维码 --> <div class="share-item wenxin flexcenter" @mouseenter="showQRcode"> <img class="share-icon" src="/img/weixin-icon.png" /> <div class="text">微信转发</div> <div v-if="QRcode" class="QRcode-box flexcenter"> <img class="QRcode" :src="QRcode" /> <div class="text">微信扫码</div> </div> </div> </div> </div></div><like v-if="isLikeGif"></like>`,
|
||||
});
|
||||
|
||||
@@ -10,41 +10,42 @@
|
||||
</template>
|
||||
<div class="bottom flexacenter">
|
||||
<div class="bottom-item like flexacenter" @click="likeClick()" v-if="item?.type != 'tenement'">
|
||||
<img v-if="item.is_like" class="icon" src="./img/like-red-icon.png" />
|
||||
<img v-else class="icon" src="./img/like-icon.png" />
|
||||
<img v-if="item.is_like" class="icon" src="/img/like-red-icon.png" />
|
||||
<img v-else class="icon" src="/img/like-icon.png" />
|
||||
<div class="text">{{ item.likes || "赞" }}</div>
|
||||
</div>
|
||||
|
||||
<div class="bottom-item flexacenter" @click="collectClick()">
|
||||
<img v-if="item.is_collect" class="icon" src="./img/collect-golden.svg" />
|
||||
<img v-else class="icon" src="./img/collect-gray.png" />
|
||||
<img v-if="item.is_collect" class="icon" src="/img/collect-golden.svg" />
|
||||
<img v-else class="icon" src="/img/collect-gray.png" />
|
||||
<div class="text">{{ item.collections || "收藏" }}</div>
|
||||
</div>
|
||||
|
||||
<div class="bottom-item flexacenter" v-if="item?.type != 'tenement'">
|
||||
<img class="icon" src="./img/discuss-icon.png" />
|
||||
<a class="bottom-item flexacenter" v-if="item?.type != 'tenement'" :href="'/details/' + item.uniqid" target="_blank">
|
||||
<img class="icon" src="/img/discuss-icon.png" />
|
||||
<div class="text">{{ item.comments || "讨论" }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="bottom-item flexacenter" v-if="item?.type != 'tenement'">
|
||||
<img class="icon" src="./img/bi-copper-icon.png" />
|
||||
<a class="bottom-item flexacenter" v-if="item?.type != 'tenement'" :href="'/details/' + item.uniqid" target="_blank">
|
||||
<img class="icon" src="/img/bi-copper-icon.png" />
|
||||
<div class="text">{{ item.coins || "投币" }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="bottom-item share flexacenter">
|
||||
<img class="icon" src="./img/share-gray.png" />
|
||||
<img class="icon" src="/img/share-gray.png" />
|
||||
<div class="text">转发</div>
|
||||
<div class="share-box flexcenter">
|
||||
<div class="share-item flexcenter" @click="copyLinkClick()">
|
||||
<img class="share-icon" src="./img/copy-black-icon.png" />
|
||||
<img class="share-icon" src="/img/copy-black-icon.png" />
|
||||
<div class="text">复制链接</div>
|
||||
</div>
|
||||
<div class="share-item wenxin flexcenter">
|
||||
<img class="share-icon" src="./img/weixin-icon.png" />
|
||||
<!-- 鼠标移入 加载二维码 -->
|
||||
<div class="share-item wenxin flexcenter" @mouseenter="showQRcode">
|
||||
<img class="share-icon" src="/img/weixin-icon.png" />
|
||||
<div class="text">微信转发</div>
|
||||
|
||||
<div class="QRcode-box flexcenter">
|
||||
<img class="QRcode" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c-5kpcnzqqsgFptxhcq_cQnrlJKN1WgxCBq_D-81qNDQyOQ~~" />
|
||||
<div v-if="QRcode" class="QRcode-box flexcenter">
|
||||
<img class="QRcode" :src="QRcode" />
|
||||
<div class="text">微信扫码</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -52,4 +53,4 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<like v-if="isLikeGif"></like>
|
||||
<like v-if="isLikeGif"></like>
|
||||
@@ -29,5 +29,5 @@ export const itemForum = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="item-box item-forum"> <item-head :itemdata="item"></item-head> <a v-if="item.title" class="title" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">{{ item.title }}</a> <a class="message two-line-display" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">{{ item.content }}</a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
template: `<div class="item-box item-forum"> <item-head :itemdata="item"></item-head> <a v-if="item.title" class="title" :href="'/details/' + item.uniqid" target="_blank">{{ item.title }}</a> <a class="message two-line-display" :href="'/details/' + item.uniqid" target="_blank">{{ item.content }}</a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
});
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<div class="item-box item-forum">
|
||||
<item-head :itemdata="item"></item-head>
|
||||
|
||||
<a v-if="item.title" class="title" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">{{ item.title }}</a>
|
||||
<a class="message two-line-display" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">{{ item.content }}</a>
|
||||
<a v-if="item.title" class="title" :href="'/details/' + item.uniqid" target="_blank">{{ item.title }}</a>
|
||||
<a class="message two-line-display" :href="'/details/' + item.uniqid" target="_blank">{{ item.content }}</a>
|
||||
|
||||
<item-bottom :itemdata="item"></item-bottom>
|
||||
</div>
|
||||
@@ -27,8 +27,11 @@ export const itemHead = defineComponent({
|
||||
if (item.value.type == "tenement") timestamp = timeago(item.value.updatetime, 2);
|
||||
sectionn.value = item.value.sectionn || [];
|
||||
|
||||
const sectionSet = new Set(sectionn.value);
|
||||
tags.value = item.value.tags?.filter((tag) => !sectionSet.has(tag));
|
||||
const sectionNameSet = new Set(sectionn.value.map((item) => item.name));
|
||||
tags.value = item.value.tags.filter((tagName) => !sectionNameSet.has(tagName));
|
||||
|
||||
// const sectionSet = new Set(sectionn.value);
|
||||
// tags.value = item.value.tags?.filter((tag) => !sectionSet.has(tag));
|
||||
|
||||
let show = ref(false);
|
||||
|
||||
@@ -87,12 +90,39 @@ export const itemHead = defineComponent({
|
||||
});
|
||||
};
|
||||
|
||||
return { reportState, cutShow, show, item, timestamp, sectionn, tags, ismanager, report, hide, recommend, essence };
|
||||
let cancelOperate = inject("cancelOperate");
|
||||
|
||||
// 删除
|
||||
const deleteItem = () => {
|
||||
const target = item.value;
|
||||
console.log("deleteItem");
|
||||
|
||||
// managerDelete(target.token)
|
||||
// .then(() => {
|
||||
// cancelOperate("like", token);
|
||||
// })
|
||||
// .finally(() => {
|
||||
// cutShow();
|
||||
// });
|
||||
};
|
||||
|
||||
// 编辑
|
||||
const edit = () => {
|
||||
const target = item.value;
|
||||
redirectToExternalWebsite(`/publish?uniqid=${target.uniqid}`);
|
||||
};
|
||||
|
||||
const goPersonalHomepage = (uin, uid) => {
|
||||
if (!uin && !uid) return;
|
||||
redirectToExternalWebsite(`/space?uin=${uin}&uid=${uid}`);
|
||||
};
|
||||
|
||||
return { edit, deleteItem, goPersonalHomepage, reportState, cutShow, show, item, timestamp, sectionn, tags, ismanager, report, hide, recommend, essence };
|
||||
},
|
||||
|
||||
components: {
|
||||
report,
|
||||
},
|
||||
|
||||
template: `<div class="item-head flexacenter"> <img class="avatar" :src="item?.user?.avatar || item.avatar" /> <div class="name">{{ item?.user?.nickname || item.nickname || "匿名用户" }}</div> <!-- <img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" /> --> <div class="time">{{ timestamp }}</div> <div class="flex1"></div> <div class="view flexacenter"> <img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" /> <div class="text">{{ item.views }}</div> </div> <div class="btn flexcenter" @click.stop="cutShow"> <img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" /> </div> <div v-if="show"> <div class="mask" @click.stop="cutShow"></div> <div class="operate"> <div class="item" @click.stop="report">举报</div> <template v-if="ismanager"> <div class="item" @click.stop="hide">{{ item.hidden == 0 ? "隐藏" : "显示" }}</div> <div class="item" @click.stop="recommend">{{ item.recommend == 1 ? "取消" : "" }}推荐</div> <div class="item" @click.stop="essence">{{ item.best == 1 ? "取消" : "" }}精华</div> </template> </div> </div></div><div class="label flexflex" v-if="sectionn?.length || tags?.length || item.recommend == 1 || item.best == 1"> <img class="item icon" v-if="item.recommend == 1 && item.best != 1" src="./img/recommend-icon.png" /> <img class="item icon" v-if="item.best == 1" src="./img/essence-icon.png" /> <a class="item blue" v-for="(item, index) in sectionn" :key="item" :href="'http://14.22.79.19:9551/?tpl=forum/search-tag&tag=' + item" target="_blank">{{ item }}</a> <a class="item" v-for="(item, index) in tags" :key="item" :href="'http://14.22.79.19:9551/?tpl=forum/search-tag&tag=' + item" target="_blank">{{ item }}</a></div><report v-if="reportState" :itemdata="item"></report>`,
|
||||
template: `<div class="item-head flexacenter"> <div class="user-box flexacenter" @click="goPersonalHomepage(item?.user?.uin, item?.user?.uid)"> <img class="avatar" :src="item?.user?.avatar || item.avatar" /> <div class="name">{{ item?.user?.nickname || item.nickname || "匿名用户" }}</div> <img class="group" v-if="info?.group?.image" :src="info?.group?.image" /> </div> <div class="time">{{ timestamp }}</div> <div class="flex1"></div> <div class="view flexacenter"> <img class="icon" src="/img/eye-icon.svg" /> <div class="text">{{ item.views }}</div> </div> <div class="btn flexcenter" @click.stop="cutShow"> <img class="icon" src="/img/dot-dot-dot-gray.png" /> </div> <div v-if="show"> <div class="mask" @click.stop="cutShow"></div> <div class="operate"> <div class="item" @click.stop="report">举报</div> <template v-if="ismanager"> <div class="item" @click.stop="hide">{{ item.hidden == 0 ? "隐藏" : "显示" }}</div> <div class="item" @click.stop="recommend">{{ item.recommend == 1 ? "取消" : "" }}推荐</div> <div class="item" @click.stop="essence">{{ item.best == 1 ? "取消" : "" }}精华</div> </template> <template v-if="item.type == 'thread' && item.ismyself"> <div class="item" @click.stop="edit">编辑</div> <div class="item" @click.stop="deleteItem">删除</div> </template> </div> </div></div><div class="label flexflex" v-if="sectionn?.length || tags?.length || item.recommend == 1 || item.best == 1"> <img class="item icon" v-if="item.recommend == 1 && item.best != 1" src="/img/recommend-icon.png" /> <img class="item icon" v-if="item.best == 1" src="/img/essence-icon.png" /> <a class="item blue" v-for="(item, index) in sectionn" :key="item" :href="'/section/' + item.uniqid" target="_blank">{{ item.name }}</a> <a class="item" v-for="(item, index) in tags" :key="item" :href="'/tag/' + item" target="_blank">{{ item }}</a></div><report v-if="reportState" :itemdata="item"></report>`,
|
||||
});
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
<div class="item-head flexacenter">
|
||||
<img class="avatar" :src="item?.user?.avatar || item.avatar" />
|
||||
<div class="name">{{ item?.user?.nickname || item.nickname || "匿名用户" }}</div>
|
||||
<!-- <img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" /> -->
|
||||
<div class="user-box flexacenter" @click="goPersonalHomepage(item?.user?.uin, item?.user?.uid)">
|
||||
<img class="avatar" :src="item?.user?.avatar || item.avatar" />
|
||||
<div class="name">{{ item?.user?.nickname || item.nickname || "匿名用户" }}</div>
|
||||
<img class="group" v-if="info?.group?.image" :src="info?.group?.image" />
|
||||
</div>
|
||||
|
||||
<div class="time">{{ timestamp }}</div>
|
||||
<div class="flex1"></div>
|
||||
|
||||
<div class="view flexacenter">
|
||||
<img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" />
|
||||
<img class="icon" src="/img/eye-icon.svg" />
|
||||
<div class="text">{{ item.views }}</div>
|
||||
</div>
|
||||
|
||||
<div class="btn flexcenter" @click.stop="cutShow">
|
||||
<img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" />
|
||||
<img class="icon" src="/img/dot-dot-dot-gray.png" />
|
||||
</div>
|
||||
|
||||
<div v-if="show">
|
||||
@@ -23,15 +26,20 @@
|
||||
<div class="item" @click.stop="recommend">{{ item.recommend == 1 ? "取消" : "" }}推荐</div>
|
||||
<div class="item" @click.stop="essence">{{ item.best == 1 ? "取消" : "" }}精华</div>
|
||||
</template>
|
||||
|
||||
<template v-if="item.type == 'thread' && item.ismyself">
|
||||
<div class="item" @click.stop="edit">编辑</div>
|
||||
<div class="item" @click.stop="deleteItem">删除</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="label flexflex" v-if="sectionn?.length || tags?.length || item.recommend == 1 || item.best == 1">
|
||||
<img class="item icon" v-if="item.recommend == 1 && item.best != 1" src="./img/recommend-icon.png" />
|
||||
<img class="item icon" v-if="item.best == 1" src="./img/essence-icon.png" />
|
||||
<a class="item blue" v-for="(item, index) in sectionn" :key="item" :href="'http://14.22.79.19:9551/?tpl=forum/search-tag&tag=' + item" target="_blank">{{ item }}</a>
|
||||
<a class="item" v-for="(item, index) in tags" :key="item" :href="'http://14.22.79.19:9551/?tpl=forum/search-tag&tag=' + item" target="_blank">{{ item }}</a>
|
||||
<img class="item icon" v-if="item.recommend == 1 && item.best != 1" src="/img/recommend-icon.png" />
|
||||
<img class="item icon" v-if="item.best == 1" src="/img/essence-icon.png" />
|
||||
<a class="item blue" v-for="(item, index) in sectionn" :key="item" :href="'/section/' + item.uniqid" target="_blank">{{ item.name }}</a>
|
||||
<a class="item" v-for="(item, index) in tags" :key="item" :href="'/tag/' + item" target="_blank">{{ item }}</a>
|
||||
</div>
|
||||
|
||||
<report v-if="reportState" :itemdata="item"></report>
|
||||
<report v-if="reportState" :itemdata="item"></report>
|
||||
@@ -16,16 +16,7 @@ export const itemMj = defineComponent({
|
||||
|
||||
setup(props) {
|
||||
let item = ref({ ...props.itemdata });
|
||||
// item.value.title = "【投41票】" + item.value.title;
|
||||
// res["timestamp"] = util.strtimeago(res.release_at, 4);
|
||||
// const data = res.data;
|
||||
// const option = data.option || [];
|
||||
// res["isvote"] = option.some((item) => item.selected == 1);
|
||||
// const time = util.handleDeadline(data.deadline);
|
||||
// res["time"] = time;
|
||||
// this.setData({
|
||||
// item: res,
|
||||
// });
|
||||
item.value['url'] = '/details/' + item.value.uniqid;
|
||||
return { item };
|
||||
},
|
||||
|
||||
@@ -34,5 +25,5 @@ export const itemMj = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="item-box item-mj"> <item-head :itemdata="item"></item-head> <div class="school flexacenter"> <img class="icon" :src="item.data.schoollogo" mode="heightFix"></image> <div class="text flex1 one-line-display">{{ item.data.schoolname }}</div> </div> <div class="major flexacenter" v-if="item.data.professional"> <div class="key">{{ item.data.project ? '专业' : '项目/专业' }}</div> <div class="value flex1 one-line-display">{{ item.data.professional }}</div> </div> <div class="major flexacenter" v-if="item.data.project"> <div class="key">项目</div> <div class="value flex1 one-line-display">{{ item.data.project }}</div> </div> <div class="major flexacenter" v-if="item.data.interviewtime"> <div class="key">面试</div> <div class="value time flex1 one-line-display">{{ item.data.interviewtime }}</div> </div> <div class="message" v-if="item.content">{{ item.content }}</div> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
template: `<div class="item-box item-mj"> <item-head :itemdata="item"></item-head> <a class="school flexacenter" :href="item.url" target="_blank"> <img class="icon" v-if="item.data.schoollogo" :src="item.data.schoollogo" mode="heightFix"></image> <div class="text flex1 one-line-display">{{ item.data.schoolname }}</div> </a> <a class="major flexacenter" v-if="item.data.professional" :href="item.url" target="_blank"> <div class="key">{{ item.data.project ? '专业' : '项目/专业' }}</div> <div class="value flex1 one-line-display">{{ item.data.professional }}</div> </a> <a class="major flexacenter" v-if="item.data.project" :href="item.url" target="_blank"> <div class="key">项目</div> <div class="value flex1 one-line-display">{{ item.data.project }}</div> </a> <a class="major flexacenter" v-if="item.data.interviewtime" :href="item.url" target="_blank"> <div class="key">面试</div> <div class="value time flex1 one-line-display">{{ item.data.interviewtime }}</div> </a> <a class="message" v-if="item.content" :href="item.url" target="_blank">{{ item.content }}</a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
});
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<div class="item-box item-mj">
|
||||
<item-head :itemdata="item"></item-head>
|
||||
<div class="school flexacenter">
|
||||
<img class="icon" :src="item.data.schoollogo" mode="heightFix"></image>
|
||||
<a class="school flexacenter" :href="item.url" target="_blank">
|
||||
<img class="icon" v-if="item.data.schoollogo" :src="item.data.schoollogo" mode="heightFix"></image>
|
||||
<div class="text flex1 one-line-display">{{ item.data.schoolname }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="major flexacenter" v-if="item.data.professional">
|
||||
<a class="major flexacenter" v-if="item.data.professional" :href="item.url" target="_blank">
|
||||
<div class="key">{{ item.data.project ? '专业' : '项目/专业' }}</div>
|
||||
<div class="value flex1 one-line-display">{{ item.data.professional }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="major flexacenter" v-if="item.data.project">
|
||||
<a class="major flexacenter" v-if="item.data.project" :href="item.url" target="_blank">
|
||||
<div class="key">项目</div>
|
||||
<div class="value flex1 one-line-display">{{ item.data.project }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="major flexacenter" v-if="item.data.interviewtime">
|
||||
<a class="major flexacenter" v-if="item.data.interviewtime" :href="item.url" target="_blank">
|
||||
<div class="key">面试</div>
|
||||
<div class="value time flex1 one-line-display">{{ item.data.interviewtime }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="message" v-if="item.content">{{ item.content }}</div>
|
||||
<a class="message" v-if="item.content" :href="item.url" target="_blank">{{ item.content }}</a>
|
||||
|
||||
<item-bottom :itemdata="item"></item-bottom>
|
||||
</div>
|
||||
@@ -16,58 +16,59 @@ export const itemOffer = defineComponent({
|
||||
|
||||
setup(props) {
|
||||
let item = ref({ ...props.itemdata });
|
||||
item.value["url"] = "/details/" + item.value.uniqid;
|
||||
|
||||
let isLogin = ref(true);
|
||||
let realname = ref(1); // 是否已经实名
|
||||
let userInfoWin = ref({
|
||||
authority: ["comment.edit", "comment.delete", "offercollege.hide", "offersummary.hide", "mj.hide", "topic:manager", "topic:hide"],
|
||||
avatar: "https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WFVSEKWOikN42jDKLNjtax7HL4xtfMOJSdU9oWFhY2E~/middle?random=1761733169",
|
||||
groupid: 3,
|
||||
nickname: "肖荣豪",
|
||||
realname: 1,
|
||||
token: "01346a38444d71aaadb3adad52b52c39",
|
||||
uid: 500144,
|
||||
uin: 4238049,
|
||||
});
|
||||
// let isLogin = ref(true);
|
||||
// let realname = ref(1); // 是否已经实名
|
||||
// let userInfoWin = ref({
|
||||
// authority: ["comment.edit", "comment.delete", "offercollege.hide", "offersummary.hide", "mj.hide", "topic:manager", "topic:hide"],
|
||||
// avatar: "https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WFVSEKWOikN42jDKLNjtax7HL4xtfMOJSdU9oWFhY2E~/middle?random=1761733169",
|
||||
// groupid: 3,
|
||||
// nickname: "肖荣豪",
|
||||
// realname: 1,
|
||||
// token: "01346a38444d71aaadb3adad52b52c39",
|
||||
// uid: 500144,
|
||||
// uin: 4238049,
|
||||
// });
|
||||
|
||||
let permissions = ref([]);
|
||||
// let permissions = ref([]);
|
||||
|
||||
const getUserInfoWin = () => {
|
||||
const checkUser = () => {
|
||||
const user = window.userInfoWin;
|
||||
if (!user) return;
|
||||
document.removeEventListener("getUser", checkUser);
|
||||
realname.value = user.realname;
|
||||
userInfoWin.value = user;
|
||||
if (user?.uin > 0 || user?.uid > 0) isLogin.value = true;
|
||||
};
|
||||
document.addEventListener("getUser", checkUser);
|
||||
};
|
||||
// const getUserInfoWin = () => {
|
||||
// const checkUser = () => {
|
||||
// const user = window.userInfoWin;
|
||||
// if (!user) return;
|
||||
// document.removeEventListener("getUser", checkUser);
|
||||
// realname.value = user.realname;
|
||||
// userInfoWin.value = user;
|
||||
// if (user?.uin > 0 || user?.uid > 0) isLogin.value = true;
|
||||
// };
|
||||
// document.addEventListener("getUser", checkUser);
|
||||
// };
|
||||
|
||||
const openAttest = () => {
|
||||
const handleAttestClose = () => {
|
||||
document.removeEventListener("closeAttest", handleAttestClose);
|
||||
realname.value = window.userInfoWin?.realname || 0;
|
||||
};
|
||||
// 启动认证流程时添加监听
|
||||
document.addEventListener("closeAttest", handleAttestClose);
|
||||
loadAttest(2);
|
||||
};
|
||||
// const openAttest = () => {
|
||||
// const handleAttestClose = () => {
|
||||
// document.removeEventListener("closeAttest", handleAttestClose);
|
||||
// realname.value = window.userInfoWin?.realname || 0;
|
||||
// };
|
||||
// // 启动认证流程时添加监听
|
||||
// document.addEventListener("closeAttest", handleAttestClose);
|
||||
// loadAttest(2);
|
||||
// };
|
||||
|
||||
// 跳转登录
|
||||
const goLogin = () => {
|
||||
if (typeof window === "undefined") return;
|
||||
if (window["userInfoWin"] && Object.keys(window["userInfoWin"]).length !== 0) {
|
||||
if (window["userInfoWin"]["uid"]) isLogin.value = true;
|
||||
else ajax_login();
|
||||
} else ajax_login();
|
||||
};
|
||||
// // 跳转登录
|
||||
// const goLogin = () => {
|
||||
// if (typeof window === "undefined") return;
|
||||
// if (window["userInfoWin"] && Object.keys(window["userInfoWin"]).length !== 0) {
|
||||
// if (window["userInfoWin"]["uid"]) isLogin.value = true;
|
||||
// else ajax_login();
|
||||
// } else ajax_login();
|
||||
// };
|
||||
|
||||
provide("isLogin", isLogin);
|
||||
provide("userInfoWin", userInfoWin);
|
||||
provide("realname", realname);
|
||||
provide("openAttest", openAttest);
|
||||
provide("goLogin", goLogin);
|
||||
// provide("isLogin", isLogin);
|
||||
// provide("userInfoWin", userInfoWin);
|
||||
// provide("realname", realname);
|
||||
// provide("openAttest", openAttest);
|
||||
// provide("goLogin", goLogin);
|
||||
|
||||
return { item };
|
||||
},
|
||||
@@ -77,5 +78,5 @@ export const itemOffer = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="item-box item-offer"> <item-head :itemdata="item"></item-head> <div class="school flexacenter"> <img class="icon" :src="item.data.schoollogo" mode="heightFix"></image> <div class="text flex1 one-line-display">{{ item.data.schoolname }}</div> </div> <div class="major flexacenter" v-if="item.data.professional"> <div class="key">{{ item.data.project ? '专业' : '项目/专业' }}</div> <div class="value flex1 one-line-display">{{ item.data.professional }}</div> </div> <div class="major flexacenter" v-if="item.data.project"> <div class="key">项目</div> <div class="value flex1 one-line-display">{{ item.data.project }}</div> </div> <div class="info flexacenter"> {{ item.data.semester }} <div class="line"></div> {{ item.data.degree }} <div class="line"></div> <div class="results" :class="['r' + item.data.apply_results]">{{ item.data.apply_results_text }}</div> </div> <div class="message" v-if="item.content">{{ item.content }}</div> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
template: `<div class="item-box item-offer"> <item-head :itemdata="item"></item-head> <a class="school flexacenter" :href="item.url" target="_blank"> <img class="icon" v-if="item.data.schoollogo" :src="item.data.schoollogo" mode="heightFix"></image> <div class="text flex1 one-line-display">{{ item.data.schoolname }}</div> </a> <a class="major flexacenter" v-if="item.data.professional" :href="item.url" target="_blank"> <div class="key">{{ item.data.project ? '专业' : '项目/专业' }}</div> <div class="value flex1 one-line-display">{{ item.data.professional }}</div> </a> <a class="major flexacenter" v-if="item.data.project" :href="item.url" target="_blank"> <div class="key">项目</div> <div class="value flex1 one-line-display">{{ item.data.project }}</div> </a> <a class="info flexacenter" :href="item.url" target="_blank"> {{ item.data.semester }} <div class="line"></div> {{ item.data.degree }} <div class="line"></div> <div class="results" :class="['r' + item.data.apply_results]">{{ item.data.apply_results_text }}</div> </a> <a class="message" v-if="item.content" :href="item.url" target="_blank">{{ item.content }}</a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
});
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
<div class="item-box item-offer">
|
||||
<item-head :itemdata="item"></item-head>
|
||||
<div class="school flexacenter">
|
||||
<img class="icon" :src="item.data.schoollogo" mode="heightFix"></image>
|
||||
<a class="school flexacenter" :href="item.url" target="_blank">
|
||||
<img class="icon" v-if="item.data.schoollogo" :src="item.data.schoollogo" mode="heightFix"></image>
|
||||
<div class="text flex1 one-line-display">{{ item.data.schoolname }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="major flexacenter" v-if="item.data.professional">
|
||||
<a class="major flexacenter" v-if="item.data.professional" :href="item.url" target="_blank">
|
||||
<div class="key">{{ item.data.project ? '专业' : '项目/专业' }}</div>
|
||||
<div class="value flex1 one-line-display">{{ item.data.professional }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="major flexacenter" v-if="item.data.project">
|
||||
<a class="major flexacenter" v-if="item.data.project" :href="item.url" target="_blank">
|
||||
<div class="key">项目</div>
|
||||
<div class="value flex1 one-line-display">{{ item.data.project }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="info flexacenter">
|
||||
<a class="info flexacenter" :href="item.url" target="_blank">
|
||||
{{ item.data.semester }}
|
||||
<div class="line"></div>
|
||||
{{ item.data.degree }}
|
||||
<div class="line"></div>
|
||||
<div class="results" :class="['r' + item.data.apply_results]">{{ item.data.apply_results_text }}</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="message" v-if="item.content">{{ item.content }}</div>
|
||||
<a class="message" v-if="item.content" :href="item.url" target="_blank">{{ item.content }}</a>
|
||||
<item-bottom :itemdata="item"></item-bottom>
|
||||
</div>
|
||||
@@ -16,6 +16,7 @@ export const itemSummary = defineComponent({
|
||||
|
||||
setup(props) {
|
||||
let item = ref({ ...props.itemdata });
|
||||
item.value['url'] = '/details/' + item.value.uniqid;
|
||||
|
||||
return { item };
|
||||
},
|
||||
@@ -25,5 +26,5 @@ export const itemSummary = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="item-box item-summary"> <item-head :itemdata="item"></item-head> <div class="title" v-if="item.title">{{ item.title }}</div> <div class="message one-line-display" v-if="item.content">{{ item.content }}</div> <div class="total flexacenter"> <div>共</div> <div class="num">{{ item.data.offercount }}</div> <div>个Offer</div> </div> <div class="list flexacenter" scroll-x> <div class="item flexflex" v-for="(it,i) in item.data.offerlist" :key="i"> <div class="item-content flexflex"> <div class="school flexacenter"> <img class="icon" :src="it.schoollogo" mode="heightFix"></image> <div class="name one-line-display flex1">{{ it.schoolname }}</div> </div> <div class="major one-line-display" v-if="it.professional">{{ it.professional }}</div> <div class="info flexacenter"> {{ it.semester || '25Fall' }} <div class="line"></div> {{ it.degree || 'MSc' }} <div class="line"></div> <div class="results" :class="['r' + it.apply_results]">{{ it.apply_results_text || 'Offer' }}</div> </div> </div> </div> <div v-if="item.data.offercount > 3" class="item more flexcenter"> <div class="item-content flexcenter"> <div class="">查看更多</div> <img class="icon" src="/img/arrows-circle-dark-blue.svg" mode="heightFix"></image> </div> </div> </div> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
template: `<div class="item-box item-summary"> <item-head :itemdata="item"></item-head> <a class="title" v-if="item.title" :href="item.url" target="_blank">{{ item.title }}</a> <a class="message one-line-display" :href="item.url" target="_blank" v-if="item.content">{{ item.content }}</a> <a class="total flexacenter" :href="item.url" target="_blank"> <div>共</div> <div class="num">{{ item.data.offercount }}</div> <div>个Offer</div> </a> <a class="list flexacenter" :href="item.url" target="_blank"> <div class="item flexflex" v-for="(it,i) in item.data.offerlist" :key="i"> <div class="item-content flexflex"> <div class="school flexacenter"> <img class="icon" v-if="it.schoollogo" :src="it.schoollogo" mode="heightFix"></image> <div class="name one-line-display flex1">{{ it.schoolname }}</div> </div> <div class="major one-line-display" v-if="it.professional">{{ it.professional }}</div> <div class="info flexacenter"> {{ it.semester || '25Fall' }} <div class="line"></div> {{ it.degree || 'MSc' }} <div class="line"></div> <div class="results" :class="['r' + it.apply_results]">{{ it.apply_results_text || 'Offer' }}</div> </div> </div> </div> <div v-if="item.data.offercount > 3" class="item more flexcenter"> <div class="item-content flexcenter"> <div class="">查看更多</div> <img class="icon" src="/img/arrows-circle-dark-blue.svg" mode="heightFix"></image> </div> </div> </a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
});
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
<div class="item-box item-summary">
|
||||
<item-head :itemdata="item"></item-head>
|
||||
<div class="title" v-if="item.title">{{ item.title }}</div>
|
||||
<div class="message one-line-display" v-if="item.content">{{ item.content }}</div>
|
||||
<div class="total flexacenter">
|
||||
<a class="title" v-if="item.title" :href="item.url" target="_blank">{{ item.title }}</a>
|
||||
<a class="message one-line-display" :href="item.url" target="_blank" v-if="item.content">{{ item.content }}</a>
|
||||
<a class="total flexacenter" :href="item.url" target="_blank">
|
||||
<div>共</div>
|
||||
<div class="num">{{ item.data.offercount }}</div>
|
||||
<div>个Offer</div>
|
||||
</div>
|
||||
<div class="list flexacenter" scroll-x>
|
||||
</a>
|
||||
<a class="list flexacenter" :href="item.url" target="_blank">
|
||||
<div class="item flexflex" v-for="(it,i) in item.data.offerlist" :key="i">
|
||||
<div class="item-content flexflex">
|
||||
<div class="school flexacenter">
|
||||
<img class="icon" :src="it.schoollogo" mode="heightFix"></image>
|
||||
<img class="icon" v-if="it.schoollogo" :src="it.schoollogo" mode="heightFix"></image>
|
||||
<div class="name one-line-display flex1">{{ it.schoolname }}</div>
|
||||
</div>
|
||||
<div class="major one-line-display" v-if="it.professional">{{ it.professional }}</div>
|
||||
@@ -31,6 +31,6 @@
|
||||
<img class="icon" src="/img/arrows-circle-dark-blue.svg" mode="heightFix"></image>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<item-bottom :itemdata="item"></item-bottom>
|
||||
</div>
|
||||
@@ -61,6 +61,7 @@ export const itemTenement = defineComponent({
|
||||
let item = ref({ ...props.itemdata });
|
||||
// console.log("item", item.value);
|
||||
item.value = handleHousing(item.value);
|
||||
item.value['url'] = '/details/' + item.value.uniqid;
|
||||
|
||||
console.log("item.value", item.value);
|
||||
|
||||
@@ -72,5 +73,5 @@ export const itemTenement = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="item-box item-tenement"> <item-head :itemdata="item"></item-head> <div class="title">三房找一位室友合租,家具设备齐全</div> <div class="site-box flexacenter"> <template v-if="item.intermediary == 6"> <div class="site-item flexacenter" v-for="(item, index) in item.location" :key="index"> <img class="site-icon" src="https://app.gter.net/image/miniApp/offer/room.png"> {{ item }} </div> </template> <div v-else class="site-item flexacenter"> <img class="site-icon" src="https://app.gter.net/image/miniApp/offer/orientation.png"> {{ item.location || '九龙 > 尖沙咀/佐敦' }} </div> </div> <div class="price-section flexacenter"> <div class="unit">HK$</div> <div class="price">{{ item.rent }}</div> <span class="text">/月</span> <div class="rentalduration">[ 租期{{ item.rentalduration }} ]</div> </div> <div class="picture flexacenter" v-if="item.images?.length != 0"> <img class="picture-item" v-for="(item, index) in item.images" :key="index" :src="item" alt=""> </div> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
template: `<div class="item-box item-tenement"> <item-head :itemdata="item"></item-head> <a class="title" :href="item.url" target="_blank">{{ item.title }}</a> <a class="site-box flexacenter" :href="item.url" target="_blank"> <template v-if="item.intermediary == 6"> <div class="site-item flexacenter" v-for="(item, index) in item.location" :key="index"> <img class="site-icon" src="/img/orientation.png"> {{ item }} </div> </template> <div v-else class="site-item flexacenter"> <img class="site-icon" src="/img/orientation.png"> {{ item.location || '' }} </div> </a> <a class="price-section flexacenter" :href="item.url" target="_blank"> <div class="unit">HK$</div> <div class="price">{{ item.rent }}</div> <span class="text">/月</span> <div class="rentalduration">[ 租期{{ item.rentalduration }} ]</div> </a> <a class="picture flexacenter" :href="item.url" target="_blank" v-if="item.images?.length != 0"> <img class="picture-item" v-for="(item, index) in item.images" :key="index" :src="item" alt=""> </a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
});
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<div class="item-box item-tenement">
|
||||
<item-head :itemdata="item"></item-head>
|
||||
<div class="title">三房找一位室友合租,家具设备齐全</div>
|
||||
<a class="title" :href="item.url" target="_blank">{{ item.title }}</a>
|
||||
|
||||
<div class="site-box flexacenter">
|
||||
<a class="site-box flexacenter" :href="item.url" target="_blank">
|
||||
<template v-if="item.intermediary == 6">
|
||||
<div class="site-item flexacenter" v-for="(item, index) in item.location" :key="index">
|
||||
<img class="site-icon" src="https://app.gter.net/image/miniApp/offer/room.png">
|
||||
<img class="site-icon" src="/img/orientation.png">
|
||||
{{ item }}
|
||||
</div>
|
||||
</template>
|
||||
<div v-else class="site-item flexacenter">
|
||||
<img class="site-icon" src="https://app.gter.net/image/miniApp/offer/orientation.png">
|
||||
{{ item.location || '九龙 > 尖沙咀/佐敦' }}
|
||||
<img class="site-icon" src="/img/orientation.png">
|
||||
{{ item.location || '' }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="price-section flexacenter">
|
||||
<a class="price-section flexacenter" :href="item.url" target="_blank">
|
||||
<div class="unit">HK$</div>
|
||||
<div class="price">{{ item.rent }}</div>
|
||||
<span class="text">/月</span>
|
||||
<div class="rentalduration">[ 租期{{ item.rentalduration }} ]</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="picture flexacenter" v-if="item.images?.length != 0">
|
||||
<a class="picture flexacenter" :href="item.url" target="_blank" v-if="item.images?.length != 0">
|
||||
<img class="picture-item" v-for="(item, index) in item.images" :key="index" :src="item" alt="">
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<item-bottom :itemdata="item"></item-bottom>
|
||||
</div>
|
||||
@@ -16,16 +16,7 @@ export const itemVote = defineComponent({
|
||||
|
||||
setup(props) {
|
||||
let item = ref({ ...props.itemdata });
|
||||
// item.value.title = "【投41票】" + item.value.title;
|
||||
// res["timestamp"] = util.strtimeago(res.release_at, 4);
|
||||
// const data = res.data;
|
||||
// const option = data.option || [];
|
||||
// res["isvote"] = option.some((item) => item.selected == 1);
|
||||
// const time = util.handleDeadline(data.deadline);
|
||||
// res["time"] = time;
|
||||
// this.setData({
|
||||
// item: res,
|
||||
// });
|
||||
item.value['url'] = 'https://vote.gter.net/details/' + item.value.uniqid;
|
||||
return { item };
|
||||
},
|
||||
|
||||
@@ -34,5 +25,5 @@ export const itemVote = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="item-box item-vote"> <item-head :itemdata="item"></item-head> <div class="title">{{ item.title }}</div> <div class="message one-line-display" v-if="item.content">{{ item.content }}</div> <div class="info flexacenter"> <template v-if="item.time"> <div class="status">进行中</div> <div class="line"></div> <div class="num">{{ item?.time.num }}</div>{{ item.time.unit }}后结束 </template> <div v-else class="status end">已结束</div> <div class="line"></div> <div class="num">{{ item?.data?.votes }}</div>人参与 </div> <div class="list" :class="{ 'voted': !item.time || item.isvote }"> <div class="list-item flexcenter " v-for="(item, index) in item?.data?.option" :key="index"> <div class="list-top flexacenter"> <img v-if="item.selected" class="list-tick" src="/img/vote-tick.svg"> <div v-else class="list-serial flexcenter">{{ index + 1 }}</div> <div class="list-text one-line-display flex1">{{ item.value }}</div> </div> <div class="list-bottom flexacenter"> <div class="list-length" :style="{ width: item.percentage + '%' }"></div>{{ item.count }} </div> </div> </div> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
template: `<div class="item-box item-vote"> <item-head :itemdata="item"></item-head> <a class="title" :href="item.url" target="_blank">{{ item.title }}</a> <a class="message one-line-display" v-if="item.content">{{ item.content }}</a> <a class="info flexacenter" target="_blank" :href="item.url"> <template v-if="item.time"> <div class="status">进行中</div> <div class="line"></div> <div class="num">{{ item?.time.num }}</div>{{ item.time.unit }}后结束 </template> <div v-else class="status end">已结束</div> <div class="line"></div> <div class="num">{{ item?.data?.votes }}</div>人参与 </a> <a class="list" :class="{ 'voted': !item.time || item.isvote }" target="_blank" :href="item.url"> <div class="list-item flexcenter " v-for="(item, index) in item?.data?.option" :key="index"> <div class="list-top flexacenter"> <img v-if="item.selected" class="list-tick" src="/img/vote-tick.svg"> <div v-else class="list-serial flexcenter">{{ index + 1 }}</div> <div class="list-text one-line-display flex1">{{ item.value }}</div> </div> <div class="list-bottom flexacenter"> <div class="list-length" :style="{ width: item.percentage + '%' }"></div>{{ item.count }} </div> </div> </a> <item-bottom :itemdata="item"></item-bottom></div>`,
|
||||
});
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<div class="item-box item-vote">
|
||||
<item-head :itemdata="item"></item-head>
|
||||
<div class="title">{{ item.title }}</div>
|
||||
<div class="message one-line-display" v-if="item.content">{{ item.content }}</div>
|
||||
<div class="info flexacenter">
|
||||
<a class="title" :href="item.url" target="_blank">{{ item.title }}</a>
|
||||
<a class="message one-line-display" v-if="item.content">{{ item.content }}</a>
|
||||
<a class="info flexacenter" target="_blank" :href="item.url">
|
||||
<template v-if="item.time">
|
||||
<div class="status">进行中</div>
|
||||
<div class="line"></div>
|
||||
@@ -11,9 +11,9 @@
|
||||
<div v-else class="status end">已结束</div>
|
||||
<div class="line"></div>
|
||||
<div class="num">{{ item?.data?.votes }}</div>人参与
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="list" :class="{ 'voted': !item.time || item.isvote }">
|
||||
<a class="list" :class="{ 'voted': !item.time || item.isvote }" target="_blank" :href="item.url">
|
||||
<div class="list-item flexcenter " v-for="(item, index) in item?.data?.option" :key="index">
|
||||
<div class="list-top flexacenter">
|
||||
<img v-if="item.selected" class="list-tick" src="/img/vote-tick.svg">
|
||||
@@ -24,6 +24,6 @@
|
||||
<div class="list-length" :style="{ width: item.percentage + '%' }"></div>{{ item.count }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
<item-bottom :itemdata="item"></item-bottom>
|
||||
</div>
|
||||
@@ -118,5 +118,5 @@ export const latestList = defineComponent({
|
||||
itemHead,
|
||||
},
|
||||
|
||||
template: `<div class="posts-box box-newest " :class="['boxtype-' + boxtype]"> <div v-if="boxtype == 'newest'" class="box-newest-head flexacenter"> <img class="icon" src="./img/newest-icon.png" alt="" /> 最新 </div> <div v-else-if="boxtype == 'essence'" class="box-newest-head flexacenter"> <img class="icon" src="./img/essence.png" alt="" /> 精华阅读 </div> <div v-else class="slideshow-box"> <div class="tab-list flexacenter"> <div class="tab-item newest" :class="{'pitch': postsTab == 'newest'}" @click="tabPostsItem('newest')">最新</div> <div class="tab-item essence" :class="{'pitch': postsTab == 'essence'}" @click="tabPostsItem('essence')">精华</div> </div> </div> <div class="slideshow-content flexflex"> <!-- newest 最新 --> <div class="newest-side-box side-box"> <img class="bounding" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/bounding-circle-green.svg?v=5.2.91_202030101" alt="" /> <div class="box"> <a v-for="(item, index) in latestList" :key="index" class="item flexacenter vuehide" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank"> <div class="dot dot-green"></div> <div class="text one-line-display">{{ item.title }}</div> </a> </div> </div> <!-- essence 精选 --> <div class="essence-side-box side-box"> <img class="bounding" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/bounding-circle-blue.svg?v=5.2.91_202030101" alt="" /> <div class="box"> <a v-for="(item, index) in topList" :key="index" class="item flexacenter vuehide" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank"> <div class="dot"></div> <div class="text one-line-display">{{ item.title }}</div> </a> </div> </div> </div></div>`,
|
||||
template: `<div class="posts-box box-newest " :class="['boxtype-' + boxtype]"> <div v-if="boxtype == 'newest'" class="box-newest-head flexacenter"> <img class="icon" src="/img/newest-icon.png" alt="" /> 最新 </div> <div v-else-if="boxtype == 'essence'" class="box-newest-head flexacenter"> <img class="icon" src="/img/essence.png" alt="" /> 精华阅读 </div> <div v-else class="slideshow-box"> <div class="tab-list flexacenter"> <div class="tab-item newest" :class="{'pitch': postsTab == 'newest'}" @click="tabPostsItem('newest')">最新</div> <div class="tab-item essence" :class="{'pitch': postsTab == 'essence'}" @click="tabPostsItem('essence')">精华</div> </div> </div> <div class="slideshow-content flexflex"> <!-- newest 最新 --> <div class="newest-side-box side-box"> <img class="bounding" src="/img/bounding-circle-green.svg" alt="" /> <div class="box"> <a v-for="(item, index) in latestList" :key="index" class="item flexacenter vuehide" :href="'/details/' + item.uniqid" target="_blank"> <div class="dot dot-green"></div> <div class="text one-line-display">{{ item.title }}</div> </a> </div> </div> <!-- essence 精选 --> <div class="essence-side-box side-box"> <img class="bounding" src="/img/bounding-circle-blue.svg" alt="" /> <div class="box"> <a v-for="(item, index) in topList" :key="index" class="item flexacenter vuehide" :href="'/details/' + item.uniqid" target="_blank"> <div class="dot"></div> <div class="text one-line-display">{{ item.title }}</div> </a> </div> </div> </div></div>`,
|
||||
});
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<div class="posts-box box-newest " :class="['boxtype-' + boxtype]">
|
||||
<div v-if="boxtype == 'newest'" class="box-newest-head flexacenter">
|
||||
<img class="icon" src="./img/newest-icon.png" alt="" />
|
||||
<img class="icon" src="/img/newest-icon.png" alt="" />
|
||||
最新
|
||||
</div>
|
||||
<div v-else-if="boxtype == 'essence'" class="box-newest-head flexacenter">
|
||||
<img class="icon" src="./img/essence.png" alt="" />
|
||||
<img class="icon" src="/img/essence.png" alt="" />
|
||||
精华阅读
|
||||
</div>
|
||||
<div v-else class="slideshow-box">
|
||||
@@ -16,9 +16,9 @@
|
||||
<div class="slideshow-content flexflex">
|
||||
<!-- newest 最新 -->
|
||||
<div class="newest-side-box side-box">
|
||||
<img class="bounding" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/bounding-circle-green.svg?v=5.2.91_202030101" alt="" />
|
||||
<img class="bounding" src="/img/bounding-circle-green.svg" alt="" />
|
||||
<div class="box">
|
||||
<a v-for="(item, index) in latestList" :key="index" class="item flexacenter vuehide" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">
|
||||
<a v-for="(item, index) in latestList" :key="index" class="item flexacenter vuehide" :href="'/details/' + item.uniqid" target="_blank">
|
||||
<div class="dot dot-green"></div>
|
||||
<div class="text one-line-display">{{ item.title }}</div>
|
||||
</a>
|
||||
@@ -27,9 +27,9 @@
|
||||
|
||||
<!-- essence 精选 -->
|
||||
<div class="essence-side-box side-box">
|
||||
<img class="bounding" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/bounding-circle-blue.svg?v=5.2.91_202030101" alt="" />
|
||||
<img class="bounding" src="/img/bounding-circle-blue.svg" alt="" />
|
||||
<div class="box">
|
||||
<a v-for="(item, index) in topList" :key="index" class="item flexacenter vuehide" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid" target="_blank">
|
||||
<a v-for="(item, index) in topList" :key="index" class="item flexacenter vuehide" :href="'/details/' + item.uniqid" target="_blank">
|
||||
<div class="dot"></div>
|
||||
<div class="text one-line-display">{{ item.title }}</div>
|
||||
</a>
|
||||
|
||||
@@ -36,5 +36,5 @@ export const like = defineComponent({
|
||||
return { imageUrl };
|
||||
},
|
||||
|
||||
template: `<img class="like" :src="imageUrl" alt="" style="position: fixed;top: 50%; left: 50%; transform: translate(-50%, -50%); width: 120px; height: 120px;" />`,
|
||||
template: `<img class="like" :src="imageUrl" alt="" style="position: fixed;top: 50%; left: 50%; transform: translate(-50%, -50%); width: 120px; height: 120px;z-index: 9999;" />`,
|
||||
});
|
||||
|
||||
@@ -78,5 +78,5 @@ export const slideshowBox = defineComponent({
|
||||
return { tabItem, tabPitch, tabPitch, latestList };
|
||||
},
|
||||
|
||||
template: `<div class="box-box" :class="['box-' + tabPitch]"> <div class="slideshow-box"> <div class="tab-list flexacenter"> <div class="tab-item thread" :class="{'pitch': tabPitch == 'thread'}" @click="tabItem('thread')">帖子</div> <div class="tab-item offer" :class="{'pitch': tabPitch == 'offer'}" @click="tabItem('offer')">Offer</div> <div class="tab-item vote" :class="{'pitch': tabPitch == 'vote'}" @click="tabItem('vote')">投票</div> <div class="tab-item interviewexperience" :class="{'pitch': tabPitch == 'interviewexperience'}" @click="tabItem('interviewexperience')">面经</div> </div> </div> <div class="slideshow-content flexflex"> <!-- 问答 --> <div class="thread-side-box side-box"> <div class="box"> <a v-for="item in latestList.thread" :key="item.uniqid" class="item" target="_blank" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid"> <div class="question flexacenter"> <div class="text flex1 ellipsis">{{ item.title }}</div> </div> <div class="answer flexacenter"> <div class="text flex1"> <div class="texttext">{{ item.content }}</div> </div> </div> </a> <a class="add-btn flexcenter" href="https://ask.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg"> </a> </div> </div> <!-- offer --> <div class="offer-side-box side-box"> <div class="box"> <a v-for="item in latestList.offer" :key="item.uniqid" class="item flexflex" :href="'https://offer.gter.net/details/' + item.uniqid" target="_blank"> <img class="school-img" :src="item.data.schoollogo" /> <div class="school-detail flex1 flexflex"> <div class="school-name one-line-display">{{ item.data.schoolname }}</div> <div class="school-brief one-line-display">{{ item.data.professional }}</div> <div class="school-offer flexacenter"> <span>{{ item.data.degree }}</span> <span class="long-string">|</span> <span>{{ item.data.semester }}</span> <span class="long-string">|</span> <span>{{ item.data.apply_results_text }}</span> </div> </div> </a> <a class="add-btn flexcenter" href="https://offer.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg"> </a> </div> </div> <!-- 投票 --> <div class="vote-side-box side-box"> <div class="box"> <a v-for="item in latestList.vote" :key="item.uniqid" class="item flexflex vuehide" target="_blank" :href="'https://vote.gter.net/details/' + item.uniqid"> <div class="name one-line-display">{{ item.title }}</div> <div class="brief">{{ item.content }}</div> </a> <a class="add-btn flexcenter" href="https://vote.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg"> </a> </div> </div> <!-- mj --> <div class="interviewexperience-side-box side-box"> <div class="box"> <a v-for="item in latestList.interviewexperience" :key="item.thread_id" class="item flexflex" :href="'https://interviewexperience.gter.net/details/' + item.uniqid" target="_blank"> <div class="school one-line-display">{{ item.data.schoolname }}</div> <div class="major one-line-display"></div> <div class="info"> <img class="icon" :src="item.user.avatar" /> <span class="text">{{ item.title || item.content }} </span> </div> </a> <a class="add-btn flexcenter" href="https://interviewexperience.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg"> </a> </div> </div> </div></div>`,
|
||||
template: `<div class="box-box" :class="['box-' + tabPitch]"> <div class="slideshow-box"> <div class="tab-list flexacenter"> <div class="tab-item thread" :class="{'pitch': tabPitch == 'thread'}" @click="tabItem('thread')">帖子</div> <div class="tab-item offer" :class="{'pitch': tabPitch == 'offer'}" @click="tabItem('offer')">Offer</div> <div class="tab-item vote" :class="{'pitch': tabPitch == 'vote'}" @click="tabItem('vote')">投票</div> <div class="tab-item interviewexperience" :class="{'pitch': tabPitch == 'interviewexperience'}" @click="tabItem('interviewexperience')">面经</div> </div> </div> <div class="slideshow-content flexflex"> <!-- 问答 --> <div class="thread-side-box side-box"> <div class="box"> <a v-for="item in latestList.thread" :key="item.uniqid" class="item" target="_blank" :href="'/details/' + item.uniqid"> <div class="question flexacenter"> <div class="text flex1 ellipsis">{{ item.title }}</div> </div> <div class="answer flexacenter"> <div class="text flex1"> <div class="texttext">{{ item.content }}</div> </div> </div> </a> <a class="add-btn flexcenter" href="https://ask.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg"> </a> </div> </div> <!-- offer --> <div class="offer-side-box side-box"> <div class="box"> <a v-for="item in latestList.offer" :key="item.uniqid" class="item flexflex" :href="'/details/' + item.uniqid" target="_blank"> <img class="school-img" :src="item.data.schoollogo" /> <div class="school-detail flex1 flexflex"> <div class="school-name one-line-display">{{ item.data.schoolname }}</div> <div class="school-brief one-line-display">{{ item.data.professional }}</div> <div class="school-offer flexacenter"> <span>{{ item.data.degree }}</span> <span class="long-string">|</span> <span>{{ item.data.semester }}</span> <span class="long-string">|</span> <span>{{ item.data.apply_results_text }}</span> </div> </div> </a> <a class="add-btn flexcenter" href="https://offer.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg"> </a> </div> </div> <!-- 投票 --> <div class="vote-side-box side-box"> <div class="box"> <a v-for="item in latestList.vote" :key="item.uniqid" class="item flexflex vuehide" target="_blank" :href="'/details/' + item.uniqid"> <div class="name one-line-display">{{ item.title }}</div> <div class="brief">{{ item.content }}</div> </a> <a class="add-btn flexcenter" href="https://vote.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg"> </a> </div> </div> <!-- mj --> <div class="interviewexperience-side-box side-box"> <div class="box"> <a v-for="item in latestList.interviewexperience" :key="item.thread_id" class="item flexflex" :href="'/details/' + item.uniqid" target="_blank"> <div class="school one-line-display">{{ item.data.schoolname }}</div> <div class="major one-line-display"></div> <div class="info"> <img class="icon" :src="item.user.avatar" /> <span class="text">{{ item.title || item.content }} </span> </div> </a> <a class="add-btn flexcenter" href="https://interviewexperience.gter.net" target="_blank"> <div>more</div> <img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg"> </a> </div> </div> </div></div>`,
|
||||
});
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<!-- 问答 -->
|
||||
<div class="thread-side-box side-box">
|
||||
<div class="box">
|
||||
<a v-for="item in latestList.thread" :key="item.uniqid" class="item" target="_blank" :href="'http://14.22.79.19:9551/?tpl=forum/details&uniqid=' + item.uniqid">
|
||||
<a v-for="item in latestList.thread" :key="item.uniqid" class="item" target="_blank" :href="'/details/' + item.uniqid">
|
||||
<div class="question flexacenter">
|
||||
<div class="text flex1 ellipsis">{{ item.title }}</div>
|
||||
</div>
|
||||
@@ -24,14 +24,14 @@
|
||||
|
||||
<a class="add-btn flexcenter" href="https://ask.gter.net" target="_blank">
|
||||
<div>more</div>
|
||||
<img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg">
|
||||
<img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- offer -->
|
||||
<div class="offer-side-box side-box">
|
||||
<div class="box">
|
||||
<a v-for="item in latestList.offer" :key="item.uniqid" class="item flexflex" :href="'https://offer.gter.net/details/' + item.uniqid" target="_blank">
|
||||
<a v-for="item in latestList.offer" :key="item.uniqid" class="item flexflex" :href="'/details/' + item.uniqid" target="_blank">
|
||||
<img class="school-img" :src="item.data.schoollogo" />
|
||||
<div class="school-detail flex1 flexflex">
|
||||
<div class="school-name one-line-display">{{ item.data.schoolname }}</div>
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
<a class="add-btn flexcenter" href="https://offer.gter.net" target="_blank">
|
||||
<div>more</div>
|
||||
<img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg">
|
||||
<img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -56,14 +56,14 @@
|
||||
<!-- 投票 -->
|
||||
<div class="vote-side-box side-box">
|
||||
<div class="box">
|
||||
<a v-for="item in latestList.vote" :key="item.uniqid" class="item flexflex vuehide" target="_blank" :href="'https://vote.gter.net/details/' + item.uniqid">
|
||||
<a v-for="item in latestList.vote" :key="item.uniqid" class="item flexflex vuehide" target="_blank" :href="'/details/' + item.uniqid">
|
||||
<div class="name one-line-display">{{ item.title }}</div>
|
||||
<div class="brief">{{ item.content }}</div>
|
||||
</a>
|
||||
|
||||
<a class="add-btn flexcenter" href="https://vote.gter.net" target="_blank">
|
||||
<div>more</div>
|
||||
<img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg">
|
||||
<img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@@ -71,7 +71,7 @@
|
||||
<!-- mj -->
|
||||
<div class="interviewexperience-side-box side-box">
|
||||
<div class="box">
|
||||
<a v-for="item in latestList.interviewexperience" :key="item.thread_id" class="item flexflex" :href="'https://interviewexperience.gter.net/details/' + item.uniqid" target="_blank">
|
||||
<a v-for="item in latestList.interviewexperience" :key="item.thread_id" class="item flexflex" :href="'/details/' + item.uniqid" target="_blank">
|
||||
<div class="school one-line-display">{{ item.data.schoolname }}</div>
|
||||
<div class="major one-line-display"></div>
|
||||
<div class="info">
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
<a class="add-btn flexcenter" href="https://interviewexperience.gter.net" target="_blank">
|
||||
<div>more</div>
|
||||
<img class="" style="margin-left: 8px;" src="./img/right-arrow-black.svg">
|
||||
<img class="" style="margin-left: 8px;" src="/img/right-arrow-black.svg">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
border-bottom: 1px dotted #d7d7d7;
|
||||
}
|
||||
#details .matter .matter-left .label {
|
||||
padding: 20px 30px 20px;
|
||||
padding: 20px 30px 10px;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#details .matter .matter-left .label .item {
|
||||
@@ -147,6 +147,7 @@
|
||||
color: #000000;
|
||||
line-height: 36px;
|
||||
padding: 0 30px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
#details .matter .matter-left .html {
|
||||
@@ -161,6 +162,13 @@
|
||||
text-decoration: underline;
|
||||
color: #04b0d5;
|
||||
}
|
||||
#details .matter .matter-left .html .blue {
|
||||
font-size: 15px;
|
||||
line-height: 26px;
|
||||
color: #026277;
|
||||
margin: 0 4px;
|
||||
text-decoration: none;
|
||||
}
|
||||
#details .matter .matter-left .last-time {
|
||||
color: #aaaaaa;
|
||||
font-size: 13px;
|
||||
@@ -231,7 +239,7 @@
|
||||
z-index: 1;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 48px;
|
||||
bottom: 0;
|
||||
left: 100%;
|
||||
width: 140px;
|
||||
height: 166px;
|
||||
@@ -353,11 +361,13 @@
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
margin-right: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box .author-content .author-name {
|
||||
font-size: 14px;
|
||||
color: #000000;
|
||||
margin-bottom: 11px;
|
||||
cursor: pointer;
|
||||
}
|
||||
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box .author-content .author-name .group {
|
||||
height: 14px;
|
||||
|
||||
@@ -133,7 +133,7 @@
|
||||
}
|
||||
|
||||
.label {
|
||||
padding: 20px 30px 20px;
|
||||
padding: 20px 30px 10px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.item {
|
||||
@@ -169,6 +169,7 @@
|
||||
color: #000000;
|
||||
line-height: 36px;
|
||||
padding: 0 30px;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
@@ -184,6 +185,14 @@
|
||||
text-decoration: underline;
|
||||
color: #04b0d5;
|
||||
}
|
||||
|
||||
.blue {
|
||||
font-size: 15px;
|
||||
line-height: 26px;
|
||||
color: #026277;
|
||||
margin: 0 4px;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.last-time {
|
||||
@@ -266,7 +275,7 @@
|
||||
z-index: 1;
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 48px;
|
||||
bottom: 0;
|
||||
left: 100%;
|
||||
width: 140px;
|
||||
height: 166px;
|
||||
@@ -407,11 +416,13 @@
|
||||
.author-box {
|
||||
padding: 16px 5px 30px 16px;
|
||||
width: 100%;
|
||||
|
||||
.avatar {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
margin-right: 22px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.author-content {
|
||||
@@ -419,6 +430,7 @@
|
||||
font-size: 14px;
|
||||
color: #000000;
|
||||
margin-bottom: 11px;
|
||||
cursor: pointer;
|
||||
|
||||
.group {
|
||||
height: 14px;
|
||||
|
||||
@@ -18,11 +18,28 @@
|
||||
padding-bottom: 38px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
#homepage-me .matter .card-user .avatar {
|
||||
#homepage-me .matter .card-user .avatar-box {
|
||||
position: relative;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
#homepage-me .matter .card-user .avatar-box .avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
#homepage-me .matter .card-user .avatar-box .pen-box {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
bottom: 3px;
|
||||
}
|
||||
#homepage-me .matter .card-user .avatar-box .pen-box .pen-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
#homepage-me .matter .card-user .name-area {
|
||||
margin-bottom: 40px;
|
||||
|
||||
@@ -16,11 +16,30 @@
|
||||
padding-top: 39px;
|
||||
padding-bottom: 38px;
|
||||
margin-right: 20px;
|
||||
.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 8px;
|
||||
.avatar-box {
|
||||
position: relative;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.pen-box {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
border-radius: 50%;
|
||||
background-color: #ffffff;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 3px;
|
||||
bottom: 3px;
|
||||
.pen-icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.name-area {
|
||||
|
||||
@@ -47,6 +47,9 @@
|
||||
}
|
||||
#homepage-other .matter .card-user .name-area {
|
||||
margin-bottom: 40px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
#homepage-other .matter .card-user .name-area .username {
|
||||
font-size: 15px;
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
padding-top: 39px;
|
||||
padding-bottom: 40px;
|
||||
margin-right: 20px;
|
||||
|
||||
.avatar {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
@@ -49,6 +50,9 @@
|
||||
|
||||
.name-area {
|
||||
margin-bottom: 40px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.username {
|
||||
font-size: 15px;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
width: 64px;
|
||||
height: 24px;
|
||||
border-radius: 20px 20px 20px 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#appIndex .header-content-box .header-content-left .topic-and-selectives .head-top .icon {
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
width: 64px;
|
||||
height: 24px;
|
||||
border-radius: 20px 20px 20px 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
.icon {
|
||||
width: 15px;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: unset;
|
||||
}
|
||||
body {
|
||||
background-color: #eef2f5;
|
||||
@@ -62,6 +63,9 @@ body {
|
||||
margin-bottom: 14px;
|
||||
position: relative;
|
||||
}
|
||||
.item-box .item-head .user-box {
|
||||
cursor: pointer;
|
||||
}
|
||||
.item-box .item-head .avatar {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
@@ -187,6 +191,7 @@ body {
|
||||
color: #555555;
|
||||
white-space: pre-wrap;
|
||||
margin-bottom: 15px;
|
||||
display: block;
|
||||
}
|
||||
.item-box.item-offer {
|
||||
font-size: 14px;
|
||||
@@ -238,6 +243,7 @@ body {
|
||||
.item-box.item-offer .message {
|
||||
color: #555555;
|
||||
margin-bottom: 15px;
|
||||
display: block;
|
||||
}
|
||||
.item-box.item-summary .title {
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
@@ -252,6 +258,7 @@ body {
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
margin-bottom: 20px;
|
||||
display: block;
|
||||
}
|
||||
.item-box.item-summary .total {
|
||||
font-size: 14px;
|
||||
@@ -336,6 +343,7 @@ body {
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
margin-bottom: 15px;
|
||||
display: block;
|
||||
}
|
||||
.item-box.item-vote .info {
|
||||
font-size: 14px;
|
||||
@@ -364,6 +372,7 @@ body {
|
||||
margin: 4px 20px 20px;
|
||||
overflow: hidden;
|
||||
max-height: 138px;
|
||||
display: block;
|
||||
}
|
||||
.item-box.item-vote .list.voted {
|
||||
max-height: 178px;
|
||||
@@ -457,6 +466,7 @@ body {
|
||||
margin-top: 13px;
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
display: block;
|
||||
}
|
||||
.item-box.item-tenement .title {
|
||||
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
|
||||
@@ -1282,7 +1292,7 @@ body {
|
||||
transition: all 0.3s;
|
||||
}
|
||||
.posts-box.box-essence .slideshow-content {
|
||||
margin-left: -263px;
|
||||
margin-left: -266px;
|
||||
}
|
||||
.box-newest .slideshow-box .tab-list .tab-item.pitch::before {
|
||||
background: linear-gradient(to right, #6ac83e, #6ad2cb);
|
||||
@@ -1355,6 +1365,7 @@ body {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.head-top {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.head-top .logo {
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: unset;
|
||||
}
|
||||
|
||||
body {
|
||||
@@ -72,6 +73,11 @@ body {
|
||||
.item-head {
|
||||
margin-bottom: 14px;
|
||||
position: relative;
|
||||
|
||||
.user-box {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
@@ -220,6 +226,7 @@ body {
|
||||
color: #555555;
|
||||
white-space: pre-wrap;
|
||||
margin-bottom: 15px;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,6 +285,7 @@ body {
|
||||
.message {
|
||||
color: #555555;
|
||||
margin-bottom: 15px;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -296,6 +304,7 @@ body {
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
margin-bottom: 20px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.total {
|
||||
@@ -401,6 +410,7 @@ body {
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
margin-bottom: 15px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.info {
|
||||
@@ -434,6 +444,7 @@ body {
|
||||
margin: 4px 20px 20px;
|
||||
overflow: hidden;
|
||||
max-height: 138px;
|
||||
display: block;
|
||||
|
||||
&.voted {
|
||||
max-height: 178px;
|
||||
@@ -545,6 +556,7 @@ body {
|
||||
margin-top: 13px;
|
||||
font-size: 14px;
|
||||
color: #555555;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1529,7 +1541,7 @@ body {
|
||||
|
||||
&.box-essence {
|
||||
.slideshow-content {
|
||||
margin-left: -263px;
|
||||
margin-left: -266px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1620,6 +1632,7 @@ body {
|
||||
}
|
||||
|
||||
.head-top {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
|
||||
.logo {
|
||||
|
||||
@@ -258,6 +258,24 @@
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .empty {
|
||||
width: 100%;
|
||||
height: 70vh;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #e9eef2;
|
||||
border-radius: 10px;
|
||||
flex-direction: column;
|
||||
margin-right: 12px;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .empty .empty-icon {
|
||||
width: 80px;
|
||||
height: 94px;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .content-box .empty .empty-text {
|
||||
font-size: 14px;
|
||||
color: #7f7f7f;
|
||||
margin-top: 10px;
|
||||
}
|
||||
#sectionIndex .matter .matter-content .details-box .adv {
|
||||
display: block;
|
||||
width: 291px;
|
||||
|
||||
@@ -285,6 +285,27 @@
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
}
|
||||
|
||||
.empty {
|
||||
width: 100%;
|
||||
height: 70vh;
|
||||
background-color: rgba(255, 255, 255, 1);
|
||||
border: 1px solid rgba(233, 238, 242, 1);
|
||||
border-radius: 10px;
|
||||
flex-direction: column;
|
||||
margin-right: 12px;
|
||||
|
||||
.empty-icon {
|
||||
width: 80px;
|
||||
height: 94px;
|
||||
}
|
||||
|
||||
.empty-text {
|
||||
font-size: 14px;
|
||||
color: #7f7f7f;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// .side-box {
|
||||
|
||||
12
img/bounding-circle-blue.svg
Normal file
12
img/bounding-circle-blue.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="42px" height="41px" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient gradientUnits="userSpaceOnUse" x1="-2.98427949019242E-13" y1="41" x2="41.9999999999997" y2="0" id="LinearGradient667">
|
||||
<stop id="Stop668" stop-color="#ffffff" offset="0" />
|
||||
<stop id="Stop669" stop-color="#1f91da" offset="1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="matrix(1 0 0 1 -1518 -4428 )">
|
||||
<path d="M 42 10 L 42 41 C 42 18.04 23.96 0 0.994839253868804 0 L 32 0 C 37.5999999999999 0 42 4.40000000000009 42 10 Z " fill-rule="nonzero" fill="url(#LinearGradient667)" stroke="none" transform="matrix(1 0 0 1 1518 4428 )" />
|
||||
</g>
|
||||
</svg>
|
||||
12
img/bounding-circle-green.svg
Normal file
12
img/bounding-circle-green.svg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="42px" height="41px" xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<linearGradient gradientUnits="userSpaceOnUse" x1="-2.98427949019242E-13" y1="41" x2="41.9999999999997" y2="0" id="LinearGradient691">
|
||||
<stop id="Stop692" stop-color="#ffffff" offset="0" />
|
||||
<stop id="Stop693" stop-color="#72db86" offset="1" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g transform="matrix(1 0 0 1 -1518 -3826 )">
|
||||
<path d="M 42 10 L 42 41 C 42 18.04 23.96 0 0.994839253868804 0 L 32 0 C 37.5999999999999 0 42 4.40000000000009 42 10 Z " fill-rule="nonzero" fill="url(#LinearGradient691)" stroke="none" transform="matrix(1 0 0 1 1518 3826 )" />
|
||||
</g>
|
||||
</svg>
|
||||
BIN
img/orientation.png
Normal file
BIN
img/orientation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
@@ -182,7 +182,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div class="box">
|
||||
<a class="item flexflex" v-cloak v-for="item in offer" :key="item" :href="'https://offer.gter.net/details/' + item['uniqid']" target="_blank">
|
||||
<a class="item flexflex" v-cloak v-for="item in offer" :key="item" :href="'/details/' + item['uniqid']" target="_blank">
|
||||
<img class="school-img" :src="item.data['schoollogo']" />
|
||||
<div class="school-detail flex1 flexflex">
|
||||
<div class="school-name one-line-display">{{ item.data['schoolname'] }}</div>
|
||||
|
||||
@@ -131,7 +131,6 @@ const appIndex = createApp({
|
||||
ajaxget(`/v2/api/forum/topicHandpicked?limit=16`).then((res) => {
|
||||
if (res.code != 200) return;
|
||||
let data = res["data"] || [];
|
||||
console.log("data", data);
|
||||
topicHandpickedList.value = data;
|
||||
});
|
||||
};
|
||||
@@ -150,12 +149,9 @@ const appIndex = createApp({
|
||||
}
|
||||
});
|
||||
|
||||
console.log("data", data);
|
||||
offer.value = data.offer;
|
||||
vote.value = data.vote;
|
||||
interviewexperience.value = data.interviewexperience;
|
||||
|
||||
console.log("interviewexperience", interviewexperience.value);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div class="box">
|
||||
<a class="item flexflex" v-cloak v-for="item in offer" :key="item" :href="'https://offer.gter.net/details/' + item['uniqid']" target="_blank">
|
||||
<a class="item flexflex" v-cloak v-for="item in offer" :key="item" :href="'/details/' + item['uniqid']" target="_blank">
|
||||
<img class="school-img" :src="item.data['schoollogo']" />
|
||||
<div class="school-detail flex1 flexflex">
|
||||
<div class="school-name one-line-display">{{ item.data['schoolname'] }}</div>
|
||||
|
||||
Reference in New Issue
Block a user