Compare commits

..

No commits in common. 'a51f925485d0b22ba59ecfe10337e88dfd00a06c' and '36268425542336d552845606c94d4f8c2e2d4570' have entirely different histories.

  1. 12
      public/index.html
  2. 2
      public/js/ckplayerX2/ckplayer.min.js
  3. 4
      src/assets/css/m.css
  4. 1
      src/components/AvatarDropDown.vue
  5. 319
      src/components/Footer.vue
  6. 67
      src/components/Header.vue
  7. 26
      src/main.js
  8. 197
      src/views/class/admin/schedule_admin_class.vue
  9. 4
      src/views/class/class_lesson.vue
  10. 5
      src/views/class/play.vue
  11. 63
      src/views/studypath/fineDataLink.vue
  12. 6
      src/views/studypath/jiandaoyun.vue
  13. 369
      src/views/video/guide/finebi.vue
  14. 352
      src/views/video/guide/finereport.vue
  15. 367
      src/views/video/guide/finereportGuide2023.vue
  16. 422
      src/views/video/guide/jiandaoyun.vue
  17. 13
      src/views/video/play.vue

12
public/index.html

@ -266,16 +266,6 @@
</ul> </ul>
<script> <script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?f4d7d83c565e698bd7cedfe9c6297055";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
</script>
<!-- <script>
var _hmt = _hmt || []; var _hmt = _hmt || [];
(function(c, l, a, r, i, t, y) { (function(c, l, a, r, i, t, y) {
c[a] = c[a] =
@ -289,6 +279,6 @@
y = l.getElementsByTagName(r)[0]; y = l.getElementsByTagName(r)[0];
y.parentNode.insertBefore(t, y); y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "h6euw7u8lp"); })(window, document, "clarity", "script", "h6euw7u8lp");
</script> --> </script>
</body> </body>
</html> </html>

2
public/js/ckplayerX2/ckplayer.min.js vendored

File diff suppressed because one or more lines are too long

4
src/assets/css/m.css

@ -53,11 +53,7 @@
.m-db-800 { .m-db-800 {
display: block !important; display: block !important;
} }
.msg-box {
width: 100% !important;
} }
}
:root { :root {
--van-red: #0082fc; --van-red: #0082fc;
} }

1
src/components/AvatarDropDown.vue

@ -59,6 +59,7 @@ export default {
const res = await getUserInfoShequ(state.uid); const res = await getUserInfoShequ(state.uid);
if (res.code === 200) { if (res.code === 200) {
state.user = res.data; state.user = res.data;
console.log(state.user);
} }
}; };
resGetUserInfoShequ(); resGetUserInfoShequ();

319
src/components/Footer.vue

