Compare commits

..

8 Commits
live ... main

Author SHA1 Message Date
07a5f956f2 fix(study): 修复视频播放结束逻辑和定时器清理问题
修复视频播放结束判断条件,增加对播放进度的验证
添加定时器清理逻辑防止内存泄漏
2025-08-15 15:52:41 +08:00
2704846056 fix(study): 优化视频定时器处理并添加路由离开清理
确保在组件销毁和路由离开时都清除视频定时器,避免内存泄漏。简化视频当前时间获取逻辑,移除不必要的条件判断。
2025-08-15 14:47:29 +08:00
fc801620c0 refactor(study): 移除调试日志并优化视频时间获取逻辑
在ExamTest组件中移除已注释的调试日志
在courseDetail组件中增加视频元素存在性检查,避免潜在错误
2025-08-15 14:13:46 +08:00
f7eca311fa feat(安全): 添加加密解密功能并更新考试组件
- 新增crypto-js依赖用于数据加密解密
- 添加decrypt.js工具文件实现AES解密功能
- 修改Exam.vue组件使用加密接口获取考试数据
- 清理main.js中多余空行并格式化代码
2025-08-15 10:49:17 +08:00
efb38e1106 fix: 更新生产环境API地址
将生产环境的BASE_API地址从"https://admins.jiangtang360.com/api"修改为"http://admin.jiangtang360.com/api",确保API调用的正确性。
2025-08-05 17:38:33 +08:00
d050df6f21 chore: 升级项目依赖和构建工具,迁移至Webpack 5.x
主要变更包括:
1. 更新Babel配置,使用@babel/preset-env和@babel/plugin-transform-object-rest-spread。
2. 升级Webpack及相关插件,使用MiniCssExtractPlugin替代ExtractTextPlugin。
3. 更新package-lock.json和package.json,调整依赖版本。
4. 修改README.md,更新项目简介和环境要求。
5. 代码格式优化和错误处理增强,提升构建和开发体验。
2025-08-04 16:27:52 +08:00
68153d45a1 fix: 从main分支移除liveView.vue文件,该文件应只存在于live分支 2025-08-01 18:16:14 +08:00
54a3a5cf9f feat: 新增在线课堂直播页面组件及功能实现
实现在线课堂直播页面,包含以下功能:
1. 视频直播展示及控制(全屏、音量调节)
2. 教师摄像头和学生摄像头分屏显示
3. 聊天消息发送与接收
4. 课程信息展示
5. 水印显示及动画效果
6. 状态管理(未开始/直播中/已结束)
7. 响应式布局及样式优化
2025-08-01 17:46:07 +08:00
18 changed files with 11439 additions and 4129 deletions

View File

@ -4,6 +4,6 @@ const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
// BASE_API: '"http://spadmin.jiangtang360.com/api"'
BASE_API: '"https://adminssl.jiangtang360.com/api"',
BASE_API: '"http://admin.jiangtang360.com/api"',
// BASE_API: '"http://zywsadmin.jiangtang360.com/api"'
})

View File

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

View File

@ -1,6 +1,6 @@
'use strict'
module.exports = {
// BASE_API: '"http://spadmin.jiangtang360.com/api"'
BASE_API: '"https://adminssl.jiangtang360.com/api"'
BASE_API: '"http://admin.jiangtang360.com/api"'
// BASE_API: '"http://zywsadmin.jiangtang360.com/api"'
}

View File

@ -24,7 +24,6 @@
"exif-js": "^2.3.0",
"font-awesome": "^4.7.0",
"mint-ui": "^2.2.13",
"qnweb-rtc": "^4.3.1",
"qrcodejs2": "^0.0.2",
"regenerator-runtime": "^0.14.1",
"simple-peer": "^9.11.1",

View File

