fix: 将所有http资源替换为https以提升安全性

refactor: 添加新的直播视图路由路径
style: 格式化代码并优化缩进
This commit is contained in:
yindongqi 2025-08-01 17:54:21 +08:00
parent 2d987351bc
commit a2f0392fed
12 changed files with 473 additions and 385 deletions

View File

@ -12,7 +12,7 @@ module.exports = {
assetsPublicPath: '/', assetsPublicPath: '/',
proxyTable: { proxyTable: {
'/api': { '/api': {
// target: 'http://admin.jiangtang360.com/admin', // target: 'https://admins.jiangtang360.com/admin',
target: 'http://sz-test.shengzhevictor.com', //设置调用接口域名和端口号别忘了加http///请求的第三方接口 target: 'http://sz-test.shengzhevictor.com', //设置调用接口域名和端口号别忘了加http///请求的第三方接口
changeOrigin: true,///在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题 changeOrigin: true,///在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
pathRewrite: { pathRewrite: {

View File

@ -37,7 +37,8 @@
<div class="kecheng"> <div class="kecheng">
<div class="kecheng_biaoti"> <div class="kecheng_biaoti">
<p class="kecheng_biaotiL">课程展示</p> <p class="kecheng_biaotiL">课程展示</p>
<p class="kecheng_biaotiR" @click="goUrl('/courseAll')">查看全部&emsp;<img class="fr" src="../../static/imgs/header_icon_right.svg" alt=""></p> <p class="kecheng_biaotiR" @click="goUrl('/courseAll')">查看全部&emsp;<img class="fr"
src="../../static/imgs/header_icon_right.svg" alt=""></p>
</div> </div>
<div class="kechenginfo" v-for="(item, index) in course" :key="index"> <div class="kechenginfo" v-for="(item, index) in course" :key="index">
@ -46,7 +47,8 @@
<p class="kechenginfoR_bt">{{ item.name }}</p> <p class="kechenginfoR_bt">{{ item.name }}</p>
<p class="kechenginfoR_xbt">{{ item.description }}</p> <p class="kechenginfoR_xbt">{{ item.description }}</p>
<div class="kechenginfoR_bot"> <div class="kechenginfoR_bot">
<div class="kechenginfoR_botL"><img src="../../static/img/yanjing.png" alt="" class="yanjing">{{item.page_view}}</div> <div class="kechenginfoR_botL"><img src="../../static/img/yanjing.png" alt=""
class="yanjing">{{ item.page_view }}</div>
<div class="kechenginfoR_botR" @click="goCourseDetail(item.id)">进入课程</div> <div class="kechenginfoR_botR" @click="goCourseDetail(item.id)">进入课程</div>
</div> </div>
</div> </div>
@ -96,7 +98,23 @@
data => { data => {
if (data.code == 1) { if (data.code == 1) {
this.company = data.data.company; this.company = data.data.company;
//https
this.company.banner = this.company.banner.replace(
"http://img",
"https://imgs"
);
this.company.thumbnail = this.company.thumbnail.replace(
"http://img",
"https://imgs"
);
this.course = data.data.course; this.course = data.data.course;
//https
for (let index = 0; index < this.course.length; index++) {
this.course[index].thumbnail = this.course[index].thumbnail.replace(
"http://img",
"https://imgs"
);
}
var courseName = this.course.map(v => { return v.name }) var courseName = this.course.map(v => { return v.name })
//localStorage //localStorage
localStorage.setItem("courseName", JSON.stringify(courseName)); localStorage.setItem("courseName", JSON.stringify(courseName));
@ -123,18 +141,21 @@
.all { .all {
padding: 5rem 0 6.5rem; padding: 5rem 0 6.5rem;
} }
.top { .top {
width: 30rem; width: 30rem;
margin: auto; margin: auto;
height: 18rem; height: 18rem;
display: flex; display: flex;
align-items: center; align-items: center;
img { img {
width: 100%; width: 100%;
height: 15rem; height: 15rem;
object-fit: cover; object-fit: cover;
} }
} }
.daohang { .daohang {
width: 90%; width: 90%;
height: 6rem; height: 6rem;
@ -142,26 +163,32 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.daohang1 { .daohang1 {
width: 25%; width: 25%;
border-right: 1px solid #CCCCCC; border-right: 1px solid #CCCCCC;
font-size: 1.35rem; font-size: 1.35rem;
&:last-child { &:last-child {
border: none; border: none;
} }
} }
.liuyan1 { .liuyan1 {
border-right: none; border-right: none;
} }
.tupian { .tupian {
width: 2.5rem; width: 2.5rem;
height: 2.5rem; height: 2.5rem;
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
} }
} }
.kecheng { .kecheng {
width: 90%; width: 90%;
margin: auto; margin: auto;
.kecheng_biaoti { .kecheng_biaoti {
margin: 1rem 0; margin: 1rem 0;
height: 3rem; height: 3rem;
@ -169,16 +196,19 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.kecheng_biaotiL { .kecheng_biaotiL {
font-size: 1.56rem; font-size: 1.56rem;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
font-weight: bold; font-weight: bold;
} }
.kecheng_biaotiR { .kecheng_biaotiR {
font-size: 1.25rem; font-size: 1.25rem;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
font-weight: 400; font-weight: 400;
color: #C5C5C5; color: #C5C5C5;
.fr { .fr {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
@ -191,6 +221,7 @@
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
border-bottom: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC;
>img { >img {
width: 13rem; width: 13rem;
height: 10rem; height: 10rem;
@ -198,12 +229,14 @@
margin-right: 0.5rem; margin-right: 0.5rem;
} }
} }
.kechenginfoR { .kechenginfoR {
width: 56%; width: 56%;
height: 10rem; height: 10rem;
text-align: left; text-align: left;
position: relative; position: relative;
} }
.kechenginfoR_bt { .kechenginfoR_bt {
display: block; display: block;
width: 100%; width: 100%;
@ -214,6 +247,7 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.kechenginfoR_xbt { .kechenginfoR_xbt {
display: block; display: block;
width: 100%; width: 100%;
@ -224,6 +258,7 @@
margin: 1rem 0; margin: 1rem 0;
word-wrap: break-word; word-wrap: break-word;
} }
.kechenginfoR_bot { .kechenginfoR_bot {
height: 4rem; height: 4rem;
display: flex; display: flex;
@ -233,6 +268,7 @@
bottom: 0; bottom: 0;
width: 100%; width: 100%;
} }
.kechenginfoR_botL { .kechenginfoR_botL {
color: #CCCCCC; color: #CCCCCC;
font-size: 1.25rem; font-size: 1.25rem;
@ -240,11 +276,13 @@
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
} }
.yanjing { .yanjing {
width: 1.5rem; width: 1.5rem;
height: 1.5rem; height: 1.5rem;
margin-right: 0.5rem; margin-right: 0.5rem;
} }
.kechenginfoR_botR { .kechenginfoR_botR {
width: 8rem; width: 8rem;
height: 3rem; height: 3rem;
@ -257,5 +295,4 @@
} }
} }
</style> </style>

View File

@ -32,7 +32,7 @@
data-vidtype="1" data-vidtype="1"
style="position: relative; z-index: 1; height: 35em; width: 31em" style="position: relative; z-index: 1; height: 35em; width: 31em"
scrolling="no" scrolling="no"
src="http://img.jiangtang360.com/1666599415204.mp4" src="https://imgs.jiangtang360.com/1666599415204.mp4"
allowfullscreen="1" allowfullscreen="1"
frameborder="0" frameborder="0"
></iframe> ></iframe>

View File

@ -30,7 +30,7 @@ export default {
}, },
methods: { methods: {
createQRCode(num) { createQRCode(num) {
axios.get("http://admin.jiangtang360.com/api/Card/getTime").then( axios.get("https://admins.jiangtang360.com/api/Card/getTime").then(
(res) => { (res) => {
if (num === 1) { if (num === 1) {
var redirect_uri = encodeURIComponent(this.redirect_uri)+res.data; var redirect_uri = encodeURIComponent(this.redirect_uri)+res.data;

View File

@ -77,7 +77,7 @@ export default {
var params = new URLSearchParams(query); var params = new URLSearchParams(query);
// //
var paramValue = params.get("nowTime"); var paramValue = params.get("nowTime");
axios.get("http://admin.jiangtang360.com/api/Card/getTime").then( axios.get("https://admins.jiangtang360.com/api/Card/getTime").then(
(res) => { (res) => {
if ( if (
Number(paramValue) + 1000 * 60 * 5 > res.data && Number(paramValue) + 1000 * 60 * 5 > res.data &&
@ -99,7 +99,7 @@ export default {
getOpenid(code) { getOpenid(code) {
let formData = new FormData(); let formData = new FormData();
formData.append("code", code); formData.append("code", code);
axios.post("http://admin.jiangtang360.com/api/Signin/getOpenId", formData).then( axios.post("https://admins.jiangtang360.com/api/Signin/getOpenId", formData).then(
(res) => { (res) => {
if (res.data.code == 200) { if (res.data.code == 200) {
this.openid = res.data.data; this.openid = res.data.data;
@ -120,7 +120,7 @@ export default {
let formData = new FormData(); let formData = new FormData();
formData.append("openid", openid); formData.append("openid", openid);
axios axios
.post("http://admin.jiangtang360.com/api/Signin/isTodaySignedIn", formData) .post("https://admins.jiangtang360.com/api/Signin/isTodaySignedIn", formData)
.then( .then(
(res) => { (res) => {
if (res.status == 200) { if (res.status == 200) {
@ -141,7 +141,7 @@ export default {
formData.append("openid", this.openid); formData.append("openid", this.openid);
axios axios
.post( .post(
"http://admin.jiangtang360.com/api/Signin/getLastSubmissionByOpenid", "https://admins.jiangtang360.com/api/Signin/getLastSubmissionByOpenid",
formData formData
) )
.then( .then(
@ -169,7 +169,7 @@ export default {
formData.append("openid", this.openid); formData.append("openid", this.openid);
axios axios
.post( .post(
"http://admin.jiangtang360.com/api/Signin/saveUserCheckinInfo", "https://admins.jiangtang360.com/api/Signin/saveUserCheckinInfo",
formData formData
) )
.then( .then(

View File

@ -2,12 +2,7 @@
<div class="all"> <div class="all">
<back title="已学课程"></back> <back title="已学课程"></back>
<div class="kecheng"> <div class="kecheng">
<div <div class="kechenginfo" @click="goCourseDetail(item.id)" v-for="(item, index) in course" :key="index">
class="kechenginfo"
@click="goCourseDetail(item.id)"
v-for="(item, index) in course"
:key="index"
>
<img :src="item.thumbnail" alt="" /> <img :src="item.thumbnail" alt="" />
<div class="kechenginfoR"> <div class="kechenginfoR">
<p class="kechenginfoR_bt">{{ item.name }}</p> <p class="kechenginfoR_bt">{{ item.name }}</p>
@ -54,6 +49,12 @@ export default {
(data) => { (data) => {
if (data.code == 1) { if (data.code == 1) {
this.course = data.data; this.course = data.data;
for (let index = 0; index < this.course.length; index++) {
this.course[index].thumbnail = this.course[index].thumbnail.replace(
"http://img",
"https://imgs"
);
}
} else { } else {
Toast(data.msg); Toast(data.msg);
} }
@ -70,45 +71,53 @@ export default {
padding: 5.5rem 0; padding: 5.5rem 0;
width: 90%; width: 90%;
margin: auto; margin: auto;
.kecheng_biaoti { .kecheng_biaoti {
height: 3rem; height: 3rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.kecheng_biaotiL { .kecheng_biaotiL {
font-size: 1.56rem; font-size: 1.56rem;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
font-weight: bold; font-weight: bold;
} }
.kecheng_biaotiR { .kecheng_biaotiR {
font-size: 1.25rem; font-size: 1.25rem;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
font-weight: 400; font-weight: 400;
color: #c5c5c5; color: #c5c5c5;
.fr { .fr {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
} }
} }
.kechenginfo { .kechenginfo {
padding: 2rem 0; padding: 2rem 0;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
border-bottom: 1px solid #cccccc; border-bottom: 1px solid #cccccc;
>img { >img {
width: 11rem; width: 11rem;
height: 15rem; height: 15rem;
object-fit: cover; object-fit: cover;
} }
} }
.kechenginfoR { .kechenginfoR {
width: 56%; width: 56%;
height: 15rem; height: 15rem;
text-align: left; text-align: left;
position: relative; position: relative;
} }
.kechenginfoR_bt { .kechenginfoR_bt {
display: block; display: block;
width: 100%; width: 100%;
@ -119,6 +128,7 @@ export default {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.kechenginfoR_xbt { .kechenginfoR_xbt {
display: block; display: block;
width: 100%; width: 100%;
@ -131,10 +141,12 @@ export default {
text-overflow: ellipsis; text-overflow: ellipsis;
height: 7rem; height: 7rem;
} }
.kechenginfoR_end { .kechenginfoR_end {
font-size: 1rem; font-size: 1rem;
color: #0083ff; color: #0083ff;
} }
.kechenginfoR_bot { .kechenginfoR_bot {
height: 4rem; height: 4rem;
display: flex; display: flex;
@ -144,6 +156,7 @@ export default {
bottom: 0; bottom: 0;
width: 100%; width: 100%;
} }
.kechenginfoR_botL { .kechenginfoR_botL {
color: #cccccc; color: #cccccc;
font-size: 1.25rem; font-size: 1.25rem;
@ -151,11 +164,13 @@ export default {
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
} }
.yanjing { .yanjing {
width: 1.5rem; width: 1.5rem;
height: 1.5rem; height: 1.5rem;
margin-right: 0.5rem; margin-right: 0.5rem;
} }
.kechenginfoR_botR { .kechenginfoR_botR {
width: 8rem; width: 8rem;
height: 3rem; height: 3rem;

View File

@ -9,7 +9,8 @@
<p class="kechenginfoR_bt">{{ item.name }}</p> <p class="kechenginfoR_bt">{{ item.name }}</p>
<p class="kechenginfoR_xbt">{{ item.description }}</p> <p class="kechenginfoR_xbt">{{ item.description }}</p>
<div class="kechenginfoR_bot"> <div class="kechenginfoR_bot">
<div class="kechenginfoR_botL"><img src="../../../static/img/yanjing.png" alt="" class="yanjing">{{item.page_view}}</div> <div class="kechenginfoR_botL"><img src="../../../static/img/yanjing.png" alt=""
class="yanjing">{{ item.page_view }}</div>
<div class="kechenginfoR_botR">进入课程</div> <div class="kechenginfoR_botR">进入课程</div>
</div> </div>
</div> </div>
@ -47,6 +48,9 @@
data => { data => {
if (data.code == 1) { if (data.code == 1) {
this.course = data.data; this.course = data.data;
for (let index = 0; index < this.course.length; index++) {
this.course[index].thumbnail = this.course[index].thumbnail.replace('http://img', 'https://imgs');
}
} else { } else {
Toast(data.msg); Toast(data.msg);
} }
@ -62,33 +66,39 @@
padding: 5.5rem 0; padding: 5.5rem 0;
width: 90%; width: 90%;
margin: auto; margin: auto;
.kecheng_biaoti { .kecheng_biaoti {
height: 3rem; height: 3rem;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.kecheng_biaotiL { .kecheng_biaotiL {
font-size: 1.56rem; font-size: 1.56rem;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
font-weight: bold; font-weight: bold;
} }
.kecheng_biaotiR { .kecheng_biaotiR {
font-size: 1.25rem; font-size: 1.25rem;
font-family: MicrosoftYaHei; font-family: MicrosoftYaHei;
font-weight: 400; font-weight: 400;
color: #C5C5C5; color: #C5C5C5;
.fr { .fr {
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
} }
} }
.kechenginfo { .kechenginfo {
padding: 2rem 0; padding: 2rem 0;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
border-bottom: 1px solid #CCCCCC; border-bottom: 1px solid #CCCCCC;
>img { >img {
width: 13rem; width: 13rem;
height: 10rem; height: 10rem;
@ -96,12 +106,14 @@
margin-right: 0.5rem; margin-right: 0.5rem;
} }
} }
.kechenginfoR { .kechenginfoR {
width: 56%; width: 56%;
height: 10rem; height: 10rem;
text-align: left; text-align: left;
position: relative; position: relative;
} }
.kechenginfoR_bt { .kechenginfoR_bt {
display: block; display: block;
width: 100%; width: 100%;
@ -112,6 +124,7 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.kechenginfoR_xbt { .kechenginfoR_xbt {
display: block; display: block;
width: 100%; width: 100%;
@ -122,6 +135,7 @@
margin: 1rem 0; margin: 1rem 0;
word-wrap: break-word; word-wrap: break-word;
} }
.kechenginfoR_bot { .kechenginfoR_bot {
height: 4rem; height: 4rem;
display: flex; display: flex;
@ -131,6 +145,7 @@
bottom: 0; bottom: 0;
width: 100%; width: 100%;
} }
.kechenginfoR_botL { .kechenginfoR_botL {
color: #CCCCCC; color: #CCCCCC;
font-size: 1.25rem; font-size: 1.25rem;
@ -138,11 +153,13 @@
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
} }
.yanjing { .yanjing {
width: 1.5rem; width: 1.5rem;
height: 1.5rem; height: 1.5rem;
margin-right: 0.5rem; margin-right: 0.5rem;
} }
.kechenginfoR_botR { .kechenginfoR_botR {
width: 8rem; width: 8rem;
height: 3rem; height: 3rem;
@ -154,5 +171,4 @@
font-size: 1.25rem; font-size: 1.25rem;
} }
} }
</style> </style>

View File

@ -270,7 +270,21 @@ export default {
(data) => { (data) => {
if (data.code == 1) { if (data.code == 1) {
this.courseData = data.data; this.courseData = data.data;
this.courseData.thumbnail = this.courseData.thumbnail.replace(
"http://img",
"https://imgs"
);
this.section = data.data.section; this.section = data.data.section;
for (let index = 0; index < this.section.length; index++) {
this.section[index].thumbnail = this.section[index].thumbnail.replace(
"http://img",
"https://imgs"
);
this.section[index].video_url = this.section[index].video_url.replace(
"http://img",
"https://imgs"
);
}
this.changeSection(data.data.recent_section); this.changeSection(data.data.recent_section);
} else { } else {
Toast(data.msg); Toast(data.msg);

View File

@ -23,7 +23,7 @@ export default {
mounted() { mounted() {
this.cardphotopath = this.cardphotopath =
"http://admin.jiangtang360.com/static/admin/cards/" + "https://admins.jiangtang360.com/static/admin/cards/" +
this.$refs.getValue.value + this.$refs.getValue.value +
".jpg" + ".jpg" +
"?ran=" + "?ran=" +

View File

@ -151,7 +151,7 @@ export default {
axios axios
.post( .post(
// "/uploadcardimage",formData // "/uploadcardimage",formData
"http://admin.jiangtang360.com/api/card/uploadcardimage", "https://admins.jiangtang360.com/api/card/uploadcardimage",
formData, formData,
config config
// Qs.stringify(formData) // Qs.stringify(formData)
@ -188,13 +188,13 @@ export default {
mounted() { mounted() {
this.photopath = this.photopath =
"http://admin.jiangtang360.com/static/admin/cards/" + "https://admins.jiangtang360.com/static/admin/cards/" +
this.$refs.getValue.value + this.$refs.getValue.value +
".jpg" + ".jpg" +
"?ran=" + "?ran=" +
Math.random(); Math.random();
this.ImgObj.src = this.ImgObj.src =
"http://admin.jiangtang360.com/static/admin/cards/" + "https://admins.jiangtang360.com/static/admin/cards/" +
this.$refs.getValue.value + this.$refs.getValue.value +
".jpg" + ".jpg" +
"?ran=" + "?ran=" +

View File

@ -121,6 +121,11 @@ export default new Router({
name:'wxerror', name:'wxerror',
component: resolve => require(['../components/login/wxError.vue'], resolve) component: resolve => require(['../components/login/wxError.vue'], resolve)
}, },
{
path:'/liveview',
name:'liveview',
component: resolve => require(['../components/study/liveView.vue'], resolve)
},
// 用户 // 用户
{ {
path:'/user', path:'/user',

View File

@ -13,6 +13,7 @@ const state={
const mutations={ const mutations={
addInfo(state,loginInfo){ addInfo(state,loginInfo){
state.loginInfo = loginInfo; state.loginInfo = loginInfo;
state.loginInfo.header = state.loginInfo.header.replace('http://img','https://imgs');
} }
} }