@ -1,10 +1,5 @@
<template> <template>
<el-backtop class="feedback-backtop"> <el-backtop></el-backtop>
<svg viewBox="64 64 896 896" focusable="false" data-icon="up" width="14" height="14" fill="currentColor" aria-hidden="true">
<path d="M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"></path>
</svg>
</el-backtop>
<footer class="m-dn"> <footer class="m-dn">
<div class="footer"> <div class="footer">
<div class="deanfooter" id="deanfooter" style="margin-top:0"> <div class="deanfooter" id="deanfooter" style="margin-top:0">
@ -48,111 +43,47 @@
</div> </div>
<!-- 用户侧 --> <!-- 用户侧 -->
<div class="service_feddback_box m-dn"> <div class="dr-feedback m-dn">
<el-popover placement="left" trigger="hover" width="392px" popper-class="new-popper"> <div class="dr-feedback-item" @click="pageFeedbackHanlder(true)">
<div class="tel_txt_box dr-feedback-popover-wrapper"> <span class="anticon anticon-edit dr-feedback-item-icon">
<div class="dr-feedback-popover"> <svg viewBox="64 64 896 896" focusable="false" data-icon="edit" width="1em" height="1em" fill="currentColor" aria-hidden="true">
<div class="dr-feedback-popover-item-click dr-feedback-popover-item" onclick="window.open('https://service.fanruan.com/support')"> <path d="M257.7 752c2 0 4-.2 6-.5L431.9 722c2-.4 3.9-1.3 5.3-2.8l423.9-423.9a9.96 9.96 0 000-14.1L694.9 114.9c-1.9-1.9-4.4-2.9-7.1-2.9s-5.2 1-7.1 2.9L256.8 538.8c-1.5 1.5-2.4 3.3-2.8 5.3l-29.5 168.2a33.5 33.5 0 009.4 29.8c6.6 6.4 14.9 9.9 23.8 9.9zm67.4-174.4L687.8 215l73.3 73.3-362.7 362.6-88.9 15.7 15.6-89zM880 836H144c-17.7 0-32 14.3-32 32v36c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-36c0-17.7-14.3-32-32-32z"></path>
<div class="dr-feedback-popover-item-logo">
<img src="https://fanruanbbs.obs.cn-east-2.myhuaweicloud.com/ui/digit-fe/feedback/support.png" />
</div>
<div>
<div class="dr-feedback-popover-item-title-wrapper" style="gap: 8px;">
<div class="ant-space-item" style="">
<span class="title">在线支持</span>
</div>
<div class="ant-space-item">
<span role="img" aria-label="arrow-right" class="anticon anticon-arrow-right icon">
<svg viewBox="64 64 896 896" focusable="false" data-icon="arrow-right" width="12" height="12" fill="currentColor" aria-hidden="true">
<path d="M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 000-48.4z"></path>
</svg> </svg>
</span> </span>
<div>页面反馈</div>
</div> </div>
<el-popover placement="left" trigger="hover" width="240px">
<div style="padding: 10px;">
<div class="dr-feedback-contract-item">
<div class="dr-feedback-contract-item-title">帆软社区管理员</div>
<a href="https://bbs.fanruan.com/thread-135379-1-1.html" target="_blank" rel="noreferrer">社区管理员联系方式一览</a>
</div> </div>
<div class="grey-text">工作日9:00-12:0013:30-17:30在线</div> <div class="dr-feedback-contract-item">
<div class="dr-feedback-popover-item-info-wrapper"> <div class="dr-feedback-contract-item-title">售前咨询电话</div>
<div> <a href="tel:+400-811-8890" target="_blank" rel="noreferrer">400-811-8890 转1</a>
<div class="grey-text">或拨打热线电话</div>
<div>
<div class="ant-space css-ph9edi ant-space-horizontal ant-space-align-center" style="gap: 8px;">
<div class="ant-space-item" style="">
<span class="grey-text">大陆</span>
</div>
<div class="ant-space-item">
<div class="ant-space css-ph9edi ant-space-horizontal ant-space-align-center blue-text" style="gap: 8px;">
<div class="ant-space-item">400-811-8890 转2</div>
</div>
</div>
</div>
</div>
<div>
<div>
<span class="grey-text">海外</span>
<span class="blue-text">(+86) 0510-66758729</span>
</div>
</div> </div>
<div class="dr-feedback-contract-item">
<div class="dr-feedback-contract-item-title">在线技术支持电话</div>
<a href="tel:+400-811-8890" target="_blank" rel="noreferrer">400-811-8890 转2</a>
</div> </div>
<div class="dr-feedback-contract-item">
<div class="dr-feedback-contract-item-title">海外客户技术支持电话</div>
<a href="tel:+0510-66758729" target="_blank" rel="noreferrer">(+86) 0510-66758729</a>
</div> </div>
<div class="dr-feedback-contract-item">
<div class="dr-feedback-contract-item-title">总裁办24H投诉电话</div>
<a href="tel:+17312781526" target="_blank" rel="noreferrer">173 1278 1526</a>
</div> </div>
</div> </div>
<div class="dr-feedback-popover-item-click dr-feedback-popover-item" style="cursor: pointer;" @click="pageFeedbackHanlder(true)"> <template #reference>
<div class="dr-feedback-item"> <div class="dr-feedback-item">
<div class="dr-feedback-popover-item-logo"> <span role="img" aria-label="phone" class="anticon anticon-phone dr-feedback-item-icon">
<img alt="feedback" src="https://hwobs.fanruan.com/ui/digit-fe/feedback/feedback.png" /> <svg viewBox="64 64 896 896" focusable="false" data-icon="phone" width="1em" height="1em" fill="currentColor" aria-hidden="true">
</div> <path d="M877.1 238.7L770.6 132.3c-13-13-30.4-20.3-48.8-20.3s-35.8 7.2-48.8 20.3L558.3 246.8c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l89.6 89.7a405.46 405.46 0 01-86.4 127.3c-36.7 36.9-79.6 66-127.2 86.6l-89.6-89.7c-13-13-30.4-20.3-48.8-20.3a68.2 68.2 0 00-48.8 20.3L132.3 673c-13 13-20.3 30.5-20.3 48.9 0 18.5 7.2 35.8 20.3 48.9l106.4 106.4c22.2 22.2 52.8 34.9 84.2 34.9 6.5 0 12.8-.5 19.2-1.6 132.4-21.8 263.8-92.3 369.9-198.3C818 606 888.4 474.6 910.4 342.1c6.3-37.6-6.3-76.3-33.3-103.4zm-37.6 91.5c-19.5 117.9-82.9 235.5-178.4 331s-213 158.9-330.9 178.4c-14.8 2.5-30-2.5-40.8-13.2L184.9 721.9 295.7 611l119.8 120 .9.9 21.6-8a481.29 481.29 0 00285.7-285.8l8-21.6-120.8-120.7 110.8-110.9 104.5 104.5c10.8 10.8 15.8 26 13.3 40.8z"></path>
<div>
<div class="dr-feedback-popover-item-title-wrapper" style="gap: 8px;">
<span class="title">页面反馈</span>
<span class="anticon anticon-arrow-right icon">
<svg viewBox="64 64 896 896" focusable="false" data-icon="arrow-right" width="12" height="12" fill="currentColor" aria-hidden="true">
<path d="M869 487.8L491.2 159.9c-2.9-2.5-6.6-3.9-10.5-3.9h-88.5c-7.4 0-10.8 9.2-5.2 14l350.2 304H152c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h585.1L386.9 854c-5.6 4.9-2.2 14 5.2 14h91.5c1.9 0 3.8-.7 5.2-2L869 536.2a32.07 32.07 0 000-48.4z"></path>
</svg> </svg>
</span> </span>
</div> <div>联系我们</div>
<div class="grey-text">针对当前网页的建议问题反馈</div>
</div>
</div>
</div>
<div class="dr-feedback-popover-item">
<div class="dr-feedback-popover-item-logo">
<img src="https://hwobs.fanruan.com/ui/digit-fe/feedback/consult.png" />
</div>
<div>
<div class="ant-space css-ph9edi ant-space-horizontal ant-space-align-center dr-feedback-popover-item-title-wrapper" style="gap: 8px;">
<div class="ant-space-item">
<span class="title">售前咨询</span>
</div>
</div>
<div class="grey-text">采购需求/获取报价/预约演示</div>
<div class="dr-feedback-popover-item-info-wrapper">
<div class="grey-text">或拨打: <span class="blue-text">400-811-8890 转1</span></div>
</div>
</div>
<div>
<img alt="qr" src="https://fanruanbbs.obs.cn-east-2.myhuaweicloud.com/ui/digit-fe/feedback/qr.png" width="80" />
</div>
</div>
<div class="dr-feedback-popover-item" style="margin-bottom: 0">
<div class="dr-feedback-popover-item-logo">
<img src="https://hwobs.fanruan.com/ui/digit-fe/feedback/tel.png" />
</div>
<div>
<div class="ant-space css-ph9edi ant-space-horizontal ant-space-align-center dr-feedback-popover-item-title-wrapper" style="gap: 8px;">
<div class="ant-space-item">
<span class="title">总裁办24H电话</span>
</div>
</div>
<div class="blue-text">173 1278 1526</div>
</div>
</div>
</div>
</div>
<template #reference>
<div class="dr-feedback">
<div class="dr-feedback-inner">
<img class="dr-feedback-inner-icon" src="https://hwobs.fanruan.com/ui/digit-fe/feedback/customer.png" />
<div>获取帮助</div>
</div>
</div> </div>
</template> </template>
</el-popover> </el-popover>
@ -196,6 +127,8 @@ export default {
comLoginUrl: proxy.$root.com_login_url2 + route.path, comLoginUrl: proxy.$root.com_login_url2 + route.path,
}); });
getTicketToken();
onBeforeRouteUpdate((to) => { onBeforeRouteUpdate((to) => {
state.curPageUrl = proxy.$root.com_edu_url + to.fullPath; state.curPageUrl = proxy.$root.com_edu_url + to.fullPath;
state.comLoginUrl = proxy.$root.com_login_url2 + to.fullPath; state.comLoginUrl = proxy.$root.com_login_url2 + to.fullPath;
@ -239,7 +172,7 @@ export default {
state.showFeedback = true; state.showFeedback = true;
setTimeout(function() { setTimeout(function() {
const iframe = document.createElement("iframe"); const iframe = document.createElement("iframe");
iframe.src = `https://pe9qbh7c.shuzhiniao.com/web/#/ticket/a2555f84970f418a98960adb4029aed1/form?embedded=true&hiddenFields=${encodeURIComponent("类型,页面URL,反馈人UID,处理人回复")}&ticketToken=${state.ticketToken}`; iframe.src = `https://pe9qbh7c.shuzhiniao.com/web/#/ticket/a2555f84970f418a98960adb4029aed1/form?embedded=true&hiddenFields=${encodeURIComponent("页面URL,反馈人UID,处理人回复")}&ticketToken=${state.ticketToken}`;
iframe.style = "width: 100%; height: 100%; border:none;"; iframe.style = "width: 100%; height: 100%; border:none;";
iframe.id = "iframe_shuzhiniao"; iframe.id = "iframe_shuzhiniao";
let makediv = document.getElementById("feedbackIframe"); let makediv = document.getElementById("feedbackIframe");
@ -270,165 +203,83 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
.feedback-backtop { .dia-msg-til {
align-items: center; background-color: #fefbe6;
background-color: #fff !important; padding: 10px 20px;
border-radius: 8px !important; border: 1px solid #ffe58f;
bottom: 80px !important; margin-top: 6px;
box-shadow: 0 4px 12px 0 rgba(4, 43, 79, 0.12);
cursor: pointer;
display: flex !important;
height: 36px !important;
justify-content: center !important;
position: fixed;
right: 10px !important;
width: 36px !important;
background-image: none !important;
color: #333; color: #333;
} }
.new-popper { .foot-dialog-feedback {
border-radius: 8px !important; .el-dialog__body {
padding: 0 !important;
} }
.service_feddback_box {
position: fixed;
top: 50%;
transform: translateY(-50%);
right: 10px;
z-index: 5;
} }
/* 用户右侧 */
.dr-feedback { .dr-feedback {
background: linear-gradient(144deg, #00b8fe 16%, #0082fc 87%); position: fixed;
bottom: 150px;
transform: translate(-50%, -50%);
right: 12px;
background-color: #fff;
box-shadow: 0 4px 12px 0 rgb(4 43 79 / 12%);
width: 48px;
box-sizing: border-box;
font-size: 14px;
color: #617288;
display: flex;
flex-direction: column;
border-radius: 8px; border-radius: 8px;
box-shadow: 0 4px 12px 0 rgba(4, 43, 79, 0.12); overflow: hidden;
height: 84px; z-index: 999;
width: 36px;
line-height: 1.5714285714285714;
}
.dr-feedback, .dr-feedback-item {
.dr-feedback-inner { transition: all 0.3s;
align-items: center; padding: 16px 8px;
display: flex; display: flex;
flex-direction: column; align-items: center;
justify-content: center; justify-content: center;
position: relative; flex-direction: column;
z-index: 2;
}
.dr-feedback-inner {
color: #fff;
cursor: pointer; cursor: pointer;
font-size: 12px;
line-height: 14px;
text-align: center; text-align: center;
width: 80%;
&:not(:last-of-type) {
border-bottom: 1px solid #edf3f9;
} }
.dr-feedback-inner-icon {
&:hover {
color: #0082fc;
}
.dr-feedback-item-icon {
width: 20px;
height: 20px; height: 20px;
margin-bottom: 8px; margin-bottom: 8px;
width: 20px;
}
.dr-feedback-popover {
box-sizing: border-box;
padding: 4px;
width: 100%;
} }
.dr-feedback-popover:before {
content: ""; svg {
position: absolute;
right: -20px;
top: 0;
width: 20px; width: 20px;
height: 100%; height: 20px;
}
.ant-space {
display: inline-flex;
}
.ant-space-align-center {
align-items: center;
}
.dr-feedback-popover-wrapper .dr-feedback-popover-item {
align-items: flex-start;
background: linear-gradient(180deg, #f3f6ff, #fff);
border: 0.5px solid #d6dfe7;
border-radius: 8px;
box-sizing: border-box;
display: flex;
gap: 12px;
margin-bottom: 16px;
padding: 12px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 14px;
line-height: 1.5714285714285714;
}
.dr-feedback-popover-wrapper .dr-feedback-popover-item-logo {
width: 48px;
}
.dr-feedback-popover-wrapper .dr-feedback-popover-item-logo img {
width: 100%;
border: none;
}
.dr-feedback-popover-item-title-wrapper {
display: inline-flex;
align-items: center;
.anticon-arrow-right {
color: #1f1f1f;
} }
.title {
color: #1f1f1f;
} }
} }
.dr-feedback-popover-item-click { .dr-feedback-contract-item {
cursor: pointer; &:not(:last-child) {
&:hover .dr-feedback-popover-item-title-wrapper { margin-bottom: 20px;
.anticon-arrow-right {
color: #0082fc;
}
.title {
color: #0082fc;
}
}
} }
.dr-feedback-popover-wrapper .dr-feedback-popover-item-title-wrapper .title { a {
font-family: PingFangSC, PingFangSC-Semibold; color: #1890ff;
font-size: 14px;
font-weight: 600;
line-height: 24px;
text-align: left;
} }
.dr-feedback-popover-wrapper .dr-feedback-popover-item .grey-text {
color: #8a9cb0;
font-size: 14px;
}
.dr-feedback-popover-wrapper .dr-feedback-popover-item-info-wrapper {
margin-top: 10px;
}
.dr-feedback-popover-wrapper .dr-feedback-popover-item .blue-text {
color: #0082fc;
font-size: 14px;
}
.dr-feedback-item {
display: flex;
gap: 10px;
}
</style>
<style lang="scss"> .dr-feedback-contract-item-title {
.dia-msg-til { color: #333 !important;
background-color: #fefbe6; color: var(--dr-text-black);
padding: 10px 20px; font-size: 14px;
border: 1px solid #ffe58f; font-weight: 700;
margin-top: 6px; margin-bottom: 4px;
color: #333;
}
.foot-dialog-feedback {
.el-dialog__body {
padding: 0 !important;
}
.el-dialog__header {
text-align: left !important;
} }
} }

67
src/components/Header.vue

@ -2,30 +2,16 @@
<header class="header" id="myheader"> <header class="header" id="myheader">
<div class="wrapper"> <div class="wrapper">
<!-- left --> <!-- left -->
<div class="nav-lf flex-1"> <div class="nav-lf flex-1">
<div class="navlf_item">
<div class="nav-logo"> <div class="nav-logo">
<a href="https://home.fanruan.com/"><img src="@/assets/fine_logo_dynamic.gif" class="logo-img"/></a> <a href="https://home.fanruan.com/"><img src="@/assets/fine_logo_dynamic.gif" class="logo-img"/></a>
</div> </div>
<div class="nav-line"></div> <div class="nav-line"></div>
<a href="https://home.fanruan.com/" class="nav-title">帆软社区</a> <router-link to="/" class="nav-title">帆软学院</router-link>
</div>
<div class="navlf_item navlf-item-box">
<a href="https://home.fanruan.com/" class="nav-item">首页</a>
<a href="https://service.fanruan.com" class="nav-item">服务平台</a>
<a href="https://help.fanruan.com/" class="nav-item">文档</a>
<a href="https://edu.fanruan.com/" class="nav-item active">学院</a>
<a href="https://bbs.fanruan.com/wenda" class="nav-item">问答</a>
<a href="https://bbs.fanruan.com/topic" class="nav-item">论坛</a>
<a href="https://cert.fanruan.com/" class="nav-item">认证</a>
<a href="https://bbs.fanruan.com/jobs" class="nav-item">招聘</a>
<a href="https://bbs.fanruan.com/task" class="nav-item">任务</a>
<a href="https://market.fanruan.com/" class="nav-item">市场</a>
</div>
</div> </div>
<!-- rigt -->
<div class="nav-rt">
<!-- search --> <!-- search -->
<div class="search-box flex-1"> <div class="search-box flex-1">
<form class="searchform" method="get" autocomplete="off" action="https://search.fanruan.com/?q=" target="_blank" v-if="is_search"> <form class="searchform" method="get" autocomplete="off" action="https://search.fanruan.com/?q=" target="_blank" v-if="is_search">
@ -51,10 +37,8 @@
</div> </div>
</div> </div>
<!-- rigt -->
<div class="nav-rt">
<nav class="infomation"> <nav class="infomation">
<el-dropdown v-if="com_user_token" class="personal" placement="bottom-end" popper-class="new-dropdown" :show-timeout="0"> <el-dropdown v-if="com_user_token" class="personal" placement="bottom-end" popper-class="new-dropdown" show-timeout="0">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<el-avatar :src="avatarUrl + uid" :size="32" fit="cover" icon="el-icon-user-solid"></el-avatar> <el-avatar :src="avatarUrl + uid" :size="32" fit="cover" icon="el-icon-user-solid"></el-avatar>
<i class="el-icon-arrow-down el-icon--right"></i> <i class="el-icon-arrow-down el-icon--right"></i>
@ -106,7 +90,7 @@
<div class="mainbox"> <div class="mainbox">
<div class="edu-head"> <div class="edu-head">
<div class="edu-nav"> <div class="edu-nav">
<router-link class="item" to="/">学院首页</router-link> <router-link class="item" to="/">首页</router-link>
<router-link class="item" to="/studypath/finereport" :class="$route.meta.active == 'studypath' ? 'active' : ''">学习路径 </router-link> <router-link class="item" to="/studypath/finereport" :class="$route.meta.active == 'studypath' ? 'active' : ''">学习路径 </router-link>
<router-link class="item" to="/video" :class="$route.meta.active == 'video' ? 'active' : ''">视频课</router-link> <router-link class="item" to="/video" :class="$route.meta.active == 'video' ? 'active' : ''">视频课</router-link>
<router-link class="item" to="/class" :class="$route.meta.active == 'class' ? 'active' : ''">学习班</router-link> <router-link class="item" to="/class" :class="$route.meta.active == 'class' ? 'active' : ''">学习班</router-link>
@ -384,9 +368,9 @@ export default defineComponent({
z-index: 201; z-index: 201;
.wrapper { .wrapper {
width: 100%; width: 1200px;
background: #fff; background: #fff;
padding: 0 20px; margin: 0 auto;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@ -396,7 +380,7 @@ export default defineComponent({
width: 1px; width: 1px;
height: 24px; height: 24px;
background-color: #dbe3ea; background-color: #dbe3ea;
margin: 0 8px; margin: 0 20px;
} }
.nav-logo { .nav-logo {
width: 128px; width: 128px;
@ -414,33 +398,14 @@ export default defineComponent({
text-decoration: none !important; text-decoration: none !important;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
} }
.navlf_item {
display: flex;
align-items: center;
}
.navlf-item-box {
margin-left: 32px;
.nav-item {
&:hover {
color: #0082fc;
}
margin-right: 20px;
font-size: 16px;
color: #17243e;
transition: all 0.3s;
}
.active {
color: #0082fc;
}
}
} }
.nav-rt {
display: inline-flex;
align-items: center;
.search-box { .search-box {
height: 48px; height: 48px;
flex: 1 1; margin: 0 auto;
max-width: 500px; width: 460px;
margin: 0 0 0 4px;
transition: all 0.2s; transition: all 0.2s;
.searchform { .searchform {
@ -492,10 +457,6 @@ export default defineComponent({
} }
} }
.nav-rt {
display: inline-flex;
align-items: center;
.infomation { .infomation {
position: relative; position: relative;
height: 100%; height: 100%;
@ -620,7 +581,7 @@ export default defineComponent({
} }
.avatar_down { .avatar_down {
width: 300px; width: 340px;
padding: 0 20px; padding: 0 20px;
background-color: #ffffff; background-color: #ffffff;
background-clip: padding-box; background-clip: padding-box;

26
src/main.js

@ -33,17 +33,17 @@ app.use(VueWechatTitle)
app.use(jsSeamlessScroll) app.use(jsSeamlessScroll)
app.mount('#app') app.mount('#app')
router.afterEach(() => { router.afterEach(() => {
setTimeout(() => { // setTimeout(() => {
//百度统计 // //百度统计
var _hmt = _hmt || []; // var _hmt = _hmt || [];
(function () { // (function () {
//每次执行前,先移除上次插入的代码 // //每次执行前,先移除上次插入的代码
document.getElementById('baidu_tj') && document.getElementById('baidu_tj').remove(); // document.getElementById('baidu_tj') && document.getElementById('baidu_tj').remove();
var hm = document.createElement("script"); // var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?f4d7d83c565e698bd7cedfe9c6297055"; // hm.src = "https://hm.baidu.com/hm.js?f4d7d83c565e698bd7cedfe9c6297055";
hm.id = "baidu_tj" // hm.id = "baidu_tj"
var s = document.getElementsByTagName("script")[0]; // var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s); // s.parentNode.insertBefore(hm, s);
})(); // })();
}, 0); // }, 0);
}); });

197
src/views/class/admin/schedule_admin_class.vue

@ -1,37 +1,56 @@
<template> <template>
<div> <div>
<el-table v-loading="loading" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" row-key="id" default-expand-all lazy :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
<el-table v-loading="loading" :data="tableData" style="width: 100%"
@selection-change="handleSelectionChange" row-key="id" default-expand-all lazy
:tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column prop="title" label="目录大纲"> <el-table-column prop="title" label="目录大纲">
<template #default="scope"> <template #default='scope'>
<span v-if="scope.row.children" class="f18 fw600 col333">{{scope.row.title}}</span> <span v-if="scope.row.children" class="f18 fw600 col333">{{scope.row.title}}</span>
<a v-else :href="'/class/play/' + classid + '/' + scope.row.id" target="_blank" class="item-pl f15"> <i class="iconfont icon-bofang2 colb3c f14 mrt10"></i>{{ scope.row.title }} </a> <a v-else :href="'/class/play/'+classid+'/'+scope.row.id" target="_blank" class="item-pl f15">
<i class="iconfont icon-bofang2 colb3c f14 mrt10"></i>{{scope.row.title}}
</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed="right" label="发布状态" width="100"> <el-table-column fixed="right" label="发布状态" width="100">
<template #default="scope"> <template #default="scope">
<el-switch v-if="!scope.row.children" v-model="scope.row.display" :active-value="1" :inactive-value="0" active-color="#0082fc" inactive-color="#dadde5" @click="handleClose(scope.row)"> </el-switch>
<el-switch v-if="!scope.row.children" v-model="scope.row.display" :active-value="1"
:inactive-value="0" active-color="#0082fc" inactive-color="#dadde5"
@click="handleClose(scope.row)">
</el-switch>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</template> </template>
<script> <script>
import { useRoute } from "vue-router"; import { useRoute } from 'vue-router'
import { scheduleList, noticeAdd, noticeEdit, scheduleUpdate, studyLog } from "@/api/study_admin"; import { scheduleList, noticeAdd, noticeEdit, scheduleUpdate, studyLog } from "@/api/study_admin";
import { ref, toRefs, reactive, getCurrentInstance, nextTick } from "vue"; import { ref, toRefs, reactive, getCurrentInstance, nextTick } from 'vue';
import store from "@/store"; import store from '@/store'
import { _debounce } from "@/utils/debounce"; import { _debounce } from "@/utils/debounce";
export default { export default {
name: "class_homework", name: 'class_homework',
setup() { setup() {
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance()
const route = useRoute(); const route = useRoute()
const classid = route.params.classid; const classid = route.params.classid;
const state = reactive({ const state = reactive({
headers: { headers: {
authentication: store.getters.get_authentication, 'authentication': store.getters.get_authentication
}, },
loading: true, loading: true,
tableData: [], // tableData: [], //
@ -39,84 +58,89 @@ export default {
total: 0, // total: 0, //
page: 1, // page: 1, //
perpage: 10, // perpage: 10, //
id: "", id: '',
kw: "", kw: '',
dialogFormVisible: false, dialogFormVisible: false,
dialogEdit: false, dialogEdit: false,
dialogUidLog: false, dialogUidLog: false,
numbereRef: { numbereRef: {
title: "", title: '',
url: "", url: '',
}, },
rules: { rules: {
title: [{ required: true, message: "请输入公告内容", trigger: "blur" }], title: [
url: [{ required: true, type: "url", message: "请输入正确的url", trigger: "blur" }], { required: true, message: '请输入公告内容', trigger: 'blur' },
],
url: [
{ required: true, type: "url", message: '请输入正确的url', trigger: 'blur' },
],
}, },
rowStudent: {}, rowStudent: {},
modEdit: { modEdit: {
id: "", id: '',
xs_name: "", xs_name: '',
gongsi: "", gongsi: '',
gangwei: "", gangwei: '',
shouji: "", shouji: '',
fenshu: "", fenshu: '',
beizhu: "", beizhu: '',
}, },
uidLog: [], uidLog: [],
alltime: "", alltime: '',
username: "", username: '',
}); })
// //
const getnotice = async () => { const getnotice = async () => {
state.loading = true; state.loading = true
const res = await scheduleList(classid); const res = await scheduleList(classid);
if (res.code === 200) { if (res.code === 200) {
state.tableData = res.data; state.tableData = res.data
state.total = res.data.total; state.total = res.data.total
state.page = res.data.current_page; state.page = res.data.current_page
state.loading = false; state.loading = false
} }
}; };
getnotice(); getnotice();
// //
const getUserLog = async (uid) => { const getUserLog = async (uid) => {
state.loading = true; state.loading = true
const res = await studyLog(classid, uid); const res = await studyLog(classid, uid);
if (res.code === 200) { if (res.code === 200) {
state.uidLog = res.data.data; state.uidLog = res.data.data;
state.alltime = res.data.alltime; state.alltime = res.data.alltime;
state.username = res.data.username; state.username = res.data.username;
state.dialogUidLog = true; state.dialogUidLog = true;
state.loading = false; state.loading = false
} }
}; };
// item // item
const setItem = (item) => { const setItem = (item) => {
state.item = item; state.item = item
state.isShowItem = true; state.isShowItem = true
}; }
const handleOption = () => { const handleOption = () => {
state.page = 1; state.page = 1
getnotice(); getnotice()
}; }
// //
const handleSelectionChange = (val) => { const handleSelectionChange = (val) => {
state.multipleSelection = val; state.multipleSelection = val
}; }
const changePage = (val) => { const changePage = (val) => {
state.page = val; state.page = val
getnotice(); getnotice()
}; }
// //
const handleSizeChange = (val) => { const handleSizeChange = (val) => {
state.perpage = val; state.perpage = val
getnotice(); getnotice()
}; }
// //
const handleClose = async (row) => { const handleClose = async (row) => {
@ -125,38 +149,38 @@ export default {
id: row.id, id: row.id,
display: row.display, display: row.display,
title: row.title, title: row.title,
}, }
}; }
const res = await scheduleUpdate(classid, params); const res = await scheduleUpdate(classid, params);
if (res.message === "success") { if (res.message === 'success') {
if (res.data.display == 1) { if (res.data.display == 1) {
proxy.$notify({ proxy.$notify({
title: "发布成功", title: '发布成功',
type: "success", type: 'success',
iconClass: "schedule-success", message: res.data.title + '【发布成功】',
message: res.data.title + "【发布成功】",
}); });
} else { } else {
proxy.$notify.info({ proxy.$notify.info({
title: "取消发布成功", title: '取消发布成功',
type: "info", message: res.data.title + '【已取消发布】',
iconClass: "schedule-info",
message: res.data.title + "【已取消发布】",
}); });
} }
} else { } else {
proxy.$message({ proxy.$message({
type: "error", type: 'error',
message: "服务器错误", message: '服务器错误',
center: true, center: true
}); });
} }
}; };
// //
const submitForm = _debounce(() => { const submitForm = _debounce(() => {
_submitForm(); _submitForm();
}, 300); }, 300)
const numberValidateRef = ref(null); const numberValidateRef = ref(null);
const _submitForm = () => { const _submitForm = () => {
nextTick(() => { nextTick(() => {
@ -165,23 +189,23 @@ export default {
const params = { const params = {
title: state.numbereRef.title, title: state.numbereRef.title,
url: state.numbereRef.url, url: state.numbereRef.url,
}; }
const res = await noticeAdd(classid, params); const res = await noticeAdd(classid, params)
if (res.message === "success") { if (res.message === 'success') {
state.dialogFormVisible = false; state.dialogFormVisible = false;
proxy.$message({ proxy.$message({
type: "success", type: 'success',
message: "添加成功", message: '添加成功',
center: true, center: true
}); });
setTimeout(function () { setTimeout(function () {
getnotice(); getnotice()
}, 100); }, 100);
} }
} }
}); });
}); })
}; }
const noticeValidateRef = ref(null); const noticeValidateRef = ref(null);
const resnoticeEdit = () => { const resnoticeEdit = () => {
@ -189,29 +213,30 @@ export default {
if (valid) { if (valid) {
const params = { const params = {
data: state.modEdit, data: state.modEdit,
}; }
const res = await noticeEdit(classid, params); const res = await noticeEdit(classid, params);
if (res.code === 200) { if (res.code === 200) {
state.dialogEdit = false; state.dialogEdit = false;
proxy.$message({ proxy.$message({
type: "success", type: 'success',
message: "编辑成功", message: '编辑成功',
center: true, center: true
}); });
getnotice(); getnotice()
} }
} }
}); });
};
}
const openStudent = (row) => { const openStudent = (row) => {
state.modEdit = row; state.modEdit = row;
state.dialogEdit = true; state.dialogEdit = true;
}; }
const eidtForm = () => { const eidtForm = () => {
resnoticeEdit(); resnoticeEdit();
}; }
// const tableRowClassName = ({ row }) => { // const tableRowClassName = ({ row }) => {
// if (row.children) { // if (row.children) {
@ -237,9 +262,9 @@ export default {
getUserLog, getUserLog,
noticeValidateRef, noticeValidateRef,
//tableRowClassName //tableRowClassName
}; }
}, }
}; }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -308,12 +333,6 @@ export default {
.el-dialog__body { .el-dialog__body {
padding: 20px 30px 30px 30px; padding: 20px 30px 30px 30px;
} }
.schedule-success {
color: #67c23a !important;
}
.schedule-info {
color: #909399 !important;
}
/* .title-row td{ /* .title-row td{
background-color:#F3F8FF; background-color:#F3F8FF;
} */ } */

4
src/views/class/class_lesson.vue

@ -18,10 +18,6 @@
<template #default> <template #default>
<div class="lesson"> <div class="lesson">
<el-empty :image-size="150" description=" " v-if="lessonList.length === 0">
<div class="col617">等待老师发布...</div>
</el-empty>
<div class="looplist" v-for="(item, i) in lessonList" :key="i"> <div class="looplist" v-for="(item, i) in lessonList" :key="i">
<div class="otile flex-1"> <div class="otile flex-1">
<h2>{{ item.title }}</h2> <h2>{{ item.title }}</h2>

5
src/views/class/play.vue

@ -4,8 +4,7 @@
<div v-if="!com_user_token"> <div v-if="!com_user_token">
<el-empty :image-size="200" description=" ">无权限查看当前页面需要 <a :href="com_login_url" class="col008">登录</a></el-empty> <el-empty :image-size="200" description=" ">无权限查看当前页面需要 <a :href="com_login_url" class="col008">登录</a></el-empty>
</div> </div>
<div v-if="isAuth && com_user_token"> <div v-if="isAuth">
>
<div class="main"> <div class="main">
<div class="videoBox flex-2"> <div class="videoBox flex-2">
<div class="viewtil" style="min-height:8%"> <div class="viewtil" style="min-height:8%">
@ -388,7 +387,7 @@ export default {
onMounted(() => { onMounted(() => {
var new_element = document.createElement("script"); var new_element = document.createElement("script");
new_element.setAttribute("type", "text/javascript"); new_element.setAttribute("type", "text/javascript");
new_element.setAttribute("src", "/js/ckplayerX2/ckplayer.min.js?v=2.1"); new_element.setAttribute("src", "/js/ckplayerX2/ckplayer.min.js");
document.body.appendChild(new_element); document.body.appendChild(new_element);
// //

63
src/views/studypath/fineDataLink.vue

@ -18,7 +18,7 @@
<div class="w1200 pdb50"> <div class="w1200 pdb50">
<div class="boxtil flex-1"> <div class="boxtil flex-1">
<div class="yinhao"></div> <div class="yinhao"></div>
<div class="txt">知识结构</div> <div class="txt">学习路线图</div>
</div> </div>
<div class="subbox1" style="display: flex;" id="knowledgeStructure"> <div class="subbox1" style="display: flex;" id="knowledgeStructure">
@ -114,19 +114,15 @@
</a> </a>
<div class="f14" style="padding: 20px 0 10px; line-height: 22px;"> <div class="f14" style="padding: 20px 0 10px; line-height: 22px;">
完成快速入门学习即可抽取 完成快速入门学习即可抽取
</div> </div>
<div class="flex-6" style="line-height: 24px;">
<div class="coupon_bg flex-1"> <div class="flex-1">
<i class="iconfont icon-youhuiquan colb3c f20 lf_c"></i> <span class="f14 flex-1">
<div class="lineBox"> <i class="iconfont icon-book colb3c f20"></i>
<i class="arrow el-icon-caret-bottom line_bottom"></i> <span class="col333" style="margin-left: 10px;">全套学习资料</span>
<div class="line_l"></div> </span>
<i class="arrow el-icon-caret-top line_top"></i> <span class="f12 col7e8" style="padding-left: 10px">价值200元</span>
</div>
<div>
<a href="https://www.jiandaoyun.com/l/645608ecf1bf6800081e9a5c/d/64560942257222000873d3fe" target="_blank" class="col008" style="margin:0 10px;">学习资料下载</a>
<span class="f12 col7e8">价值200元</span>
</div> </div>
</div> </div>
</div> </div>
@ -264,45 +260,6 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.coupon_bg {
background-color: #fef7f2;
border-radius: 6px;
height: 42px;
.lf_c {
margin: 0 14px;
}
.lineBox {
position: relative;
width: 15px;
height: 100%;
.line_bottom,
.line_top {
left: 0;
position: absolute;
font-size: 18px;
color: #fff;
}
.line_bottom {
top: -7px;
}
.line_top {
bottom: -7px;
}
.line_l {
position: absolute;
width: 1px;
height: 100%;
border: 1px #fff dashed;
left: 50%;
}
}
}
.subbox4 { .subbox4 {
width: 590px; width: 590px;
} }
@ -418,7 +375,7 @@
.itembox { .itembox {
width: 356px; width: 356px;
height: 735px; height: 725px;
position: relative; position: relative;
background-color: #fff; background-color: #fff;
border-radius: 6px; border-radius: 6px;

6
src/views/studypath/jiandaoyun.vue

@ -230,7 +230,7 @@
<div class="infobox"> <div class="infobox">
<div class="f24 col333">简道云学习班从入门到精通·实战班</div> <div class="f24 col333">简道云学习班从入门到精通·实战班</div>
<div class="f16 col617" style="margin: 10px 0 20px;"> <div class="f16 col617" style="margin: 10px 0 20px;">
3周体系化课程 助力你成为全公司最会用简道云的人 5周体系化课程 助力你成为全公司最会用简道云的人
</div> </div>
<div class="icoxbox flex-6"> <div class="icoxbox flex-6">
<li> <li>
@ -252,7 +252,7 @@
<div class="flex-1 m_kaike" style="margin-top: 30px;" v-if="is_showclass === true"> <div class="flex-1 m_kaike" style="margin-top: 30px;" v-if="is_showclass === true">
<a href="https://bbs.fanruan.com/course/jiandaoyun/standard/?sqtj" target="_blank" class="btn-jdy f14" style=" width: 278px; padding: 10px 0; margin-right: 20px;"> 了解详情{{ start_day }}开课 </a> <a href="https://bbs.fanruan.com/course/jiandaoyun/standard/?sqtj" target="_blank" class="btn-jdy f14" style=" width: 278px; padding: 10px 0; margin-right: 20px;"> 了解详情{{ start_day }}开课 </a>
<div class="f14 col617 flex-1"> <div class="f14 col617 flex-1">
<span>课时3</span> <span style="margin: -2px 4px 0 4px;"></span> <span>课时5</span> <span style="margin: -2px 4px 0 4px;"></span>
<span>{{ people_count }}人已完成学习</span> <span>{{ people_count }}人已完成学习</span>
</div> </div>
</div> </div>
@ -260,7 +260,7 @@
<div class="flex-1 m_kaike" style="margin-top: 30px;" v-if="is_showclass === false"> <div class="flex-1 m_kaike" style="margin-top: 30px;" v-if="is_showclass === false">
<span class="btn-ddd f14" style=" width: 278px; padding: 10px 0; margin-right: 20px;">暂无开课计划</span> <span class="btn-ddd f14" style=" width: 278px; padding: 10px 0; margin-right: 20px;">暂无开课计划</span>
<div class="f14 col617 flex-1"> <div class="f14 col617 flex-1">
<span>课时3</span> <span style="margin: -2px 4px 0 4px;"></span> <span>课时5</span> <span style="margin: -2px 4px 0 4px;"></span>
<span>{{ people_count }}人已完成学习</span> <span>{{ people_count }}人已完成学习</span>
</div> </div>
</div> </div>

369
src/views/video/guide/finebi.vue

File diff suppressed because it is too large Load Diff

352
src/views/video/guide/finereport.vue

File diff suppressed because it is too large Load Diff

367
src/views/video/guide/finereportGuide2023.vue

File diff suppressed because it is too large Load Diff

422
src/views/video/guide/jiandaoyun.vue

File diff suppressed because it is too large Load Diff

13
src/views/video/play.vue

@ -393,7 +393,7 @@ export default {
onMounted(() => { onMounted(() => {
var new_element = document.createElement("script"); var new_element = document.createElement("script");
new_element.setAttribute("type", "text/javascript"); new_element.setAttribute("type", "text/javascript");
new_element.setAttribute("src", "/js/ckplayerX2/ckplayer.min.js?v=2.1"); new_element.setAttribute("src", "/js/ckplayerX2/ckplayer.min.js");
document.body.appendChild(new_element); document.body.appendChild(new_element);
// //
@ -853,14 +853,3 @@ body {
} }
} }
</style> </style>
<style type="text/css">
video::-internal-media-controls-download-button {
display: none;
}
video::-webkit-media-controls-enclosure {
overflow: hidden;
}
video::-webkit-media-controls-panel {
width: calc(100% + 30px);
}
</style>

Loading…
Cancel
Save