@ -11,15 +11,6 @@
<img src="../../static/lead/8.png" class="img8" v-if="step == 8"/>
<img src="../../static/lead/9.png" class="img9" v-if="step == 9"/>
</div> -->
<div class="cover" v-if="haveLive">
<div class="live_box" v-for="live in liveData" @click="goLive(live.room)">
<div>{{ live.title }}</div>
<br />
<div class="stream_info">
<p>開始時間{{ live.start_time }}</p>
</div>
</div>
</div>
<common-top></common-top>
<div class="all">
<div class="top">
@ -46,18 +37,16 @@
<div class="kecheng">
<div class="kecheng_biaoti">
<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 class="kechenginfo" v-for="(item, index) in course" :key="index">
<div class="kechenginfo" v-for="(item,index) in course" :key="index">
<img :src="item.thumbnail" alt="">
<div class="kechenginfoR">
<p class="kechenginfoR_bt">{{ item.name }}</p>
<p class="kechenginfoR_xbt">{{ item.description }}</p>
<p class="kechenginfoR_bt">{{item.name}}</p>
<p class="kechenginfoR_xbt">{{item.description}}</p>
<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>
</div>
@ -70,224 +59,172 @@
</template>
<script>
import CommonTop from './common/CommonTop'
import CommonFooter from "./common/CommonFooter";
import { getStore, setStore } from '@/utils/storage'
import { Toast } from "mint-ui";
export default {
import CommonTop from './common/CommonTop'
import CommonFooter from "./common/CommonFooter";
import { getStore, setStore } from '@/utils/storage'
import { Toast } from "mint-ui";
export default {
name: "Homes",
components: { CommonTop, CommonFooter },
data() {
return {
company: {},
course: [],
step: 0,
haveLive: false,
liveData: [],
components:{ CommonTop,CommonFooter },
data(){
return{
company:{},
course:[],
step: 0
}
},
created() {
created(){
},
mounted() {
mounted(){
this.getPageData();
this.getLiveStreams();
},
methods: {
goCourseDetail(id) {
this.$router.push({ path: '/courseDetail?id=' + id });
methods:{
goCourseDetail (id){
this.$router.push({path: '/courseDetail?id=' + id});
},
goUrl(url) {
this.$router.push({ path: url });
goUrl (url){
this.$router.push({path: url});
},
getPageData() {
getPageData(){
let is_lead = getStore('is_lead1');
// console.log(is_lead)
if (is_lead == 0 || is_lead == null) {
if(is_lead==0 || is_lead==null){
this.step = 1;
}
this.getData('/Home/home', { token: getStore('token') }).then(
data => {
if (data.code == 1) {
this.getData('/Home/home',{token:getStore('token')}).then(
data=>{
if(data.code==1){
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;
//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.setItem("courseName", JSON.stringify(courseName));
} else {
}else{
Toast(data.msg);
}
},
err => { })
err=>{ })
},
getLiveStreams() {
this.getData("/Membervideo/getLiveStreams", { token: getStore("token") }).then(
(data) => {
if (data.code == 1) {
if (data.data.length > 0) {
this.haveLive = true;
this.liveData = data.data;
}
}
},
(err) => {}
);
},
goLive(room) {
this.$router.push({ path: "/liveview?roomName=" + room });
},
nextLead() {
if (this.step == 9) {
nextLead(){
if (this.step == 9){
this.step = 0
// setStore('is_lead1', 1);
} else {
}else{
this.step++
}
}
}
}
}
</script>
<style lang="scss" scoped>
.all {
.all{
padding: 5rem 0 6.5rem;
}
.top {
}
.top{
width: 30rem;
margin: auto;
height: 18rem;
display: flex;
align-items: center;
img {
img{
width: 100%;
height: 15rem;
object-fit: cover;
}
}
.daohang {
}
.daohang{
width: 90%;
height: 6rem;
margin: auto;
display: flex;
justify-content: space-between;
align-items: center;
.daohang1 {
.daohang1{
width: 25%;
border-right: 1px solid #CCCCCC;
font-size: 1.35rem;
&:last-child {
font-size:1.35rem;
&:last-child{
border: none;
}
}
.liuyan1 {
.liuyan1{
border-right: none;
}
.tupian {
.tupian{
width: 2.5rem;
height: 2.5rem;
margin-bottom: 0.5rem;
}
}
.kecheng {
}
.kecheng{
width: 90%;
margin: auto;
.kecheng_biaoti {
.kecheng_biaoti{
margin: 1rem 0;
height: 3rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.kecheng_biaotiL {
font-size: 1.56rem;
font-family: MicrosoftYaHei;
font-weight: bold;
.kecheng_biaotiL{
font-size:1.56rem;
font-family:MicrosoftYaHei;
font-weight:bold;
}
.kecheng_biaotiR {
font-size: 1.25rem;
font-family: MicrosoftYaHei;
font-weight: 400;
color: #C5C5C5;
.fr {
.kecheng_biaotiR{
font-size:1.25rem;
font-family:MicrosoftYaHei;
font-weight:400;
color:#C5C5C5;
.fr{
width: 1rem;
height: 1rem;
}
}
.kechenginfo {
.kechenginfo{
padding: 2rem 0;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #CCCCCC;
>img {
>img{
width: 13rem;
height: 10rem;
object-fit: cover;
margin-right: 0.5rem;
}
}
.kechenginfoR {
.kechenginfoR{
width: 56%;
height: 10rem;
text-align: left;
position: relative;
}
.kechenginfoR_bt {
.kechenginfoR_bt{
display: block;
width: 100%;
font-size: 1.67rem;
font-family: MicrosoftYaHei;
font-weight: 400;
font-size:1.67rem;
font-family:MicrosoftYaHei;
font-weight:400;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.kechenginfoR_xbt {
.kechenginfoR_xbt{
display: block;
width: 100%;
font-size: 1.25rem;
font-family: MicrosoftYaHei;
font-weight: 400;
color: #5E5E5E;
font-size:1.25rem;
font-family:MicrosoftYaHei;
font-weight:400;
color:#5E5E5E;
margin: 1rem 0;
word-wrap: break-word;
}
.kechenginfoR_bot {
.kechenginfoR_bot{
height: 4rem;
display: flex;
justify-content: space-between;
@ -296,52 +233,29 @@ export default {
bottom: 0;
width: 100%;
}
.kechenginfoR_botL {
.kechenginfoR_botL{
color: #CCCCCC;
font-size: 1.25rem;
font-size:1.25rem;
display: flex;
justify-content: flex-start;
align-items: center;
}
.yanjing {
width: 1.5rem;
height: 1.5rem;
.yanjing{
width:1.5rem;
height:1.5rem;
margin-right: 0.5rem;
}
.kechenginfoR_botR {
width: 8rem;
height: 3rem;
background: #f2f2f2;
border-radius: 2rem;
.kechenginfoR_botR{
width:8rem;
height:3rem;
background:#f2f2f2;
border-radius:2rem;
text-align: center;
line-height: 3rem;
color: #D4A458;
font-size: 1.25rem;
font-size:1.25rem;
}
}
}
.cover {
left: 0;
top: 0;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.live_box {
background-color: white;
width: 25rem;
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
margin: 3rem;
padding: 1rem;
border-radius: 10px;
cursor: pointer;
// display: flex;
// flex-direction: column;
}
</style>

View File

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

View File

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

View File

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

View File

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

View File

@ -3,14 +3,13 @@
<back title="所有课程"></back>
<div class="kecheng">
<div class="kechenginfo" @click="goCourseDetail(item.id)" v-for="(item, index) in course" :key="index">
<div class="kechenginfo" @click="goCourseDetail(item.id)" v-for="(item,index) in course" :key="index">
<img :src="item.thumbnail" alt="">
<div class="kechenginfoR">
<p class="kechenginfoR_bt">{{ item.name }}</p>
<p class="kechenginfoR_xbt">{{ item.description }}</p>
<p class="kechenginfoR_bt">{{item.name}}</p>
<p class="kechenginfoR_xbt">{{item.description}}</p>
<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>
</div>
@ -22,121 +21,108 @@
</template>
<script>
import Back from "../common/Back";
import CommonFooter from "../common/CommonFooter";
import { getStore } from '@/utils/storage'
import { Toast } from "mint-ui";
export default {
import Back from "../common/Back";
import CommonFooter from "../common/CommonFooter";
import { getStore } from '@/utils/storage'
import { Toast } from "mint-ui";
export default {
name: "courseAll",
components: { Back, CommonFooter },
data() {
return {
course: []
components:{Back,CommonFooter},
data(){
return{
course:[]
}
},
created() {
created(){
},
mounted() {
mounted(){
this.getPageData();
},
methods: {
goCourseDetail(id) {
this.$router.push({ path: '/courseDetail?id=' + id });
methods:{
goCourseDetail (id){
this.$router.push({path: '/courseDetail?id=' + id});
},
getPageData() {
this.getData('/Home/getCourseList', { token: getStore('token'), type: 1 }).then(
data => {
if (data.code == 1) {
getPageData(){
this.getData('/Home/getCourseList',{token:getStore('token'), type: 1}).then(
data=>{
if(data.code==1){
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);
}
},
err => { })
err=>{ })
},
}
}
}
</script>
<style lang="scss" scoped>
.kecheng {
.kecheng{
padding: 5.5rem 0;
width: 90%;
margin: auto;
.kecheng_biaoti {
.kecheng_biaoti{
height: 3rem;
display: flex;
justify-content: space-between;
align-items: center;
}
.kecheng_biaotiL {
font-size: 1.56rem;
font-family: MicrosoftYaHei;
font-weight: bold;
.kecheng_biaotiL{
font-size:1.56rem;
font-family:MicrosoftYaHei;
font-weight:bold;
}
.kecheng_biaotiR {
font-size: 1.25rem;
font-family: MicrosoftYaHei;
font-weight: 400;
color: #C5C5C5;
.fr {
.kecheng_biaotiR{
font-size:1.25rem;
font-family:MicrosoftYaHei;
font-weight:400;
color:#C5C5C5;
.fr{
width: 1rem;
height: 1rem;
}
}
.kechenginfo {
.kechenginfo{
padding: 2rem 0;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #CCCCCC;
>img {
>img{
width: 13rem;
height: 10rem;
object-fit: cover;
margin-right: 0.5rem;
}
}
.kechenginfoR {
.kechenginfoR{
width: 56%;
height: 10rem;
text-align: left;
position: relative;
}
.kechenginfoR_bt {
.kechenginfoR_bt{
display: block;
width: 100%;
font-size: 1.67rem;
font-family: MicrosoftYaHei;
font-weight: 400;
font-size:1.67rem;
font-family:MicrosoftYaHei;
font-weight:400;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.kechenginfoR_xbt {
.kechenginfoR_xbt{
display: block;
width: 100%;
font-size: 1.25rem;
font-family: MicrosoftYaHei;
font-weight: 400;
color: #5E5E5E;
font-size:1.25rem;
font-family:MicrosoftYaHei;
font-weight:400;
color:#5E5E5E;
margin: 1rem 0;
word-wrap: break-word;
}
.kechenginfoR_bot {
.kechenginfoR_bot{
height: 4rem;
display: flex;
justify-content: space-between;
@ -145,30 +131,28 @@ export default {
bottom: 0;
width: 100%;
}
.kechenginfoR_botL {
.kechenginfoR_botL{
color: #CCCCCC;
font-size: 1.25rem;
font-size:1.25rem;
display: flex;
justify-content: flex-start;
align-items: center;
}
.yanjing {
width: 1.5rem;
height: 1.5rem;
.yanjing{
width:1.5rem;
height:1.5rem;
margin-right: 0.5rem;
}
.kechenginfoR_botR {
width: 8rem;
height: 3rem;
background: #f2f2f2;
border-radius: 2rem;
.kechenginfoR_botR{
width:8rem;
height:3rem;
background:#f2f2f2;
border-radius:2rem;
text-align: center;
line-height: 3rem;
color: #D4A458;
font-size: 1.25rem;
font-size:1.25rem;
}
}
}
</style>

View File

@ -272,21 +272,7 @@ export default {
(data) => {
if (data.code == 1) {
this.courseData = data.data;
this.courseData.thumbnail = this.courseData.thumbnail.replace(
"http://img",
"https://imgs"
);
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);
} else {
Toast(data.msg);

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

8743
yarn-error.log Normal file

File diff suppressed because it is too large Load Diff

4743
yarn.lock

File diff suppressed because it is too large Load Diff