Merge branch 'master' of http://git.luyuan.tk/luyuan/beelink into xbx

This commit is contained in:
luyuan 2020-10-30 14:55:59 +08:00
commit e496c3e0b3
Signed by: theluyuan
GPG Key ID: A7972FD973317FF3
30 changed files with 1618 additions and 1042 deletions

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="cont"> <div class="cont">
<div class="title"> <div class="title">
<div>上课学生</div> <div>{{lan.$t('shangkexuesheng')}}</div>
<div class="more" @click="toxq">查看详情</div> <div class="more" @click="toxq">{{lan.$t('chakanxiangqing')}}</div>
</div> </div>
<div class="info"> <div class="info">
<div class="item" v-for="(i, j) in list" :key="j"> <div class="item" v-for="(i, j) in list" :key="j">
@ -14,7 +14,7 @@
</div> </div>
</div> </div>
<div class="takehour" v-if="i.status == 1 && livestatus == 2"> <div class="takehour" v-if="i.status == 1 && livestatus == 2">
参加时长 {{lan.$t('canjiashichang')}}
<div>{{i.length}}min</div> <div>{{i.length}}min</div>
</div> </div>
<div <div
@ -22,10 +22,10 @@
v-if="i.status == 2 || (livestatus == 0 && i.status == 1)" v-if="i.status == 2 || (livestatus == 0 && i.status == 1)"
@click="quxiao(j)" @click="quxiao(j)"
> >
取消直播 {{lan.$t('quxiaozhibo')}}
</div> </div>
<div class="refuse" v-if="i.status == 3">已拒绝</div> <div class="refuse" v-if="i.status == 3">{{lan.$t('yijujue')}}</div>
</div> </div>
<div class="modal-container"> <div class="modal-container">
<a-modal <a-modal
@ -41,17 +41,17 @@
</template> </template>
<!-- 换绑手机号第一步 --> <!-- 换绑手机号第一步 -->
<div class="yuanyin"> <div class="yuanyin">
请输入您举着该学生参与直播的原因 {{lan.$t('jujueyuanyintext')}}
</div> </div>
<div class="body"> <div class="body">
<div class="jubao">拒绝原因</div> <div class="jubao">{{lan.$t('juejueyuanyin')}}</div>
<a-textarea <a-textarea
v-model:value="text" v-model:value="text"
class="text" class="text"
/> />
</div> </div>
<div class="submit-btn" @click="sum"> <div class="submit-btn" @click="sum">
确认拒绝 {{lan.$t('querenjujue')}}
</div> </div>
</a-modal> </a-modal>
</div> </div>
@ -237,6 +237,7 @@
<script lang="ts"> <script lang="ts">
import { cancellive, refusedtolive } from '@/api'; import { cancellive, refusedtolive } from '@/api';
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { defineComponent, ref, toRaw, watch } from "vue"; import { defineComponent, ref, toRaw, watch } from "vue";
export default defineComponent({ export default defineComponent({
@ -246,6 +247,7 @@ export default defineComponent({
zid:Number zid:Number
}, },
setup(props) { setup(props) {
const lan: any = useI18n();
const modalNode = () => document.getElementsByClassName('modal-container')[0] const modalNode = () => document.getElementsByClassName('modal-container')[0]
const updatePhoneVisible = ref(false) const updatePhoneVisible = ref(false)
const sid = ref(0) const sid = ref(0)
@ -291,7 +293,8 @@ export default defineComponent({
hidePhoneModal, hidePhoneModal,
sum, sum,
text, text,
toxq toxq,
lan
}; };
}, },
}); });

View File

@ -4,7 +4,7 @@
<img src="@/static/images/play.png" alt="" class="play"> <img src="@/static/images/play.png" alt="" class="play">
<div class="title"> <div class="title">
<div class="one-line-hide">{{title}}</div> <div class="one-line-hide">{{title}}</div>
<span class="lv">{{score}}</span> <span class="lv">{{score}} {{lan.$t('fen')}}</span>
</div> </div>
<div class="info"> <div class="info">
<div class="datetime"> <div class="datetime">
@ -23,13 +23,13 @@
</div> </div>
</div> </div>
<div class="state audit" v-if="status==0"> <div class="state audit" v-if="status==0">
还未开始 {{lan.$t('haiweikaishi')}}
</div> </div>
<div class="state live" v-if="status==1"> <div class="state live" v-if="status==1">
进入直播 {{lan.$t('jinruzhibo')}}
</div> </div>
<div class="state over" v-if="status==2"> <div class="state over" v-if="status==2">
查看回放 {{lan.$t('chakanhuifang')}}
</div> </div>
</div> </div>
</template> </template>
@ -135,6 +135,7 @@
</style> </style>
<script lang="ts"> <script lang="ts">
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
export default defineComponent({ export default defineComponent({
@ -169,6 +170,7 @@ export default defineComponent({
} }
}, },
setup(props){ setup(props){
const lan: any = useI18n();
function navto(){ function navto(){
let url = ''; let url = '';
switch (props.type) { switch (props.type) {
@ -187,7 +189,8 @@ export default defineComponent({
} }
} }
return { return {
navto navto,
lan
} }
} }
}) })

View File

@ -5,7 +5,7 @@
<div class="left"> <div class="left">
<div> <div>
<img src="@/static/images/livelesson.png" alt="" class="icon"> <img src="@/static/images/livelesson.png" alt="" class="icon">
<span>西班牙语</span> <span>{{lan.$t('xiabanyayu')}}</span>
</div> </div>
<div> <div>
<img src="@/static/images/livewatch.png" alt="" class="icon"> <img src="@/static/images/livewatch.png" alt="" class="icon">
@ -17,15 +17,15 @@
</div> </div>
<div> <div>
<img src="@/static/images/shoucang.png" alt="" class="icon"> <img src="@/static/images/shoucang.png" alt="" class="icon">
<span class="score">5.0</span> <span class="score">5.0{{lan.$t('fen')}}</span>
</div> </div>
</div> </div>
<div style="display: flex"> <div style="display: flex">
<div class="right" @click="bianji"> <div class="right" @click="bianji">
编辑信息 {{lan.$t('bianjixinxi')}}
</div> </div>
<div class="right" @click="kaishi"> <div class="right" @click="kaishi">
开始直播 {{lan.$t('kaishizhibo')}}
</div> </div>
</div> </div>
@ -85,6 +85,7 @@
<script lang="ts"> <script lang="ts">
import { livestart } from '@/api'; import { livestart } from '@/api';
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { defineComponent, ref } from "vue"; import { defineComponent, ref } from "vue";
export default defineComponent({ export default defineComponent({
@ -92,6 +93,7 @@ export default defineComponent({
info: Object info: Object
}, },
setup(props) { setup(props) {
const lan: any = useI18n();
console.log(props.info); console.log(props.info);
function bianji(){ function bianji(){
if(props.info != undefined){ if(props.info != undefined){
@ -110,7 +112,8 @@ export default defineComponent({
// const liveinfo = ref(props.liveinfo) // const liveinfo = ref(props.liveinfo)
return { return {
bianji, bianji,
kaishi kaishi,
lan
} }
}, },
}); });

View File

@ -12,7 +12,7 @@
<div class="item" :class="{'selitem': j == selnum, 'seltop': j == selnum - 1, 'selbottom': j == selnum + 1}"> <div class="item" :class="{'selitem': j == selnum, 'seltop': j == selnum - 1, 'selbottom': j == selnum + 1}">
<div class="route"> <div class="route">
<img :src="i.icon" alt="" class="icon"> <img :src="i.icon" alt="" class="icon">
<div class="title">{{i.name}}</div> <div class="title">{{lan.$t(i.name)}}</div>
</div> </div>
<img alt="" src="../static/images/jiantou.png" class="right"> <img alt="" src="../static/images/jiantou.png" class="right">
</div> </div>
@ -24,7 +24,7 @@
<div class="route" @click="logout"> <div class="route" @click="logout">
<img src="../static/images/tuichu.png" alt="" class="icon"> <img src="../static/images/tuichu.png" alt="" class="icon">
<div class="title"> <div class="title">
帐号退出 {{lan.$t('tuichu')}}
</div> </div>
</div> </div>
</div> </div>
@ -119,11 +119,13 @@ import { setToken } from '@/api/base';
import router from '@/router'; import router from '@/router';
import store from '@/store'; import store from '@/store';
import { saveValue } from '@/utils/common'; import { saveValue } from '@/utils/common';
import { useI18n } from '@/utils/i18n';
import { computed, defineComponent, ref } from 'vue'; import { computed, defineComponent, ref } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
export default defineComponent({ export default defineComponent({
setup(){ setup(){
const lan: any = useI18n();
interface MenuItem { interface MenuItem {
icon: string; icon: string;
sleicon: string; sleicon: string;
@ -135,37 +137,37 @@ export default defineComponent({
{ {
icon: require("../static/images/wode1.png"), icon: require("../static/images/wode1.png"),
sleicon:"", sleicon:"",
name: "我的档案", name: 'wodedangan',
route: "/mine/archives" route: "/mine/archives"
}, },
{ {
icon: require("../static/images/xiayig.png"), icon: require("../static/images/xiayig.png"),
sleicon:"", sleicon:"",
name: "发布直播", name: 'fabuzhibo',
route: "/mine/webcast" route: "/mine/webcast"
}, },
{ {
icon: require("../static/images/shipin.png"), icon: require("../static/images/shipin.png"),
sleicon:"shipin.png", sleicon:"shipin.png",
name: "上传视频", name: 'shangchuanshipin',
route: "/mine/video" route: "/mine/video"
}, },
{ {
icon: require("../static/images/yinhangka.png"), icon: require("../static/images/yinhangka.png"),
sleicon:"", sleicon:"",
name: "我的钱包", name: 'wodeqianbao',
route: "/mine/wallet" route: "/mine/wallet"
}, },
{ {
icon: require("../static/images/tongji.png"), icon: require("../static/images/tongji.png"),
sleicon:"", sleicon:"",
name: "列表统计", name: 'liebiaotongji',
route: "/mine/liststatistic" route: "/mine/liststatistic"
}, },
{ {
icon: require("../static/images/bangzhu.png"), icon: require("../static/images/bangzhu.png"),
sleicon:"", sleicon:"",
name: "关于Beelink", name: 'guanyu',
route: "/mine/aboutus" route: "/mine/aboutus"
} }
] ]
@ -216,7 +218,8 @@ export default defineComponent({
userinfo, userinfo,
logout, logout,
mouse, mouse,
tuichu tuichu,
lan
} }
} }
}) })

View File

@ -2,15 +2,16 @@
<div class="nav-bottom"> <div class="nav-bottom">
<div class="nav-container" :style="color"> <div class="nav-container" :style="color">
<div v-for="(item, index) in navArray" :key="index" class="nav-item" @click="navto(item.route)"> <div v-for="(item, index) in navArray" :key="index" class="nav-item" @click="navto(item.route)">
<div :class="item.route==nowroute?'active':''">{{ item.name }}</div> <div :class="item.route==nowroute?'active':''">{{lan.$t(item.name) }}</div>
</div> </div>
</div> </div>
<div class="copyright" :style="color">Beelink公司版权所有 20192022</div> <div class="copyright" :style="color">{{lan.$t("banquan")}}</div>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { defineComponent, onMounted, ref } from 'vue'; import { defineComponent, onMounted, ref } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
@ -19,6 +20,7 @@ export default defineComponent({
color: Object color: Object
}, },
setup(){ setup(){
const lan: any = useI18n();
interface Nav{ interface Nav{
name: string; name: string;
route: string; route: string;
@ -29,22 +31,40 @@ export default defineComponent({
console.log(routes.path) console.log(routes.path)
const navArray: Array<Nav> = [ const navArray: Array<Nav> = [
{ {
name: "直播管理", name: 'zhiboguanli',
route: "/regime/live" route: "/regime/live"
}, },
{ {
name: "视频管理", name: 'shipinguanli',
route: "/regime/video" route: "/regime/video"
}, },
{ {
name: "订阅者管理", name: 'dingyuezheguanli',
route: "/regime/subscriber" route: "/regime/subscriber"
}, },
{ {
name: "个人中心", name: 'gerenzhongxin',
route: "/mine/archives" route: "/mine/archives"
} }
] ]
// const navArray: Array<Nav> = [
// {
// name: "",
// route: "/regime/live"
// },
// {
// name: "",
// route: "/regime/video"
// },
// {
// name: "",
// route: "/regime/subscriber"
// },
// {
// name: "",
// route: "/mine/archives"
// }
// ]
function navto(url: string){ function navto(url: string){
nowroute.value=url nowroute.value=url
router.push(url) router.push(url)
@ -55,7 +75,8 @@ export default defineComponent({
return { return {
navArray, navArray,
navto, navto,
nowroute nowroute,
lan
} }
} }
}) })

View File

@ -7,7 +7,7 @@
</div> </div>
<div class="navigation"> <div class="navigation">
<div class="item" v-for="(i,j) in nav" :key="j" @click="navto(j)"> <div class="item" v-for="(i,j) in nav" :key="j" @click="navto(j)">
<div :class="i.route==nowroute?'active':''">{{i.name}}</div> <div :class="i.route==nowroute?'active':''">{{lan.$t(i.name)}}</div>
</div> </div>
</div> </div>
<div style="width: 100%"></div> <div style="width: 100%"></div>
@ -261,19 +261,19 @@ export default defineComponent({
} }
const nav: Array<Nav> = [ const nav: Array<Nav> = [
{ {
name: lan.$t('zhiboguanli'), name: 'zhiboguanli',
route: "/regime/live" route: "/regime/live"
}, },
{ {
name: lan.$t('shipinguanli'), name: 'shipinguanli',
route: "/regime/video" route: "/regime/video"
}, },
{ {
name: lan.$t("dingyuezheguanli"), name: 'dingyuezheguanli',
route: "/regime/subscriber" route: "/regime/subscriber"
}, },
{ {
name: lan.$t("gerenzhongxin"), name: 'gerenzhongxin',
route: "/mine/archives" route: "/mine/archives"
} }
] ]
@ -303,6 +303,7 @@ export default defineComponent({
languagelist.value=await getlanguages() languagelist.value=await getlanguages()
console.log(routes.path) console.log(routes.path)
nowroute.value=routes.path nowroute.value=routes.path
lan.locale.value = userinfo.value.languageValue
}) })
function zonechange(e?: any){ function zonechange(e?: any){

View File

@ -11,10 +11,10 @@
</div> </div>
</div> </div>
<div class="num">{{(score+'').split('.')[1]?score:score+'.0'}}</div> <div class="num">{{(score+'').split('.')[1]?score:score+'.0'}} {{lan.$t('fen')}}</div>
</div> </div>
<div class="all" @click="findall(replyid)" > <div class="all" @click="findall(replyid)" >
<span>查看所有回复</span> <span>={{lan.$t('suoyouhuifu')}}</span>
<img src="@/static/images/arrowdownblue.png" alt=""> <img src="@/static/images/arrowdownblue.png" alt="">
</div> </div>
</div> </div>
@ -23,7 +23,7 @@
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="date">{{date}}</div> <div class="date">{{date}}</div>
<div class="reply" @click="reply(username)">回复</div> <div class="reply" @click="reply(username)">{{lan.$t('huifu ')}}</div>
</div> </div>
<div class="huifu" v-if="ifshow"> <div class="huifu" v-if="ifshow">

View File

@ -15,7 +15,7 @@
回复 回复
</div> --> </div> -->
<div class="del" @click="del(replyid)" v-if="parseInt(memberid)==myid"> <div class="del" @click="del(replyid)" v-if="parseInt(memberid)==myid">
删除 {{lan.$t('shanchu')}}
</div> </div>
</div> </div>
@ -99,6 +99,7 @@
<script lang="ts"> <script lang="ts">
import { delreply } from '@/api'; import { delreply } from '@/api';
import store from '@/store'; import store from '@/store';
import { useI18n } from '@/utils/i18n';
import { defineComponent, ref } from 'vue'; import { defineComponent, ref } from 'vue';
export default defineComponent({ export default defineComponent({
@ -126,6 +127,7 @@ export default defineComponent({
} }
}, },
setup(prop,context){ setup(prop,context){
const lan: any = useI18n();
const myid=ref<number>(store.state.userinfo.memberid) const myid=ref<number>(store.state.userinfo.memberid)
function reply(e?: string){ function reply(e?: string){
console.log(155) console.log(155)
@ -144,7 +146,8 @@ export default defineComponent({
return { return {
reply, reply,
myid, myid,
del del,
lan
} }
} }
}) })

View File

@ -1,49 +1,47 @@
<template> <template>
<div class="cont"> <div class="cont">
<div class="title">视频数据</div> <div class="title">{{lan.$t('shipinshuju')}}</div>
<div class="info"> <div class="info">
<div class="item"> <div class="item">
<img src="@/static/images/livewatch.png" alt="" /> <img src="@/static/images/livewatch.png" alt="" />
<span> 上传时间 </span> <span> {{lan.$t('shangchuanshijian')}} </span>
<span>{{date}}</span> <span>{{date}}</span>
</div> </div>
<div class="item"> <div class="item">
<img src="@/static/images/watch.png" alt="" /> <img src="@/static/images/watch.png" alt="" />
<span>播放量</span> <span>{{lan.$t('bofangliang')}}</span>
<span> {{watch}}</span> <span> {{watch}}</span>
</div> </div>
<div class="item"> <div class="item">
<img src="@/static/images/share.png" alt="" /> <img src="@/static/images/share.png" alt="" />
<span>转发量</span> <span>{{lan.$t('zhuanfaliang')}}</span>
<span>{{share}}</span> <span>{{share}}</span>
</div> </div>
<div class="item item1" v-if="status==0"> <div class="item item1" v-if="status==0">
<span>状态</span> <span>{{lan.$t('zhuangtai')}}</span>
<span class="status">正在审核中情耐心等待</span> <span class="status">{{lan.$t('shenheing')}}</span>
</div> </div>
<div class="item item1" v-if="status==2"> <div class="item item1" v-if="status==2">
<span>状态</span> <span>{{lan.$t('zhuangtai')}}</span>
<span class="status1">审核未通过</span> <span class="status1">{{lan.$t('shenheweitongguo')}}</span>
</div> </div>
<div class="item item1" v-if="status==1"> <div class="item item1" v-if="status==1">
<span style="flex-shrink:0">原因</span> <span style="flex-shrink:0">{{lan.$t('yuanyin')}}</span>
<span class="status">您的视频中含有大量敏感词汇请修改后再次上传感谢您对Beelink的技术支持 </span> <span class="status"> {{lan.$t('yuanyintext')}} </span>
</div> </div>
</div> </div>
<div class="button"> <div class="button">
<div class="modify" @click="update(videoid)">修改该视频</div> <div class="modify" @click="update(videoid)">{{lan.$t('xiugaishipin')}}</div>
<div class="del" @click="drop(videoid)">删除该视频</div> <div class="del" @click="drop(videoid)">{{lan.$t('shanchushipin')}}</div>
<a-modal <a-modal
title="确认删除" title="确认删除"
v-model:visible="visible" v-model:visible="visible"
:confirm-loading="confirmLoading" :confirm-loading="confirmLoading"
@ok="handleOk" @ok="handleOk"
okText="确定"
cancelText="取消"
> >
<p>您确认删除该视频吗</p> <p>{{lan.$t('querenshanchu')}}</p>
</a-modal> </a-modal>
</div> </div>
</div> </div>
@ -118,6 +116,7 @@
<script lang="ts"> <script lang="ts">
import { videodel } from '@/api'; import { videodel } from '@/api';
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { defineComponent, ref } from "vue"; import { defineComponent, ref } from "vue";
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
@ -140,6 +139,7 @@ export default defineComponent({
} }
}, },
setup(){ setup(){
const lan: any = useI18n();
console.log(1) console.log(1)
const visible = ref(false); const visible = ref(false);
const confirmLoading = ref(false); const confirmLoading = ref(false);
@ -166,7 +166,8 @@ export default defineComponent({
update, update,
confirmLoading, confirmLoading,
visible, visible,
handleOk handleOk,
lan
} }
} }
}); });

View File

@ -24,13 +24,13 @@
</div> </div>
</div> </div>
<div class="state audit" v-if="status==0"> <div class="state audit" v-if="status==0">
审核中 {{lan.$t('shenhezhong')}}
</div> </div>
<div class="state audit fail" v-if="status==2"> <div class="state audit fail" v-if="status==2">
未通过 {{lan.$t('weitongguo')}}
</div> </div>
<div class="state audit" v-if="status==1"> <div class="state audit" v-if="status==1">
已发布 {{lan.$t('yifabu')}}
</div> </div>
</div> </div>
</template> </template>
@ -130,6 +130,7 @@
</style> </style>
<script lang="ts"> <script lang="ts">
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
export default defineComponent({ export default defineComponent({
@ -167,12 +168,14 @@ export default defineComponent({
} }
}, },
setup() { setup() {
const lan: any = useI18n();
function navto(e: number){ function navto(e: number){
router.push("/regime/videoinfo?id="+e) router.push("/regime/videoinfo?id="+e)
} }
return { return {
navto, navto,
lan
} }
} }
}) })

View File

@ -2,10 +2,10 @@
<div class="review"> <div class="review">
<div class="top"> <div class="top">
<div class="title"> <div class="title">
该视频评价 {{lan.$t('shipinpingjia')}}
<span>8.0</span> <span>8.0{{lan.$t('fen')}}</span>
</div> </div>
<div class="score">8.0</div> <div class="score">8.0{{lan.$t('fen')}}</div>
</div> </div>
<div class="list" v-for="(i,j) in reviewlist.data" :key="j" > <div class="list" v-for="(i,j) in reviewlist.data" :key="j" >
<ReviewItem <ReviewItem
@ -25,8 +25,8 @@
<div class="reply"> <div class="reply">
<span v-if="uinfo.name">@{{uinfo.name}}</span> <span v-if="uinfo.name">@{{uinfo.name}}</span>
<a-textarea v-model:value="commentval" placeholder="Basic usage" :rows="4" /> <a-textarea v-model:value="commentval" :placeholder="lan.$t('shuruliuyan')" :rows="4" />
<div class="send" @click="send">发表留言</div> <div class="send" @click="send">{{lan.$t('fabiaoliuyan')}}</div>
</div> </div>
</div> </div>
</template> </template>
@ -93,6 +93,7 @@
<script lang="ts"> <script lang="ts">
import { addcomment, getcommentlist, videodetail } from '@/api'; import { addcomment, getcommentlist, videodetail } from '@/api';
import store from '@/store'; import store from '@/store';
import { useI18n } from '@/utils/i18n';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { defineComponent, onMounted, ref, toRaw } from 'vue'; import { defineComponent, onMounted, ref, toRaw } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
@ -109,6 +110,7 @@ export default defineComponent({
} }
}, },
setup(prop,context){ setup(prop,context){
const lan: any = useI18n();
const reviewlist=ref({}) const reviewlist=ref({})
const commentval=ref<string>('') const commentval=ref<string>('')
const uinfo=ref<any>({}) const uinfo=ref<any>({})
@ -166,7 +168,8 @@ export default defineComponent({
replylist, replylist,
haslist, haslist,
reviewlist, reviewlist,
refresh refresh,
lan
} }

View File

@ -1,28 +1,3 @@
export default { export default {
zhiboguanli: "直播管理",
shipinguanli: "视频管理",
dingyuezheguanli: "订阅者管理",
gerenzhongxin: "个人中心",
rili: "Date",
quanbuzhibo: "全部直播",
weikaishi: "未开始",
yijieshu: "已结束",
zhibosousuo: "请输入想要搜索的直播标题",
haiweikaishi: "还未开始",
yijueshi: "已结束",
jinruzhibo: "进入直播",
quanbushipin: "全部视频",
shenhezhong: "审核中",
weitongguo: "未通过",
yifabu: "已发布",
shipinsousuo: "请输入想要搜索的直播标题",
wodedingyuezhe: "我的订阅者",
xingming: "姓名",
suozaiguojia: "所在国家",
nianling: "年龄",
xueshengmuyu: "学生母语",
xingqudian: "兴趣点",
yuyandengji: "语言等级",
canyupingtaishichang: "参与平台直播总时长",
sousuoxuesheng: "请输入想要搜索的学生姓名"
} }

View File

@ -11,6 +11,7 @@ export default {
haiweikaishi: "还未开始", haiweikaishi: "还未开始",
yijueshi: "已结束", yijueshi: "已结束",
jinruzhibo: "进入直播", jinruzhibo: "进入直播",
chakanhuifang:"查看回放",
quanbushipin: "全部视频", quanbushipin: "全部视频",
shenhezhong: "审核中", shenhezhong: "审核中",
weitongguo: "未通过", weitongguo: "未通过",
@ -28,6 +29,8 @@ export default {
huanying:"您好,欢迎来到", huanying:"您好,欢迎来到",
beelink:"Beelink", beelink:"Beelink",
meiyouzhanghao:"还没有账号?", meiyouzhanghao:"还没有账号?",
yiyouzhanghao:"已有账号?",
qudenglu:"去登录",
chengweilaoshi:"成为一名Beelink老师", chengweilaoshi:"成为一名Beelink老师",
shoujidenglu:"手机号登录", shoujidenglu:"手机号登录",
mimadenglu:"账号密码登录", mimadenglu:"账号密码登录",
@ -47,6 +50,204 @@ export default {
kaiqishenghuo:"Beelink 开启您的美好学习生活", kaiqishenghuo:"Beelink 开启您的美好学习生活",
guanyubeelink:"关于 Beelink", guanyubeelink:"关于 Beelink",
guanyuneirong:" Beelink平台拥有数千名优秀老师丰富的教育经验和有趣的课堂环境一对一辅导平台的教务管理、线上课堂、线下课堂、助学互动课程回放等多项教学功能让您利用碎片时间轻轻松松学会各种语言。", guanyuneirong:" Beelink平台拥有数千名优秀老师丰富的教育经验和有趣的课堂环境一对一辅导平台的教务管理、线上课堂、线下课堂、助学互动课程回放等多项教学功能让您利用碎片时间轻轻松松学会各种语言。",
liaojiegengduo:"了解更多" liaojiegengduo:"了解更多",
xiayibu:"下一步",
tongyixieyi:"勾选表示同意 《用户注册协议和隐私政策》",
shezhimima:"设置密码",
shurumimatwo:"请再次输入您的密码",
shuruxingming:"请输入您的姓名",
youxiang:"邮箱",
shuruyouxiang:"请输入您的邮箱",
muyu:"母语",
shurumuyu:"请输入您的母语",
jiaoshou:"教授",
xuanzejiaoshou:"请选择您的教授",
lijizhuce:"立刻注册",
wanchengzhuce:"您已完成注册",
qudangan:"恭喜您注册成功,点击跳转到我的档案页面",
yanzhengshouji:"验证手机号",
tianxiexinxi:"填写帐号信息",
fanhuishangyibu:"返回上一步",
zhucewancheng:"帐号注册完成",
mimachongzhi:"密码重置",
xiangqimima:"想起密码?",
zhanghuming:"账户名",
chongzhimima:"重置密码",
chongzhishurumima:"请输入您要设置的密码",
querenmima:"确认密码",
querenchongzhi:"确认重置",
wanchengchongzhi:"您已完成密码重置",
chongzhichenggong:"恭喜您重置密码成功,点击跳转到登录页面",
shibiezhanghao:"识别账号",
yanzhengxinxi:"验证账号信息,重置密码",
chongzhiwancheng:"密码重置完成",
xiugaitouxiang:"修改头像",
xiugai:"修改",
shuruxinnicheng:"请输入新的昵称",
jibenxinxi:"基本信息",
laiziguojia:"来自国家",
juzhudi:"居住地",
shurujuzhudi:"输入居住地",
wohaihuishuo:"我还会说",
shuliandu:"熟练度",
jixutianjia:"继续添加",
xindemuyu:"请输入新的母语",
duanshipin:"短视频",
shipinyaoqiu:"视频要求:",
shipinyaoqiu1:"上传视频时间要求为30s之内",
shipinyaoqiu2:"支持文件大小100M",
shipinyaoqiu3:"文件扩展名fiv、mp4…",
ziwojieshao:"自我介绍",
lianxifangshi:"联系方式",
genghuanshoujihao:"更换手机号",
xitongshezhi:"系统设置",
shiqu:"时区",
huobi:"货币",
yuyan:"语言",
wanchengrenzheng:"请完成以下认证",
shuru:"请输入",
shoudaodeyzm:"收到的验证短信码",
shoujiyanzhengma:"手机验证码",
huoquyanzhengma:"获取验证码",
bangdingxinhaoma:"完成以下操作,绑定新号码",
bangdingshouji:"绑定手机",
xiugaizhanghaomima:"完成以下操作,修改账号密码",
yuanmima:"原密码",
xinmima:"新密码",
xinmimatwo:"确认新密码",
xiugaimima:"修改密码",
baocun:"保存信息",
gerenjieshao:"请输入个人介绍",
shangchuanshipin:"上传视频",
shipinbiaoti:"视频标题",
shurushipinbiaoti:"请输入您的视频标题",
shipinfengmian:"视频封面",
xuanzeshipin:"选择视频",
shipinjianjie:"视频简介",
shurushipinjianjie:"请输入您的视频简介",
zhiboxinxi:"直播信息",
zhibobiaoti:"直播标题",
shuruzhibobiaoti:"请输入您的直播标题",
zhibofengmian:"直播封面",
shipinjieshao:"视频介绍",
kaishishijian:"开始时间",
shezhikaishishijian:"请设置您的开始时间",
zhiboshichang:"直播时长",
shuruzhiboshijian:"请输入直播时间",
fenzhong:"分钟",
zhiborenshu:"直播人数",
shuruzhiborenshu:"请输入直播人数",
zhibojianjie:"直播简介",
shuruzhibojianjie:"请输入您的直播简介",
fabuzhibo:"发布直播",
wuzhibozige:"您尚未获得直播资格",
yijianfankui:"意见反馈",
fen:"分",
shipinshuju:"视频数据",
shangchuanshijian:"上传时间:",
bofangliang:"播放量",
zhuanfaliang:"转发量",
zhuangtai:"状态",
shenheing:"正在审核中,情耐心等待",
shenheweitongguo:"审核未通过",
yuanyin:"原因",
yuanyintext:"您的视频中含有大量敏感词汇请修改后再次上传感谢您对Beelink的技术支持",
xiugaishipin:"修改该视频",
shanchushipin:"删除该视频",
querenshanchu:"您确认删除该视频吗?",
shipinpingjia:"该视频评价",
fabiaoliuyan:"发表留言",
shuruliuyan:"请输入您的看法和见解",
suoyouhuifu:"查看所有回复",
huifu:"回复",
shanchu:"删除",
xiabanyayu:"西班牙语",
bianjixinxi:"编辑信息",
kaishizhibo:"开始直播",
shangkexuesheng:"上课学生",
chakanxiangqing:"查看详情",
canjiashichang:"参加时长",
quxiaozhibo:"取消直播",
yijujue:"已拒绝",
jujueyuanyintext:"请输入您拒绝该学生参与直播的原因",
juejueyuanyin:"拒绝原因",
querenjujue:"确认拒绝",
zhiboyemian:"直播页面",
querenguanbi:"您确认关闭直播吗",
dingyuezhe:"我的订阅者",
sousuodingyue:"请输入想要搜索的学生姓名",
wodeqianbao:"我的钱包",
lijitixian:"立即提现",
tixianjilu:"提现记录",
bangdingyonghu:"绑定用户",
zhanghuyue:"账户余额",
tianjiazhanghu:"添加新的账户",
yinhangka:"银行卡",
zhifubao:"支付宝",
weixin:"微信",
zhanghao0:"帐号",
tixianzhanghu:"提现到指定账户",
yue:"余额",
xuanzezhanghu:"选择账户",
tixianjine:"提现金额",
quanbujine:"全部金额",
tixianzhu:"注每笔提现收取0.1%服务费最低¥0.1",
yueshu:"您的余额只有",
zuiditixian:"最低提现金额¥100",
mingxichaxun:"明细查询",
kaishiriqi:"请选择开始日期",
jieshuriqi:"请选择结束日期",
zhanghu:"账户",
tijiaoriqi:"提交日期",
jine:"金额",
caozuo:"操作",
jiaoyimingxixiangqing:"交易明细详情",
leixing:"类型",
zhiboshouru:"直播收入",
tixian:"提现",
houtaichongzhi:"后台充值",
liushuihao:"流水号",
riqi:"日期",
laiyuan:"来源",
fanhui:"返回",
tixianjiluxiangqing:"提现记录详情",
daozhangjine:"到帐金额",
shouxufei:"手续费",
tixianzhuangtai:"提现状态",
yuanyinmiaoshu:"原因描述",
mingcheng:"名称",
shoukuanzhanghu:"收款账户",
quanbu:"全部",
shouru:"收入",
zhichu:"支出",
xinzengzhanghu:"新增账户",
shurukahao:"请输入收款人储蓄卡号",
kahao:"卡号",
kaihuhang:"开户行",
shurukaihuhang:"请输入开户行",
shuruzhifubao:"请输入支付宝账号/密码",
saomabangding:"扫码绑定",
zhu:"注",
weixinbangding:"打开手机微信扫描左侧二维码 进行微信账户绑定",
yinhangzhanghu:"银行账户",
yinhangbic:"银行BIC码",
tijiao:"提交",
zhiboliebiao:"直播列表",
zhibokecheng:"直播课程",
canyurenshu:"参与人数",
kechengpingfen:"课程评分",
shipinliebiao:'视频列表',
fabushipin:"发布视频",
zongguankanshu:"总观看数",
pingjundefen:"平均得分",
dingyueliebiao:"订阅列表",
dingyuerenshu:"订阅人数",
fuwutiaokuan:"服务条款",
yinsizhengce:"隐私政策",
shurufankui:"请输入您的意见反馈",
tijiaofankui:"提交反馈",
tuichu:"帐号退出",
wodedangan:"我的档案",
liebiaotongji:"列表统计",
guanyu:"关于Beelink"
} }

View File

@ -3,89 +3,89 @@
<div class="box"> <div class="box">
<div :class="stepnow != 2 ? 'left' : 'left left1'"> <div :class="stepnow != 2 ? 'left' : 'left left1'">
<div class="title"> <div class="title">
<span class="orgname">Beelink</span>密码重置 <span class="orgname">{{lan.$t('beelink')}}</span>{{lan.$t('mimachongzhi')}}
</div> </div>
<div v-if="stepnow == 1"> <div v-if="stepnow == 1">
<div class="nosign"> <div class="nosign">
想起密码 {{lan.$t('xiangqimima')}}
<span class="tosign"><router-link to="/"> 去登录 </router-link></span> <span class="tosign"><router-link to="/"> {{lan.$t('qudenglu')}} </router-link></span>
</div> </div>
<a-form :layout="formLayout"> <a-form :layout="formLayout">
<a-form-item label="账户名" class="form-item"> <a-form-item :label="lan.$t('zhanghuming')" class="form-item">
<a-input class="shuru" placeholder="请输入您的邮箱或者手机号" v-model:value="uinfo.phone"/> <a-input class="shuru" :placeholder="lan.$t('shuruzhanghao')" v-model:value="uinfo.phone"/>
</a-form-item> </a-form-item>
<div class="submit" @click="next(2)">下一步</div> <div class="submit" @click="next(2)">{{lan.$t('xiayibu')}}</div>
</a-form> </a-form>
</div> </div>
<div v-if="stepnow == 2"> <div v-if="stepnow == 2">
<div class="nosign"> <div class="nosign">
已有账号 {{lan.$t('yiyouzhanghao')}}
<span class="tosign"><router-link to="/"> 去登录 </router-link></span> <span class="tosign"><router-link to="/"> {{lan.$t('qudenglu')}} </router-link></span>
</div> </div>
<a-form :layout="formLayout"> <a-form :layout="formLayout">
<div class="signform"> <div class="signform">
<div style="display:flex"> <div style="display:flex">
<a-form-item label="手机号" class="shuru"> <a-form-item :label="lan.$t('shoujihao')" class="shuru">
<div>{{uinfo.phone}}</div> <div>{{uinfo.phone}}</div>
</a-form-item> </a-form-item>
<a-form-item label="验证码" class="form-item yzm"> <a-form-item :label="lan.$t('yanzhengma')" class="form-item yzm">
<a-input-group compact> <a-input-group compact>
<div class="getcode" @click="getcode"> <div class="getcode" @click="getcode">
点击获取验证码{{ time == 60 ? "" : "(" + time + ")" }} {{lan.$t('dianjihuoquyzm')}} {{ time == 60 ? "" : "(" + time + ")" }}
</div> </div>
<div class="line"></div> <div class="line"></div>
<a-input style="width: 50%" placeholder="请输入您的验证码" v-model:value="uinfo.code"/> <a-input style="width: 50%" :placeholder="lan.$t('shuruyzm')" v-model:value="uinfo.code"/>
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
</div> </div>
<div style="display:flex"> <div style="display:flex">
<a-form-item label="设置密码" class="form-item"> <a-form-item :label="lan.$t('chongzhimima')" class="form-item">
<a-input class="shuru" placeholder="请再次输入您的密码" type="password" v-model:value="uinfo.password"/> <a-input class="shuru" :placeholder="lan.$t('chongzhishurumima')" type="password" v-model:value="uinfo.password"/>
</a-form-item> </a-form-item>
<a-form-item label="设置密码" class="form-item"> <a-form-item :label="lan.$t('querenmima')" class="form-item">
<a-input class="shuru" placeholder="请再次输入您的密码" type="password" v-model:value="uinfo.repassword"/> <a-input class="shuru" :placeholder="lan.$t('shurumimatwo')" type="password" v-model:value="uinfo.repassword"/>
</a-form-item> </a-form-item>
</div> </div>
</div> </div>
<div class="submit" @click="next(3)">确认重置</div> <div class="submit" @click="next(3)">{{lan.$t('querenchongzhi')}}</div>
<div class="orginfo">Beelink公司版权所有 20192022</div> <div class="orginfo">{{lan.$t('banquan')}}</div>
</a-form> </a-form>
</div> </div>
<div v-if="stepnow == 3"> <div v-if="stepnow == 3">
<div class="nosign">您已完成密码重置</div> <div class="nosign">{{lan.$t('wanchengchongzhi')}}</div>
<img src="@/static/images/success.png" alt="" class="success"> <img src="@/static/images/success.png" alt="" class="success">
<div class="ale" @click="tologin">恭喜您重置密码成功点击跳转到登录页面</div> <div class="ale" @click="tologin">{{lan.$t('chongzhichenggong')}}</div>
</div> </div>
</div> </div>
<div :class="stepnow != 2 ? 'right' : 'right right1'"> <div :class="stepnow != 2 ? 'right' : 'right right1'">
<div class="steps"> <div class="steps">
<div class="step"> <div class="step">
<div :class="stepnow == 1 ? 'circle step1' : 'circle'">01</div> <div :class="stepnow == 1 ? 'circle step1' : 'circle'">01</div>
<div :class="stepnow == 1 ? 'stepnow' : ''">识别账号</div> <div :class="stepnow == 1 ? 'stepnow' : ''">{{lan.$t('shibiezhanghao')}}</div>
</div> </div>
<div class="stepline"></div> <div class="stepline"></div>
<div class="step"> <div class="step">
<div :class="stepnow == 2 ? 'circle step1' : 'circle'">02</div> <div :class="stepnow == 2 ? 'circle step1' : 'circle'">02</div>
<div :class="stepnow == 2 ? 'stepnow' : ''">验证账号信息重置密码</div> <div :class="stepnow == 2 ? 'stepnow' : ''">{{lan.$t('yanzhengxinxi')}}</div>
<div class="back" @click="next(1)" v-if="stepnow==2"> <div class="back" @click="next(1)" v-if="stepnow==2">
返回上一步 {{lan.$t('fanhuishangyibu')}}
</div> </div>
</div> </div>
<div class="stepline"></div> <div class="stepline"></div>
<div class="step"> <div class="step">
<div :class="stepnow == 3 ? 'circle step1' : 'circle'">03</div> <div :class="stepnow == 3 ? 'circle step1' : 'circle'">03</div>
<div :class="stepnow == 3 ? 'stepnow' : ''">密码重置完成</div> <div :class="stepnow == 3 ? 'stepnow' : ''">{{lan.$t('chongzhiwancheng')}}</div>
</div> </div>
</div> </div>
<div class="icons" v-if="stepnow == 2"> <div class="icons" v-if="stepnow == 2">
@ -101,12 +101,14 @@
<script lang="ts"> <script lang="ts">
import { checksmscode, checkuser, editpassword, sendsms } from '@/api'; import { checksmscode, checkuser, editpassword, sendsms } from '@/api';
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { defineComponent, ref, toRaw } from "vue"; import { defineComponent, ref, toRaw } from "vue";
export default defineComponent({ export default defineComponent({
name: "Sign", name: "Sign",
components: {}, components: {},
setup() { setup() {
const lan: any = useI18n();
const formLayout = { const formLayout = {
labelCol: 4, labelCol: 4,
wrapperCol: 14, wrapperCol: 14,
@ -219,7 +221,8 @@ export default defineComponent({
stepnow, stepnow,
next, next,
uinfo, uinfo,
tologin tologin,
lan
}; };
}, },
}); });

View File

@ -4,48 +4,80 @@
<div class="box"> <div class="box">
<div :class="stepnow != 2 ? 'left' : 'left left1'"> <div :class="stepnow != 2 ? 'left' : 'left left1'">
<div class="title"> <div class="title">
您好欢迎来到 <span class="orgname">Beelink</span> {{ lan.$t("huanying") }}
<span class="orgname">{{ lan.$t("beelink") }}</span>
</div> </div>
<div v-if="stepnow == 1"> <div v-if="stepnow == 1">
<div class="nosign"> <div class="nosign">
已有账号 {{ lan.$t("yiyouzhanghao") }}
<span class="tosign" @click="navto('/')"> 去登录 </span> <span class="tosign" @click="navto('/')">
{{ lan.$t("qudenglu") }}
</span>
</div> </div>
<a-form :layout="formLayout"> <a-form :layout="formLayout">
<a-form-item label="手机号" class="form-item"> <a-form-item
:label="lan.$t('shoujihao')"
class="form-item"
>
<a-input-group compact> <a-input-group compact>
<a-select <a-select
:default-value="quhaolist[0].code"
size="small"
@change="getquhao"
class="getcode"
style="width: 50%"
>
<a-select-option
v-for="(i, j) in quhaolist"
:key="j"
:value="i.code"
>
{{ i.name }}+{{ i.code }}
</a-select-option>
<!-- <a-select-option value="Jiangsu"> Jiangsu </a-select-option> -->
</a-select>
<!-- <a-select
class="getcode" class="getcode"
style="width: 50%" style="width: 50%"
v-model:value="phone.quhao" v-model:value="phone.quhao"
> >
<a-select-option value="86"> 中国+0086 </a-select-option> <a-select-option value="86">
<a-select-option value="Jiangsu"> Jiangsu </a-select-option> 中国+0086
</a-select> </a-select-option>
<a-select-option value="Jiangsu">
Jiangsu
</a-select-option>
</a-select> -->
<div class="line"></div> <div class="line"></div>
<a-input <a-input
v-model:value="phone.phone" v-model:value="phone.phone"
style="width: 50%" style="width: 50%"
placeholder="请输入您的手机号" :placeholder="lan.$t('shurushouji')"
/> />
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
<a-form-item label="验证码" class="form-item"> <a-form-item :label="lan.$t('yanzhengma')" class="form-item">
<a-input-group compact> <a-input-group compact>
<div class="getcode" style="width: 50%" @click="getcode"> <div
点击获取验证码{{ time == 60 ? "" : "(" + time + ")" }} class="getcode"
style="width: 50%"
@click="getcode"
>
{{lan.$t('dianjihuoquyzm')}} {{
time == 60 ? "" : "(" + time + ")"
}}
</div> </div>
<div class="line"></div> <div class="line"></div>
<a-input <a-input
v-model:value="phone.code" v-model:value="phone.code"
style="width: 50%" style="width: 50%"
placeholder="请输入您的验证码" :placeholder="lan.$t('shuruyzm')"
/> />
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
<div class="submit" @click="next(2)">下一步</div> <div class="submit" @click="next(2)">{{lan.$t('xiayibu')}}</div>
<div class="agreement" @click="agree"> <div class="agreement" @click="agree">
<div class="ifagree"> <div class="ifagree">
<img <img
@ -55,52 +87,52 @@
v-if="ifagree" v-if="ifagree"
/> />
</div> </div>
勾选表示同意 用户注册协议和隐私政策 {{lan.$t('tongyixieyi')}}
</div> </div>
</a-form> </a-form>
</div> </div>
<div v-if="stepnow == 2"> <div v-if="stepnow == 2">
<div class="nosign"> <div class="nosign">
已有账号 {{lan.$t('yiyouzhanghao')}}
<span class="tosign" @click="navto('/')"> 去登录 </span> <span class="tosign" @click="navto('/')"> {{lan.$t('qudenglu')}} </span>
</div> </div>
<a-form :layout="formLayout"> <a-form :layout="formLayout">
<div class="signform"> <div class="signform">
<a-form-item label="设置密码" class="form-item"> <a-form-item :label="lan.$t('shezhimima')" class="form-item">
<a-input <a-input
class="shuru" class="shuru"
placeholder="请输入您的密码" :placeholder="lan.$t('shurumima')"
type="password" type="password"
v-model:value="userinfo.pass" v-model:value="userinfo.pass"
/> />
</a-form-item> </a-form-item>
<a-form-item label="设置密码" class="form-item"> <a-form-item :label="lan.$t('shezhimima')" class="form-item">
<a-input <a-input
class="shuru" class="shuru"
placeholder="请再次输入您的密码" :placeholder="lan.$t('shurumimatwo')"
type="password" type="password"
v-model:value="userinfo.passtow" v-model:value="userinfo.passtow"
/> />
</a-form-item> </a-form-item>
<a-form-item label="姓名" class="form-item"> <a-form-item :label="lan.$t('xingming')" class="form-item">
<a-input <a-input
class="shuru" class="shuru"
placeholder="请输入您的姓名" :placeholder="lan.$t('shuruxingming')"
v-model:value="userinfo.name" v-model:value="userinfo.name"
/> />
</a-form-item> </a-form-item>
<a-form-item label="邮箱" class="form-item"> <a-form-item :label="lan.$t('youxiang')" class="form-item">
<a-input <a-input
class="shuru" class="shuru"
placeholder="请输入您的邮箱" :placeholder="lan.$t('shuruyouxiang')"
v-model:value="userinfo.emil" v-model:value="userinfo.emil"
/> />
</a-form-item> </a-form-item>
<a-form-item label="母语" class="form-item"> <a-form-item :label="lan.$t('muyu')" class="form-item">
<a-input <a-input
class="shuru" class="shuru"
placeholder="请输入您的母语" :placeholder="lan.$t('shurumuyu')"
v-model:value="userinfo.muyu" v-model:value="userinfo.muyu"
/> />
</a-form-item> </a-form-item>
@ -109,7 +141,7 @@
v-model:value="userinfo.jiaoshou" v-model:value="userinfo.jiaoshou"
class="getcode" class="getcode"
style="color: #111" style="color: #111"
placeholder="请选择您的教授" :placeholder="lan.$t('xuanzejiaoshou')"
> >
<a-select-option <a-select-option
v-for="(item, index) in willsay" v-for="(item, index) in willsay"
@ -122,43 +154,63 @@
</a-form-item> </a-form-item>
</div> </div>
<div class="submit" @click="next(3)">立刻注册</div> <div class="submit" @click="next(3)">{{lan.$t('lijizhuce')}}</div>
<div class="orginfo">Beelink公司版权所有 20192022</div> <div class="orginfo">{{lan.$t('banquan')}}</div>
</a-form> </a-form>
</div> </div>
<div v-if="stepnow == 3"> <div v-if="stepnow == 3">
<div class="nosign">您已完成注册</div> <div class="nosign">{{lan.$t('您已完成注册')}}</div>
<img src="@/static/images/success.png" alt="" class="success" /> <img
src="@/static/images/success.png"
alt=""
class="success"
/>
<div class="ale" @click="navto('/mine/archives')"> <div class="ale" @click="navto('/mine/archives')">
恭喜您注册成功点击跳转到我的档案页面 {{lan.$t('qudangan')}}
</div> </div>
</div> </div>
</div> </div>
<div :class="stepnow != 2 ? 'right' : 'right right1'"> <div :class="stepnow != 2 ? 'right' : 'right right1'">
<div class="steps"> <div class="steps">
<div class="step"> <div class="step">
<div :class="stepnow == 1 ? 'circle step1' : 'circle'">01</div> <div :class="stepnow == 1 ? 'circle step1' : 'circle'">
<div :class="stepnow == 1 ? 'stepnow' : ''">验证手机号</div> 01
</div>
<div :class="stepnow == 1 ? 'stepnow' : ''">
{{lan.$t('yanzhengshouji')}}
</div>
</div> </div>
<div class="stepline"></div> <div class="stepline"></div>
<div class="step"> <div class="step">
<div :class="stepnow == 2 ? 'circle step1' : 'circle'">02</div> <div :class="stepnow == 2 ? 'circle step1' : 'circle'">
<div :class="stepnow == 2 ? 'stepnow' : ''">填写帐号信息</div> 02
</div>
<div :class="stepnow == 2 ? 'stepnow' : ''">
{{lan.$t('tianxiexinxi')}}
</div>
<div class="back" @click="next(1)" v-if="stepnow == 2"> <div class="back" @click="next(1)" v-if="stepnow == 2">
返回上一步 {{lan.$t('fanhuishangyibu')}}
</div> </div>
</div> </div>
<div class="stepline"></div> <div class="stepline"></div>
<div class="step"> <div class="step">
<div :class="stepnow == 3 ? 'circle step1' : 'circle'">03</div> <div :class="stepnow == 3 ? 'circle step1' : 'circle'">
<div :class="stepnow == 3 ? 'stepnow' : ''">帐号注册完成</div> 03
</div>
<div :class="stepnow == 3 ? 'stepnow' : ''">
{{lan.$t('zhucewancheng')}}
</div>
</div> </div>
</div> </div>
<div class="icons" v-if="stepnow == 2"> <div class="icons" v-if="stepnow == 2">
<img src="@/static/images/weixin.png" alt="" class="icon" /> <img src="@/static/images/weixin.png" alt="" class="icon" />
<img src="@/static/images/weibo.png" alt="" class="icon" /> <img src="@/static/images/weibo.png" alt="" class="icon" />
<img src="@/static/images/facebook.png" alt="" class="icon" /> <img
src="@/static/images/facebook.png"
alt=""
class="icon"
/>
</div> </div>
</div> </div>
</div> </div>
@ -166,16 +218,24 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, reactive, ref, toRaw } from "vue"; import { defineComponent, onMounted, reactive, ref, toRaw } from "vue";
import NavTop from "@/components/NavTop.vue"; import NavTop from "@/components/NavTop.vue";
import { checksmscode, getwillsay, register, sendsms } from "@/api"; import {
checksmscode,
getquhaolist,
getwillsay,
register,
sendsms,
} from "@/api";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import router from "@/router"; import router from "@/router";
import { useI18n } from "@/utils/i18n";
export default defineComponent({ export default defineComponent({
name: "Sign", name: "Sign",
components: { NavTop }, components: { NavTop },
setup() { setup() {
const lan: any = useI18n();
const formLayout = { const formLayout = {
labelCol: 4, labelCol: 4,
wrapperCol: 14, wrapperCol: 14,
@ -195,9 +255,20 @@ export default defineComponent({
jiaoshou: "", jiaoshou: "",
}); });
const willsay = ref<any>(); const willsay = ref<any>();
const quhaolist = ref<any>([
{
code: "86",
id: 214,
name: "中国",
},
]);
getwillsay().then((res) => { getwillsay().then((res) => {
willsay.value = res; willsay.value = res;
}); });
onMounted(async () => {
quhaolist.value = await getquhaolist();
});
/** /**
* @param * @param
* 点击获取验证码 触发60S倒计时 * 点击获取验证码 触发60S倒计时
@ -247,8 +318,8 @@ export default defineComponent({
return false; return false;
} }
if (userinfo.value.pass != userinfo.value.passtow) { if (userinfo.value.pass != userinfo.value.passtow) {
message.error("两次密码输入不一致") message.error("两次密码输入不一致");
return return;
} }
if (userinfo.value.name == "") { if (userinfo.value.name == "") {
message.error("姓名不能为空"); message.error("姓名不能为空");
@ -274,7 +345,6 @@ export default defineComponent({
*/ */
async function next(e: number) { async function next(e: number) {
if (!ifagree.value) { if (!ifagree.value) {
message.error("请同意用户协议"); message.error("请同意用户协议");
return; return;
@ -300,6 +370,7 @@ export default defineComponent({
if (res) { if (res) {
stepnow.value = e; stepnow.value = e;
} }
break; break;
} }
case 3: { case 3: {
@ -314,6 +385,7 @@ export default defineComponent({
stepnow.value = e; stepnow.value = e;
} }
} }
} }
} }
} }
@ -332,6 +404,8 @@ export default defineComponent({
userinfo, userinfo,
willsay, willsay,
navto, navto,
lan,
quhaolist,
}; };
}, },
}); });

View File

@ -1,9 +1,9 @@
<template> <template>
<div class="aboutus"> <div class="aboutus">
<div class="tabs"> <div class="tabs">
<div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)">服务条款</div> <div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)">{{lan.$t('fuwutiaokuan')}}</div>
<div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)">隐私政策</div> <div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)">{{lan.$t('yinsizhengce')}}</div>
<div :class="tabindex == 3 ? 'on' : ''" @click="tabchange(3)">意见反馈</div> <div :class="tabindex == 3 ? 'on' : ''" @click="tabchange(3)">{{lan.$t('yijianfankui')}}</div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="content" v-if="tabindex==1|| tabindex==2"> <div class="content" v-if="tabindex==1|| tabindex==2">
@ -31,13 +31,13 @@
<div v-else> <div v-else>
<div class="fankui"> <div class="fankui">
<div class="label">意见反馈</div> <div class="label">{{lan.$t('yijianfankui')}}</div>
<div> <div>
<a-textarea v-model:value="value" placeholder="请输入您的意见反馈" :rows="10" /> <a-textarea v-model:value="value" :placeholder="lan.$t('shurufankui')" :rows="10" />
</div> </div>
</div> </div>
<div class="sub" @click="sub">提交反馈</div> <div class="sub" @click="sub">{{lan.$t('tijiaofankui')}}</div>
</div> </div>
<NavBottom class="navbottom"></NavBottom> <NavBottom class="navbottom"></NavBottom>
</div> </div>
@ -48,12 +48,14 @@ import { defineComponent, ref } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { feedback } from '@/api'; import { feedback } from '@/api';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Aboutus", name: "Aboutus",
components: { components: {
NavBottom, NavBottom,
}, },
setup() { setup() {
const lan: any = useI18n();
const tabindex=ref(1) const tabindex=ref(1)
const value = ref("") const value = ref("")
console.log(useRoute().query) console.log(useRoute().query)
@ -72,7 +74,8 @@ export default defineComponent({
tabchange, tabchange,
tabindex, tabindex,
sub, sub,
value value,
lan
}; };
}, },
}); });

View File

@ -3,11 +3,11 @@
<div class="mingxilist"> <div class="mingxilist">
<div class="tabs"> <div class="tabs">
<div class="beforetab">新增账户</div> <div class="beforetab">{{lan.$t('xinzengzhanghu')}}</div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="choose"> <div class="choose">
<div class="label">选择账户</div> <div class="label">{{lan.$t('xuanzezhanghu')}}</div>
<!-- <a-radio></a-radio> --> <!-- <a-radio></a-radio> -->
<div v-if="ifchina"> <div v-if="ifchina">
<a-radio-group <a-radio-group
@ -19,15 +19,15 @@
> >
<a-radio :value="4"> <a-radio :value="4">
<img src="@/static/images/bank.png" alt="" class="icon icon1" /> <img src="@/static/images/bank.png" alt="" class="icon icon1" />
<span>银行卡</span> <span>{{lan.$t('yinhangka')}}</span>
</a-radio> </a-radio>
<a-radio :value="2"> <a-radio :value="2">
<img src="@/static/images/walletzfb.png" alt="" class="icon" /> <img src="@/static/images/walletzfb.png" alt="" class="icon" />
<span>支付宝</span> <span>{{lan.$t('zhifubao')}}</span>
</a-radio> </a-radio>
<a-radio :value="1"> <a-radio :value="1">
<img src="@/static/images/walletweixin.png" alt="" class="icon" /> <img src="@/static/images/walletweixin.png" alt="" class="icon" />
<span>微信</span> <span>{{lan.$t('weixin')}}</span>
</a-radio> </a-radio>
</a-radio-group> </a-radio-group>
</div> </div>
@ -45,7 +45,7 @@
alt="" alt=""
class="icon icon1" class="icon icon1"
/> />
<span>银行卡</span> <span>{{lan.$t('yinhangka')}}</span>
</a-radio> </a-radio>
<a-radio :value="2"> <a-radio :value="2">
<img src="@/static/images/paypi.png" alt="" class="icon" /> <img src="@/static/images/paypi.png" alt="" class="icon" />
@ -58,23 +58,23 @@
<a-form > <a-form >
<div> <div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">姓名</span> <span class="label label1">{{lan.$t('xingming')}}</span>
<a-input v-model:value="accountinfo.mname" class="shuru" placeholder="请输入姓名" /> <a-input v-model:value="accountinfo.mname" class="shuru" :placeholder="lan.$t('shuruxingming')" />
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">卡号</span> <span class="label label1">{{lan.$t('kahao')}}</span>
<a-input <a-input
v-model:value="accountinfo.bankcode" v-model:value="accountinfo.bankcode"
class="shuru" class="shuru"
placeholder="请输入收款人储蓄卡号" :placeholder="lan.$t('shurukahao')"
/> />
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">开户行</span> <span class="label label1">{{lan.$t('kaihuhang')}}</span>
<a-input <a-input
v-model:value="accountinfo.bankname" v-model:value="accountinfo.bankname"
class="shuru shuru2" class="shuru shuru2"
placeholder="请输入开户行" :placeholder="lan.$t('shurukaihuhang')"
/> />
</div> </div>
</div> </div>
@ -83,22 +83,22 @@
<div class="cashoutmoney" v-if="accountinfo.type == 2 && ifchina"> <div class="cashoutmoney" v-if="accountinfo.type == 2 && ifchina">
<div> <div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">帐号</span> <span class="label label1">{{lan.$t('zhanghao')}}</span>
<a-input <a-input
v-model:value="accountinfo.account" v-model:value="accountinfo.account"
class="shuru" class="shuru"
placeholder="请输入支付宝账号/密码" :placeholder="lan.$t('shuruzhifubao')"
/> />
</div> </div>
</div> </div>
</div> </div>
<div class="cashoutmoney" v-if="accountinfo.type == 1 && ifchina"> <div class="cashoutmoney" v-if="accountinfo.type == 1 && ifchina">
<div class="label label1">扫码绑定</div> <div class="label label1">{{lan.$t('saomabangding')}}</div>
<div class="ewmbox"> <div class="ewmbox">
<img src="@/static/images/erweima.png" alt="" class="ewmpic" /> <img src="@/static/images/erweima.png" alt="" class="ewmpic" />
<div class="desc"></div> <div class="desc">{{lan.$t('zhu')}}</div>
<div class="desc desc1"> <div class="desc desc1">
打开手机微信扫描左侧二维码 进行微信账户绑定 {{lan.$t('weixinbangding')}}
</div> </div>
</div> </div>
</div> </div>
@ -106,23 +106,23 @@
<div class="cashoutmoney" v-if="paytypeforign == 1 && !ifchina"> <div class="cashoutmoney" v-if="paytypeforign == 1 && !ifchina">
<div> <div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">账户名</span> <span class="label label1">{{lan.$t('zhanghuming')}}</span>
<a-input v-model="accountinfo.mname" class="shuru" placeholder="请输入姓名" /> <a-input v-model="accountinfo.mname" class="shuru" :placeholder="lan.$t('shuruxingming')" />
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">银行账户</span> <span class="label label1">{{lan.$t('yinhangzhanghu')}}</span>
<a-input <a-input
v-model="accountinfo.bankcode" v-model="accountinfo.bankcode"
class="shuru shuru2" class="shuru shuru2"
placeholder="请输入收款人储蓄卡号" :placeholder="shurukahao"
/> />
</div> </div>
<div class="infoitem infoitem1"> <div class="infoitem infoitem1">
<div class="label label1 label2"> 银行BIC码 /swift code </div> <div class="label label1 label2"> {{lan.$t(yinhangbic)}} /swift code </div>
<a-input <a-input
v-model="accountinfo.bankname" v-model="accountinfo.bankname"
class="shuru shuru1" class="shuru shuru1"
placeholder="请输入开户行" :placeholder="lan.$t('shurukaihuhang')"
/> />
</div> </div>
</div> </div>
@ -131,16 +131,16 @@
<div class="cashoutmoney" v-if="paytypeforign == 2 && !ifchina"> <div class="cashoutmoney" v-if="paytypeforign == 2 && !ifchina">
<div> <div>
<div class="infoitem"> <div class="infoitem">
<span class="label label1">帐号</span> <span class="label label1">{{lan.$t('zhanghao')}}</span>
<a-input <a-input
v-model:value="accountinfo.account" v-model:value="accountinfo.account"
class="shuru" class="shuru"
placeholder="请输入账号" :placeholder="lan.$t('shuruzhanghao')"
/> />
</div> </div>
</div> </div>
</div> </div>
<div class="cashoutall submit" @click="sub">提交</div> <div class="cashoutall submit" @click="sub">{{lan.$t('tijiao')}}</div>
<NavBottom class="navbottom"></NavBottom> <NavBottom class="navbottom"></NavBottom>
</div> </div>
</div> </div>
@ -151,12 +151,14 @@ import { defineComponent, onMounted, ref, toRaw } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { accountadd, editaccount, getaccountinfo } from '@/api'; import { accountadd, editaccount, getaccountinfo } from '@/api';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Cashout", name: "Cashout",
components: { components: {
NavBottom, NavBottom,
}, },
setup() { setup() {
const lan: any = useI18n();
const money = ref(0); const money = ref(0);
const paytype = ref(4); const paytype = ref(4);
const paytypeforign = ref(1); const paytypeforign = ref(1);
@ -211,7 +213,8 @@ export default defineComponent({
paytypeforign, paytypeforign,
onChange1, onChange1,
sub, sub,
accountinfo accountinfo,
lan
}; };
}, },
}); });

File diff suppressed because it is too large Load Diff

View File

@ -2,15 +2,15 @@
<div class="cashout"> <div class="cashout">
<div class="mingxilist"> <div class="mingxilist">
<div class="tabs"> <div class="tabs">
<div class="beforetab">提现到指定账户</div> <div class="beforetab">{{lan.$t('tixianzhanghu')}}</div>
<span class="residue">余额{{ yue }}</span> <span class="residue">{{lan.$t('yue')}}{{ yue }}</span>
<div class="topbtn topbtn2" @click="navto('/mine/addaccount')">提现到指定账户</div> <div class="topbtn topbtn2" @click="navto('/mine/addaccount')">{{lan.$t('tixianzhanghu')}}</div>
<div class="topbtn topbtn1" @click="navto('/mine/transaction')">提现记录</div> <div class="topbtn topbtn1" @click="navto('/mine/transaction')">{{lan.$t('tixianjilu')}}</div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="choose"> <div class="choose">
<div class="chooseitem"> <div class="chooseitem">
<div class="label">选择账户</div> <div class="label">{{lan.$t('xuanzezhanghu')}}</div>
<!-- <a-radio></a-radio> --> <!-- <a-radio></a-radio> -->
<!-- {{payinfo.type}} --> <!-- {{payinfo.type}} -->
<a-radio-group <a-radio-group
@ -32,7 +32,7 @@
class="icon" class="icon"
/> />
<span class="accounttype" <span class="accounttype"
>银行卡</span >{{lan.$t('yinhangka')}}</span
> >
</div> </div>
</div> </div>
@ -44,7 +44,7 @@
class="icon icon1" class="icon icon1"
/> />
<span class="accounttype" <span class="accounttype"
>支付宝</span >{{lan.$t('zhifubao')}}</span
> >
</div> </div>
</div> </div>
@ -56,12 +56,12 @@
class="icon icon1" class="icon icon1"
/> />
<span class="accounttype" <span class="accounttype"
>微信</span >{{lan.$t('weixin')}}</span
> >
</div> </div>
</div> </div>
<div class="zhanghao"> <div class="zhanghao">
账号6217 **** **** **** 175 {{lan.$t('zhanghao')}}6217 **** **** **** 175
</div> </div>
</div> </div>
</a-radio> </a-radio>
@ -100,13 +100,13 @@
</a-radio-group> </a-radio-group>
</div> </div>
<div class="cashoutmoney"> <div class="cashoutmoney">
<div class="label">提现金额</div> <div class="label">{{lan.$t('tixianjine')}}</div>
<div class="moneynum"> <div class="moneynum">
<a-input v-model:value="payinfo.money" class="shuru" /> <a-input v-model:value="payinfo.money" class="shuru" />
<div></div> <div></div>
<div class="cashoutall" @click="all">全部金额</div> <div class="cashoutall" @click="all">{{lan.$t('quanbujine')}}</div>
<div class="desc"> <div class="desc">
每笔提现收取0.1%服务费最低0.1 {{lan.$t('tixianzhu')}}
</div> </div>
</div> </div>
</div> </div>
@ -116,10 +116,10 @@
payinfo.money < 100 || payinfo.money > parseFloat(yue) payinfo.money < 100 || payinfo.money > parseFloat(yue)
" "
> >
*您的余额只有{{ parseFloat(yue) }}最低提现金额100 *{{lan.$t('yueshu')}} {{ parseFloat(yue) }}{{lan.$t('zuiditixian')}}
</div> </div>
</div> </div>
<div class="cashoutall submit" @click="sub">立即提现</div> <div class="cashoutall submit" @click="sub">{{lan.$t('lijitixian')}}</div>
<NavBottom class="navbottom"></NavBottom> <NavBottom class="navbottom"></NavBottom>
</div> </div>
</div> </div>
@ -132,12 +132,14 @@ import { cashout, getwallect } from "@/api";
import store from "@/store"; import store from "@/store";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Cashout", name: "Cashout",
components: { components: {
NavBottom, NavBottom,
}, },
setup() { setup() {
const lan: any = useI18n();
const money = ref(0); const money = ref(0);
const payinfo = ref<any>({ const payinfo = ref<any>({
type: 0, type: 0,
@ -209,6 +211,7 @@ export default defineComponent({
sub, sub,
accountlist, accountlist,
store, store,
lan
}; };
}, },
}); });

View File

@ -61,15 +61,16 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from "vue"; import { defineComponent } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Cashoutdetail", name: "Cashoutdetail",
components: { components: {
NavBottom NavBottom
}, },
setup() { setup() {
const lan: any = useI18n();
return { return {
lan
}; };
}, },
}); });

View File

@ -4,20 +4,20 @@
<div class="listitem" @click="navto(1)"> <div class="listitem" @click="navto(1)">
<div class="top"> <div class="top">
<img src="@/static/images/zhibotjicon.png" alt="" class="icon" /> <img src="@/static/images/zhibotjicon.png" alt="" class="icon" />
<span>直播列表</span> <span>{{lan.$t('zhiboliebiao')}}</span>
</div> </div>
<div class="mid"> <div class="mid">
<div> <div>
<div class="data"> <div class="data">
<div class="label">直播课程</div> <div class="label">{{lan.$t('zhibokecheng')}}</div>
<div class="right">{{statistics.liveInfo?statistics.liveInfo.sum:0}}</div> <div class="right">{{statistics.liveInfo?statistics.liveInfo.sum:0}}</div>
</div> </div>
<div class="data"> <div class="data">
<div class="label">参与人数</div> <div class="label">{{lan.$t('canyurenshu')}}</div>
<div class="right">{{statistics.liveInfo?statistics.liveInfo.student:0}}</div> <div class="right">{{statistics.liveInfo?statistics.liveInfo.student:0}}</div>
</div> </div>
<div class="data"> <div class="data">
<div class="label">课程评分</div> <div class="label">{{lan.$t('kechengpingfen')}}</div>
<div class="right">{{statistics.liveInfo?statistics.liveInfo.avg:0}}</div> <div class="right">{{statistics.liveInfo?statistics.liveInfo.avg:0}}</div>
</div> </div>
<img src="@/static/images/zhibotj.png" alt="" class="zhuzi" /> <img src="@/static/images/zhibotj.png" alt="" class="zhuzi" />
@ -27,20 +27,20 @@
<div class="listitem" @click="navto(2)"> <div class="listitem" @click="navto(2)">
<div class="top"> <div class="top">
<img src="@/static/images/shipintjicon.png" alt="" class="icon" /> <img src="@/static/images/shipintjicon.png" alt="" class="icon" />
<span class="label1">视频列表</span> <span class="label1">{{lan.$t('shipinliebiao')}}</span>
</div> </div>
<div class="mid"> <div class="mid">
<div> <div>
<div class="data"> <div class="data">
<div class="label">发布视频</div> <div class="label">{{lan.$t('fabushipin')}}</div>
<div class="right">{{statistics.videoInfo?statistics.videoInfo.sum:0}}</div> <div class="right">{{statistics.videoInfo?statistics.videoInfo.sum:0}}</div>
</div> </div>
<div class="data"> <div class="data">
<div class="label">总观看数</div> <div class="label">{{lan.$t('zongguankanshu')}}</div>
<div class="right">{{statistics.videoInfo?statistics.videoInfo.sum:0}}</div> <div class="right">{{statistics.videoInfo?statistics.videoInfo.sum:0}}</div>
</div> </div>
<div class="data"> <div class="data">
<div class="label">平均得分</div> <div class="label">{{lan.$t('pingjundefen')}}</div>
<div class="right">{{statistics.videoInfo?statistics.videoInfo.sum:0}}</div> <div class="right">{{statistics.videoInfo?statistics.videoInfo.sum:0}}</div>
</div> </div>
<img src="@/static/images/shipintj.png" alt="" class="zhuzi" /> <img src="@/static/images/shipintj.png" alt="" class="zhuzi" />
@ -50,12 +50,12 @@
<div class="listitem" @click="navto(3)"> <div class="listitem" @click="navto(3)">
<div class="top"> <div class="top">
<img src="@/static/images/dingyuetjicon.png" alt="" class="icon" /> <img src="@/static/images/dingyuetjicon.png" alt="" class="icon" />
<span class="label2">订阅列表</span> <span class="label2">{{lan.$t('dingyueliebiao')}}</span>
</div> </div>
<div class="mid"> <div class="mid">
<div> <div>
<div class="data"> <div class="data">
<div class="label">订阅人数</div> <div class="label">{{lan.$t('dingyuerenshu')}}</div>
<div class="right">{{statistics.studentInfo?statistics.studentInfo.sum:0}}</div> <div class="right">{{statistics.studentInfo?statistics.studentInfo.sum:0}}</div>
</div> </div>
@ -75,12 +75,14 @@ import { defineComponent, onMounted, ref } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { getstatisticlist } from "@/api" import { getstatisticlist } from "@/api"
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Liststatistic", name: "Liststatistic",
components: { components: {
NavBottom NavBottom
}, },
setup(){ setup(){
const lan: any = useI18n();
const statistics = ref({}) const statistics = ref({})
onMounted(async ()=>{ onMounted(async ()=>{
statistics.value = await getstatisticlist() statistics.value = await getstatisticlist()
@ -101,7 +103,8 @@ export default defineComponent({
// console.log(statistics,111) // console.log(statistics,111)
return { return {
statistics, statistics,
navto navto,
lan
}; };
}, },
}); });

View File

@ -1,15 +1,15 @@
<template> <template>
<div class="upload-video"> <div class="upload-video">
<a-form :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form :label-col="labelCol" :wrapper-col="wrapperCol">
<div class="title">上传视频</div> <div class="title">{{lan.$t("shangchuanshipin")}}</div>
<a-form-item label="视频标题"> <a-form-item :label="lan.$t('shipinbiaoti')">
<a-input <a-input
size="small" size="small"
v-model:value="form.title" v-model:value="form.title"
placeholder="请输入您的视频标题" :placeholder="lan.$t('shurushipinbiaoti')"
/> />
</a-form-item> </a-form-item>
<a-form-item label="视频封面" class="video-cover"> <a-form-item :label="lan.$t('shipinfengmian')" class="video-cover">
<a-upload list-type="picture" :customRequest="uploadspic" :before-upload="beforeUpload"> <a-upload list-type="picture" :customRequest="uploadspic" :before-upload="beforeUpload">
<div class="upload-image" v-if="!viewCover && form.img.length == 0"> <div class="upload-image" v-if="!viewCover && form.img.length == 0">
<PlusOutlined <PlusOutlined
@ -28,7 +28,7 @@
</div> </div>
</a-upload> </a-upload>
</a-form-item> </a-form-item>
<a-form-item label="选择视频" class="video-introduction"> <a-form-item :label="lan.$t('xuanzeshipin')" class="video-introduction">
<div class="upload-container"> <div class="upload-container">
<a-upload list-type="picture" :customRequest="uploads" :beforeUpload="beforeVideoUpload"> <a-upload list-type="picture" :customRequest="uploads" :beforeUpload="beforeVideoUpload">
<div class="upload-image"> <div class="upload-image">
@ -79,24 +79,24 @@
</div> </div>
</div> </div>
<div class="demand"> <div class="demand">
<p class="one-line-hide">视频要求</p> <p class="one-line-hide">{{lan.$t('shipinyaoqiu')}}</p>
<p class="one-line-hide"> <p class="one-line-hide">
1.文件扩展名fivmp4文件扩展名fivmp4 1. {{lan.$t('shipinyaoqiu3')}}
</p> </p>
</div> </div>
</a-form-item> </a-form-item>
<a-form-item label="视频简介" class="brief"> <a-form-item :label="lan.$t('shipinjianjie')" class="brief">
<a-textarea <a-textarea
v-model:value="form.desc" v-model:value="form.desc"
:autoSize="true" :autoSize="true"
class="brief-textarea" class="brief-textarea"
:maxlength="200" :maxlength="200"
placeholder="请输入您的视频简介" :placeholder="lan.$t('shurushipinjianjie')"
/> />
<span class="words-number">{{ form.desc.length }}/200</span> <span class="words-number">{{ form.desc.length }}/200</span>
</a-form-item> </a-form-item>
<a-form-item :wrapper-col="{ span: 4, offset: 0 }"> <a-form-item :wrapper-col="{ span: 4, offset: 0 }">
<a-button @click="onSubmit">上传视频</a-button> <a-button @click="onSubmit">{{lan.$t('shangchuanshipin')}}</a-button>
</a-form-item> </a-form-item>
</a-form> </a-form>
<nav-bottom></nav-bottom> <nav-bottom></nav-bottom>
@ -112,6 +112,7 @@ import { uploadflie } from "@/utils/vod";
import { setvideo, videoadd, videodetail } from "@/api"; import { setvideo, videoadd, videodetail } from "@/api";
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "ReleaseWebcast", name: "ReleaseWebcast",
@ -121,6 +122,7 @@ export default defineComponent({
NavBottom, NavBottom,
}, },
setup() { setup() {
const lan: any = useI18n();
interface FileItem { interface FileItem {
video: Array<string>; video: Array<string>;
} }
@ -319,7 +321,8 @@ export default defineComponent({
removeFile, removeFile,
beforeUpload, beforeUpload,
ifalowupload, ifalowupload,
beforeVideoUpload beforeVideoUpload,
lan
}; };
}, },
}); });

View File

@ -1,16 +1,20 @@
<template> <template>
<div class="webcast"> <div class="webcast">
<a-form :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form :label-col="labelCol" :wrapper-col="wrapperCol">
<div class="title">直播信息</div> <div class="title">{{ lan.$t("zhiboxinxi") }}</div>
<a-form-item label="直播标题"> <a-form-item :label="lan.$t('zhibobiaoti')">
<a-input <a-input
size="small" size="small"
v-model:value="form.title" v-model:value="form.title"
placeholder="请输入您的直播标题" :placeholder="lan.$t('shuruzhibobiaoti')"
/> />
</a-form-item> </a-form-item>
<a-form-item label="直播封面" class="item-cover"> <a-form-item :label="lan.$t('zhibofengmian')" class="item-cover">
<a-upload list-type="picture" :customRequest="uploadspic" :before-upload="beforeUploadpic"> <a-upload
list-type="picture"
:customRequest="uploadspic"
:before-upload="beforeUploadpic"
>
<div <div
class="upload-image" class="upload-image"
v-if="!viewCover && form.img.length == 0" v-if="!viewCover && form.img.length == 0"
@ -34,8 +38,15 @@
</div> </div>
</a-upload> </a-upload>
</a-form-item> </a-form-item>
<a-form-item label="视频介绍" class="video-introduction"> <a-form-item
<a-upload list-type="picture" :customRequest="uploads" :before-upload="beforeUpload"> :label="lan.$t('shipinjieshao')"
class="video-introduction"
>
<a-upload
list-type="picture"
:customRequest="uploads"
:before-upload="beforeUpload"
>
<div class="upload-image" v-if="form.fileurl.length == 0"> <div class="upload-image" v-if="form.fileurl.length == 0">
<PlaySquareOutlined <PlaySquareOutlined
style="fontsize: 22px" style="fontsize: 22px"
@ -67,15 +78,23 @@
</div> </div>
</a-upload> </a-upload>
<div class="demand"> <div class="demand">
<p class="one-line-hide">
{{ lan.$t("shipinyaoqiu") }}
</p>
<p class="one-line-hide">1.{{ lan.$t("shipinyaoqiu1") }}</p>
<p class="one-line-hide">2.{{ lan.$t("shipinyaoqiu2") }}</p>
<p class="one-line-hide">3.{{ lan.$t("shipinyaoqiu3") }}</p>
</div>
<!-- <div class="demand">
<p class="one-line-hide">视频要求</p> <p class="one-line-hide">视频要求</p>
<p class="one-line-hide">1.上传视频时间要求为30s之内</p> <p class="one-line-hide">1.上传视频时间要求为30s之内</p>
<p class="one-line-hide">2.支持文件大小100M</p> <p class="one-line-hide">2.支持文件大小100M</p>
<p class="one-line-hide"> <p class="one-line-hide">
3.文件扩展名fivmp4文件扩展名fivmp4 3.文件扩展名fivmp4文件扩展名fivmp4
</p> </p>
</div> </div> -->
</a-form-item> </a-form-item>
<a-form-item label="开始时间"> <a-form-item :label="lan.$t('kaishishijian')">
<!-- <a-input <!-- <a-input
size="small" size="small"
v-model:value="form.startTime" v-model:value="form.startTime"
@ -85,42 +104,45 @@
show-time show-time
:value="form.dateline" :value="form.dateline"
@change="startchange" @change="startchange"
placeholder="请设置您的开始时间" :placeholder="lan.$t('shezhikaishishijian')"
/> />
</a-form-item> </a-form-item>
<a-form-item <a-form-item
label="直播时长" :label="lan.$t('zhiboshichang')"
class="duration" class="duration"
v-bind="validateInfos.livetime" v-bind="validateInfos.livetime"
> >
<a-input <a-input
size="small" size="small"
v-model:value="form.livetime" v-model:value="form.livetime"
placeholder="请输入直播时间" :placeholder="lan.$t('shuruzhiboshijian')"
type="number" type="number"
/> />
<span class="unit">分钟</span> <span class="unit">{{ lan.$t("fenzhong") }}</span>
</a-form-item> </a-form-item>
<a-form-item label="直播人数" v-bind="validateInfos.livenumber"> <a-form-item
:label="lan.$t('zhiborenshu')"
v-bind="validateInfos.livenumber"
>
<a-input <a-input
size="small" size="small"
v-model:value="form.livenumber" v-model:value="form.livenumber"
placeholder="请输入直播人数" :placeholder="lan.$t('shuruzhiborenshu')"
type="number" type="number"
/> />
</a-form-item> </a-form-item>
<a-form-item label="直播简介" class="brief"> <a-form-item :label="lan.$t('zhibojianjie')" class="brief">
<a-textarea <a-textarea
v-model:value="form.desc" v-model:value="form.desc"
:autoSize="true" :autoSize="true"
class="brief-textarea" class="brief-textarea"
:maxlength="200" :maxlength="200"
placeholder="请输入您的直播简介" :placeholder="lan.$t('shuruzhibojianjie')"
/> />
<span class="words-number">{{ form.desc.length }}/200</span> <span class="words-number">{{ form.desc.length }}/200</span>
</a-form-item> </a-form-item>
<a-form-item :wrapper-col="{ span: 4, offset: 0 }"> <a-form-item :wrapper-col="{ span: 4, offset: 0 }">
<a-button @click="onSubmit">发布直播</a-button> <a-button @click="onSubmit">{{ lan.$t("fabuzhibo") }}</a-button>
</a-form-item> </a-form-item>
</a-form> </a-form>
<div class="modal-container"> <div class="modal-container">
@ -136,14 +158,16 @@
<img src="@/static/images/delete.png" class="close" /> <img src="@/static/images/delete.png" class="close" />
</template> </template>
<div class="notice-container report" v-if="lives.status == 1"> <div class="notice-container report" v-if="lives.status == 1">
<div class="title">您尚未获得直播资格</div> <div class="title">{{ lan.$t("wuzhibozige") }}</div>
<div class="title sub-title"> <div class="title sub-title">
{{ lives.data.msg }} {{ lives.data.msg }}
</div> </div>
<div class="confirm-btn" @click="fankui">意见反馈</div> <div class="confirm-btn" @click="fankui">
{{ lan.$t("yijianfankui") }}
</div>
</div> </div>
<div class="notice-container" v-else> <div class="notice-container" v-else>
<div class="title">您尚未获得直播资格</div> <div class="title">{{ lan.$t("wuzhibozige") }}</div>
<div class="title sub-title"> <div class="title sub-title">
<!-- 上一周/月您在平台视频点击量为 <!-- 上一周/月您在平台视频点击量为
<span class="red">第24名</span>要在前 <span class="red">第24名</span>要在前
@ -178,7 +202,8 @@ import { getlivest, liveadd, liveinfo, setlive } from "@/api";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import router from '@/router'; import router from "@/router";
import { useI18n } from "@/utils/i18n";
export default defineComponent({ export default defineComponent({
name: "ReleaseWebcast", name: "ReleaseWebcast",
@ -189,6 +214,7 @@ export default defineComponent({
RankList, RankList,
}, },
setup() { setup() {
const lan: any = useI18n();
// //
const form = ref({ const form = ref({
title: "", title: "",
@ -267,7 +293,7 @@ export default defineComponent({
// form.cover = fileList; // form.cover = fileList;
} }
function fankui() { function fankui() {
router.push({path:"/mine/aboutus",query:{selected:3}}) router.push({ path: "/mine/aboutus", query: { selected: 3 } });
} }
const { resetFields, validate, validateInfos } = useForm(form, rules); const { resetFields, validate, validateInfos } = useForm(form, rules);
@ -330,17 +356,15 @@ export default defineComponent({
* todo 提交会报错 编辑直播 * todo 提交会报错 编辑直播
*/ */
subdata.id = id; subdata.id = id;
// setlive(subdata) setlive(subdata)
} else { } else {
console.log(subdata); console.log(subdata);
console.log(lives.value) console.log(lives.value);
// liveadd(subdata); liveadd(subdata);
} }
} else { } else {
message.error("您尚未获得直播资格") message.error("您尚未获得直播资格");
} }
} }
}) })
.catch((err: unknown) => { .catch((err: unknown) => {
@ -395,15 +419,15 @@ export default defineComponent({
data: unknown; data: unknown;
file: File; file: File;
} }
const ifallowupload=ref<boolean>(false) const ifallowupload = ref<boolean>(false);
function beforeUpload(info?: any) { function beforeUpload(info?: any) {
console.log(info) console.log(info);
if (info.type.split("/")[0] != "video") { if (info.type.split("/")[0] != "video") {
ifallowupload.value=false ifallowupload.value = false;
message.error("视频介绍的文件格式错误") message.error("视频介绍的文件格式错误");
return return;
} else { } else {
ifallowupload.value=true ifallowupload.value = true;
} }
} }
async function uploads(file: AntUpload) { async function uploads(file: AntUpload) {
@ -423,9 +447,8 @@ export default defineComponent({
form.value.fileid = res.fileId; form.value.fileid = res.fileId;
form.value.fileurl = res.video.url; form.value.fileurl = res.video.url;
} }
} }
const ifallowpic=ref<boolean>(false) const ifallowpic = ref<boolean>(false);
async function uploadspic(file: AntUpload) { async function uploadspic(file: AntUpload) {
if (ifallowpic.value) { if (ifallowpic.value) {
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
@ -438,7 +461,6 @@ export default defineComponent({
// picinfo.url=res.video.url // picinfo.url=res.video.url
form.value.img = res.video.url; form.value.img = res.video.url;
} }
} }
getlivest().then((res) => { getlivest().then((res) => {
@ -448,13 +470,13 @@ export default defineComponent({
} }
}); });
function beforeUploadpic(info?: any) { function beforeUploadpic(info?: any) {
console.log(info) console.log(info);
if(info.type.split("/")[0]!='image'){ if (info.type.split("/")[0] != "image") {
message.error("封面必须是图片文件") message.error("封面必须是图片文件");
ifallowpic.value=false ifallowpic.value = false;
return return;
} else { } else {
ifallowpic.value=true ifallowpic.value = true;
} }
} }
@ -486,7 +508,8 @@ export default defineComponent({
ifallowpic, ifallowpic,
beforeUpload, beforeUpload,
ifallowupload, ifallowupload,
fankui fankui,
lan,
}; };
}, },
}); });

View File

@ -3,19 +3,19 @@
<div class="mingxilist"> <div class="mingxilist">
<div class="mingxitop"> <div class="mingxitop">
<div><span class="tabtitle">明细查询</span> <div><span class="tabtitle">{{lan.$t("mingxichaxun")}}</span>
</div> </div>
<a-range-picker @change="onChange" class="choosedate" :placeholder="['请选择开始日期', '请选择结束日期']"/> <a-range-picker @change="onChange" class="choosedate" :placeholder="[lan.$t('kaishiriqi'), lan.$t('jieshuriqi')]"/>
</div> </div>
<div> <div>
<table class="table"> <table class="table">
<thead> <thead>
<tr class="head"> <tr class="head">
<th>账户</th> <th>{{lan.$t('zhanghu')}}</th>
<th>提交日期</th> <th>{{lan.$t('tijiaoriqi')}}</th>
<th>状态</th> <th>{{lan.$t('zhuangtai')}}</th>
<th>金额</th> <th>{{lan.$t('jine')}}</th>
<th>操作</th> <th>{{lan.$t('caozuo')}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -28,7 +28,7 @@
<span v-else></span> <span v-else></span>
{{i.money}} {{i.money}}
</td> </td>
<td @click="navto(3,i.withdrawalid)">查看详情</td> <td @click="navto(3,i.withdrawalid)">{{lan.$t('chakanxiangqing')}}</td>
</tr> </tr>
@ -49,12 +49,14 @@ import { defineComponent, onMounted, ref } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { withdrawal } from '@/api'; import { withdrawal } from '@/api';
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Transaction", name: "Transaction",
components: { components: {
NavBottom NavBottom
}, },
setup() { setup() {
const lan: any = useI18n();
const withdrawallist =ref<any>({}) const withdrawallist =ref<any>({})
const dates=ref<Array<string>>(["",""]) const dates=ref<Array<string>>(["",""])
const page = ref(1); const page = ref(1);
@ -105,7 +107,8 @@ export default defineComponent({
withdrawallist, withdrawallist,
onChange, onChange,
navto, navto,
pagechange pagechange,
lan
}; };
}, },
}); });

View File

@ -3,37 +3,37 @@
<div class="mingxilist" v-if="query.ifwithdrawal!=1"> <div class="mingxilist" v-if="query.ifwithdrawal!=1">
<div class="tabs"> <div class="tabs">
<div class="beforetab">交易明细详情</div> <div class="beforetab">{{lan.$t('jiaoyimingxixiangqing')}}</div>
</div> </div>
<div class="detail"> <div class="detail">
<div class="infoitem"> <div class="infoitem">
<div class="left">金额</div> <div class="left">{{lan.$t('jine')}}</div>
<div class="right">{{accountinfo.money}}</div> <div class="right">{{accountinfo.money}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">类型</div> <div class="left">{{lan.$t('leixing')}}</div>
<div class="right" v-if="accountinfo.type==1">直播收入</div> <div class="right" v-if="accountinfo.type==1">{{lan.$t('zhiboshouru')}}</div>
<div class="right" v-if="accountinfo.type==2">提现</div> <div class="right" v-if="accountinfo.type==2">{{lan.$t('tixian')}}</div>
<div class="right" v-if="accountinfo.type==3">后台充值</div> <div class="right" v-if="accountinfo.type==3">{{lan.$t('houtaichongzhi')}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">流水号</div> <div class="left">{{lan.$t('liushuihao')}}</div>
<div class="right">{{accountinfo.sn}}</div> <div class="right">{{accountinfo.sn}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">日期</div> <div class="left">{{lan.$t('riqi')}}</div>
<div class="right">{{accountinfo.created_at}}</div> <div class="right">{{accountinfo.created_at}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">来源</div> <div class="left">{{lan.$t('laiyuan')}}</div>
<div class="right">{{accountinfo.remark}}</div> <div class="right">{{accountinfo.remark}}</div>
</div> </div>
<div class="back" @click="navto(1,2)">返回</div> <div class="back" @click="navto(1,2)">{{lan.$t('fanhui')}}</div>
</div> </div>
<NavBottom class="navbottom"></NavBottom> <NavBottom class="navbottom"></NavBottom>
@ -41,23 +41,23 @@
<div class="mingxilist" v-if="query.ifwithdrawal==1"> <div class="mingxilist" v-if="query.ifwithdrawal==1">
<div class="tabs"> <div class="tabs">
<div class="beforetab">提现记录详情</div> <div class="beforetab">{{lan.$t('tixianjiluxiangqing')}}</div>
</div> </div>
<div class="detail"> <div class="detail">
<div class="infoitem"> <div class="infoitem">
<div class="left">提现金额</div> <div class="left">{{lan.$t('tixianjine')}}</div>
<div class="right">{{accountinfo.amount}}</div> <div class="right">{{accountinfo.amount}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">到帐金额</div> <div class="left">{{lan.$t('daozhangjine')}}</div>
<div class="right">{{accountinfo.money}}</div> <div class="right">{{accountinfo.money}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">手续费</div> <div class="left">{{lan.$t('shouxufei')}}</div>
<div class="right">{{accountinfo.sxf}}</div> <div class="right">{{accountinfo.sxf}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">提现状态</div> <div class="left">{{lan.$t('tixianzhuangtai')}}</div>
<div class="right" >{{accountinfo.statusname}}</div> <div class="right" >{{accountinfo.statusname}}</div>
<!-- <div class="right" v-if="accountinfo.status==1">直播收入</div> <!-- <div class="right" v-if="accountinfo.status==1">直播收入</div>
<div class="right" v-if="accountinfo.status==2">提现</div> <div class="right" v-if="accountinfo.status==2">提现</div>
@ -65,28 +65,28 @@
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">原因描述</div> <div class="left">{{lan.$t('yuanyinmiaoshu')}}</div>
<div class="right">{{accountinfo.remark}}</div> <div class="right">{{accountinfo.remark}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">流水号</div> <div class="left">{{lan.$t('liushuihao')}}</div>
<div class="right">{{accountinfo.sn}}</div> <div class="right">{{accountinfo.sn}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">名称</div> <div class="left">{{lan.$t('mingcheng')}}</div>
<div class="right">{{accountinfo.typename}}</div> <div class="right">{{accountinfo.typename}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">日期</div> <div class="left">{{riqi}}</div>
<div class="right">{{accountinfo.created_at}}</div> <div class="right">{{accountinfo.created_at}}</div>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<div class="left">收款账户</div> <div class="left">{{lan.$t('shoukuanzhanghu')}}</div>
<div class="right">{{accountinfo.account}}</div> <div class="right">{{accountinfo.account}}</div>
</div> </div>
<div class="back" @click="navto(2)">返回</div> <div class="back" @click="navto(2)">{{lan.$t('fanhui')}}</div>
</div> </div>
<NavBottom class="navbottom"></NavBottom> <NavBottom class="navbottom"></NavBottom>
</div> </div>
@ -99,12 +99,14 @@ import NavBottom from "@/components/NavBottom.vue";
import { transactioninfo, withdrawlxq } from '@/api'; import { transactioninfo, withdrawlxq } from '@/api';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import router from '@/router'; import router from '@/router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Transactiondetail", name: "Transactiondetail",
components: { components: {
NavBottom NavBottom
}, },
setup() { setup() {
const lan: any = useI18n();
const accountinfo=ref<any>({}); const accountinfo=ref<any>({});
const query=ref({}) const query=ref({})
onMounted(async () => { onMounted(async () => {
@ -143,7 +145,8 @@ export default defineComponent({
return { return {
accountinfo, accountinfo,
query, query,
navto navto,
lan
}; };
}, },
}); });

View File

@ -3,17 +3,17 @@
<div class="top"> <div class="top">
<div class="mywallet"> <div class="mywallet">
<div class="topinfo"> <div class="topinfo">
<div class="title">我的钱包</div> <div class="title">{{lan.$t('wodeqianbao')}}</div>
<div class="topbtn" @click="navto(2)">立即提现</div> <div class="topbtn" @click="navto(2)">{{lan.$t('lijitixian')}}</div>
<div class="topbtn topbtn1" @click="navto(3)">提现记录</div> <div class="topbtn topbtn1" @click="navto(3)">{{lan.$t('tixianjilu')}}</div>
</div> </div>
<div class="line"></div> <div class="line"></div>
<div class="accounts"> <div class="accounts">
<div class="left" @click="listchange(1)"> <div class="left" @click="listchange(1)">
<img src="@/static/images/account.png" alt="" class="pic" /> <img src="@/static/images/account.png" alt="" class="pic" />
<div class="texts"> <div class="texts">
<div>绑定用户</div> <div>{{lan.$t('bangdingyonghu')}}</div>
<div class="num">{{accountlist.length}}</div> <div class="num">{{accountlist.length}}</div>
</div> </div>
</div> </div>
@ -21,7 +21,7 @@
<div class="left" @click="listchange(2)"> <div class="left" @click="listchange(2)">
<img src="@/static/images/money.png" alt="" class="pic" /> <img src="@/static/images/money.png" alt="" class="pic" />
<div class="texts"> <div class="texts">
<div>账户余额</div> <div>{{lan.$t('zhanghuyue')}}</div>
<div class="num"> <div class="num">
<!-- <span class="moneyicon" v-if="ifchina"></span> <!-- <span class="moneyicon" v-if="ifchina"></span>
<span class="moneyicon" v-else> $ </span> --> <span class="moneyicon" v-else> $ </span> -->
@ -43,7 +43,7 @@
</div> </div>
<div class="add" @click="navto(1)"> <div class="add" @click="navto(1)">
<img src="@/static/images/walletadd.png" alt="" class="icon" /> <img src="@/static/images/walletadd.png" alt="" class="icon" />
<div>添加新的账户</div> <div>{{lan.$t('tianjiazhanghu')}}</div>
</div> </div>
</div> </div>
@ -52,7 +52,7 @@
<div class="hostinfo"> <div class="hostinfo">
<div v-if="i.type==4"> <div v-if="i.type==4">
<img src="@/static/images/bank.png" alt="" class="icon" /> <img src="@/static/images/bank.png" alt="" class="icon" />
<span class="accounttype">银行卡</span> <span class="accounttype">{{lan.$t('yinhangka')}}</span>
</div> </div>
<div v-if="i.type==2"> <div v-if="i.type==2">
<img <img
@ -60,7 +60,7 @@
alt="" alt=""
class="icon icon1" class="icon icon1"
/> />
<span class="accounttype">支付宝</span> <span class="accounttype">{{lan.$t('zhifubao')}}</span>
</div> </div>
<div v-if="i.type==1"> <div v-if="i.type==1">
<img <img
@ -68,15 +68,15 @@
alt="" alt=""
class="icon icon1" class="icon icon1"
/> />
<span class="accounttype">微信</span> <span class="accounttype">{{lan.$t('weixin')}}</span>
</div> </div>
<div class="btns"> <div class="btns">
<div class="btn" @click="navto(1,i.wallectid)">修改</div> <div class="btn" @click="navto(1,i.wallectid)">{{lan.$t('xiugai')}}</div>
<div class="btn1" @click="del(i.wallectid)">删除</div> <div class="btn1" @click="del(i.wallectid)">{{lan.$t('shanchu')}}</div>
</div> </div>
</div> </div>
<div class="zhanghao" v-if="i.type==4">账号 <span>{{i.bankcode}}</span></div> <div class="zhanghao" v-if="i.type==4">{{lan.$t('zhanghao0')}} <span>{{i.bankcode}}</span></div>
<div class="zhanghao" v-else>账号 <span>{{i.account}}</span></div> <div class="zhanghao" v-else>{{lan.$t('zhanghao0')}} <span>{{i.account}}</span></div>
</div> </div>
<!-- <div class="accountitem"> <!-- <div class="accountitem">
@ -137,7 +137,7 @@
<div class="hostinfo"> <div class="hostinfo">
<div v-if="i.type==4"> <div v-if="i.type==4">
<img src="@/static/images/foreignbank.png" alt="" class="icon" /> <img src="@/static/images/foreignbank.png" alt="" class="icon" />
<span class="accounttype">银行卡</span> <span class="accounttype">{{lan.$t('yinhangka')}}</span>
</div> </div>
<div v-else> <div v-else>
@ -146,40 +146,40 @@
</div> </div>
<div class="btns"> <div class="btns">
<div class="btn" @click="navto(1,i.wallectid)">修改</div> <div class="btn" @click="navto(1,i.wallectid)">{{lan.$t('xiugai')}}</div>
<div class="btn1" @click="del(i.wallectid)">删除</div> <div class="btn1" @click="del(i.wallectid)">{{lan.$t('shanchu')}}</div>
</div> </div>
</div> </div>
<div class="zhanghao" v-if="i.type==4">账号 <span>{{i.bankcode}}</span></div> <div class="zhanghao" v-if="i.type==4">{{lan.$t('zhanghao')}} <span>{{i.bankcode}}</span></div>
<div class="zhanghao" v-else>账号 <span>{{i.account}}</span></div> <div class="zhanghao" v-else>{{lan.$t('zhanghao')}} <span>{{i.account}}</span></div>
</div> </div>
</div> </div>
<div class="mingxilist" v-if="ifchina && listindex==2"> <div class="mingxilist" v-if="ifchina && listindex==2">
<div class="mingxitop"> <div class="mingxitop">
<div class="tabs"> <div class="tabs">
<span class="tabtitle">明细查询</span> <span class="tabtitle">{{lan.$t('mingxichaxun')}}</span>
<div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)"> <div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)">
全部 {{lan.$t('quanbu')}}
</div> </div>
<div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)"> <div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)">
收入 {{lan.$t('shouru')}}
</div> </div>
<div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)"> <div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)">
支出 {{lan.$t('zhichu')}}
</div> </div>
</div> </div>
<a-range-picker @change="onChange" class="choosedate" :placeholder="['请选择开始日期', '请选择结束日期']"/> <a-range-picker @change="onChange" class="choosedate" :placeholder="[lan.$t('kaishiriqi'),lan.$t('jieshuriqi')]"/>
</div> </div>
<div> <div>
<table class="table"> <table class="table">
<thead> <thead>
<tr class="head"> <tr class="head">
<th>日期</th> <th>{{lan.$t('riqi')}}</th>
<th>类型</th> <th>{{lan.$t('leixing')}}</th>
<th>金额</th> <th>{{lan.$t('jine')}}</th>
<th>操作</th> <th>{{lan.$t('caozuo')}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -209,12 +209,14 @@ import router from "@/router";
import store from '@/store'; import store from '@/store';
import { deleteaccount, getwallect, saleinfo } from "@/api"; import { deleteaccount, getwallect, saleinfo } from "@/api";
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
name: "Wallet", name: "Wallet",
components: { components: {
NavBottom, NavBottom,
}, },
setup() { setup() {
const lan: any = useI18n();
const ifchina = true; const ifchina = true;
const ifmingxi = false; const ifmingxi = false;
const salelist=ref<any>({}) const salelist=ref<any>({})
@ -304,7 +306,8 @@ export default defineComponent({
dates, dates,
del, del,
store, store,
pagechange pagechange,
lan
}; };
}, },
}); });

View File

@ -3,18 +3,18 @@
<div class="nav"> <div class="nav">
<div class="tabs"> <div class="tabs">
<div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)"> <div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)">
全部直播 {{lan.$t('quanbuzhibo')}}
</div> </div>
<div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)"> <div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)">
未开始 {{lan.$t('weikaishi')}}
</div> </div>
<div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)"> <div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)">
已结束 {{lan.$t('yijieshu')}}
</div> </div>
</div> </div>
<div class="sel"> <div class="sel">
<img src="@/static/images/sousuo.png" alt="" class="icon" /> <img src="@/static/images/sousuo.png" alt="" class="icon" />
<input placeholder="请输入想要搜索的直播标题" type="text" @keyup.enter="sel()" v-model="input" /> <input :placeholder="lan.$t('zhibosousuo')" type="text" @keyup.enter="sel()" v-model="input" />
</div> </div>
</div> </div>
<div class="list" v-if="tabindex == 1"> <div class="list" v-if="tabindex == 1">
@ -173,11 +173,13 @@ import { defineComponent, onMounted, ref } from "vue";
import LiveItem from "@/components/LiveItem.vue"; import LiveItem from "@/components/LiveItem.vue";
import { getlivelist } from "@/api"; import { getlivelist } from "@/api";
import { LivelistInfo } from "@/types"; import { LivelistInfo } from "@/types";
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
components: { components: {
LiveItem, LiveItem,
}, },
setup() { setup() {
const lan: any = useI18n();
const page = ref(1); const page = ref(1);
const tabindex = ref(1); const tabindex = ref(1);
const livelist = ref<LivelistInfo>({ const livelist = ref<LivelistInfo>({
@ -211,7 +213,8 @@ export default defineComponent({
tabchange, tabchange,
livelist, livelist,
input, input,
sel sel,
lan
}; };
}, },
}); });

View File

@ -2,7 +2,7 @@
<div class="liveing"> <div class="liveing">
<div class="top"> <div class="top">
<div class="left">直播页面</div> <div class="left">{{lan.$t('zhiboyemian')}}</div>
<div class="right"> <div class="right">
<img src="@/static/images/liveshare.png" alt="" @click="fenxiang()" /> <img src="@/static/images/liveshare.png" alt="" @click="fenxiang()" />
<img src="@/static/images/liveend.png" alt="" @click="visible = true" /> <img src="@/static/images/liveend.png" alt="" @click="visible = true" />
@ -56,7 +56,7 @@
</div> </div>
</div> </div>
<a-modal v-model:visible="visible" title="Basic Modal" @ok="guanbi"> <a-modal v-model:visible="visible" title="Basic Modal" @ok="guanbi">
<p>您确认关闭直播吗</p> <p>{{lan.$t('querenguanbi')}}</p>
</a-modal> </a-modal>
</div> </div>
</template> </template>
@ -198,6 +198,7 @@ import { getliveinfo, livestop, luzhi, usersig } from '@/api';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import store from '@/store'; import store from '@/store';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
components: { components: {
@ -205,6 +206,7 @@ export default defineComponent({
LiveingWatcher, LiveingWatcher,
}, },
setup() { setup() {
const lan: any = useI18n();
console.log(1); console.log(1);
let client: any; let client: any;
let localStream: any; let localStream: any;
@ -402,7 +404,8 @@ export default defineComponent({
qiehuan, qiehuan,
roominfo, roominfo,
guanbi, guanbi,
visible visible,
lan
} }
}, },
}); });

View File

@ -1,10 +1,10 @@
<template> <template>
<div class="subscriber"> <div class="subscriber">
<div class="top"> <div class="top">
<div class="title">我的订阅者{{teacherlikedlist.total}}</div> <div class="title">{{lan.$t('dingyuezhe')}}{{teacherlikedlist.total}}</div>
<div class="sel"> <div class="sel">
<img src="@/static/images/sousuo.png" alt="" class="icon" /> <img src="@/static/images/sousuo.png" alt="" class="icon" />
<input type="text" placeholder="请输入想要搜索的学生姓名" v-model="condition.title" @keyup.enter="search(condition)"/> <input type="text" :placeholder="lan.$t('sousuodingyue')" v-model="condition.title" @keyup.enter="search(condition)"/>
</div> </div>
</div> </div>
<div class="mid"> <div class="mid">
@ -15,38 +15,38 @@
<div> <div>
<div class="info"> <div class="info">
<div class="infoitem"> <div class="infoitem">
<span class="label">姓名:</span> <span class="label">{{lan.$t("xingming")}}:</span>
<span class="one-line-hide">{{i.name}}</span> <span class="one-line-hide">{{i.name}}</span>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label">所在国家:</span> <span class="label">{{lan.$t('suozaiguojia')}}:</span>
<span class="one-line-hide">{{i.live}}</span> <span class="one-line-hide">{{i.live}}</span>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label">年龄:</span> <span class="label">{{lan.$t('nianling')}}:</span>
<span class="one-line-hide">{{i.age}}</span> <span class="one-line-hide">{{i.age}}</span>
</div> </div>
</div> </div>
<div class="info"> <div class="info">
<div class="infoitem"> <div class="infoitem">
<span class="label">学生母语:</span> <span class="label">{{lan.$t('xueshengmuyu')}}:</span>
<span class="one-line-hide">{{i.mtongue }}</span> <span class="one-line-hide">{{i.mtongue }}</span>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label">兴趣点:</span> <span class="label">{{lan.$t('xingqudian')}}:</span>
<span class="one-line-hide">{{i.interestStr}}</span> <span class="one-line-hide">{{i.interestStr}}</span>
</div> </div>
<div class="infoitem"> <div class="infoitem">
<span class="label">语言等级:</span> <span class="label">{{lan.$t("yuyandengji")}}:</span>
<span class="one-line-hide">asd</span> <span class="one-line-hide">asd</span>
</div> </div>
<div>参加平台直播课程总时长<span class="time">{{i.longtime}}min</span></div> <div>{{lan.$t('canyupingtaishichang')}}<span class="time">{{i.longtime}}min</span></div>
</div> </div>
</div> </div>
</div> </div>
@ -166,11 +166,13 @@
</style> </style>
<script lang="ts"> <script lang="ts">
import { getteacherliked } from '@/api'; import { getteacherliked } from '@/api';
import { useI18n } from '@/utils/i18n';
import { defineComponent, onMounted, ref, toRaw } from "vue"; import { defineComponent, onMounted, ref, toRaw } from "vue";
export default defineComponent({ export default defineComponent({
name: "Subscriber", name: "Subscriber",
components: {}, components: {},
setup() { setup() {
const lan: any = useI18n();
const page = ref(1); const page = ref(1);
const teacherlikedlist =ref<any>({ const teacherlikedlist =ref<any>({
@ -194,7 +196,8 @@ export default defineComponent({
teacherlikedlist, teacherlikedlist,
condition, condition,
title, title,
search search,
lan
}; };
}, },
}); });

View File

@ -3,21 +3,21 @@
<div class="nav"> <div class="nav">
<div class="tabs"> <div class="tabs">
<div :class="tabindex == 4 ? 'on' : ''" @click="tabchange(4)"> <div :class="tabindex == 4 ? 'on' : ''" @click="tabchange(4)">
全部视频 {{lan.$t('quanbushipin')}}
</div> </div>
<div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)"> <div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)">
审核中 {{lan.$t('shenhezhong')}}
</div> </div>
<div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)"> <div :class="tabindex == 2 ? 'on' : ''" @click="tabchange(2)">
未通过 {{lan.$t('weitongguo')}}
</div> </div>
<div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)"> <div :class="tabindex == 1 ? 'on' : ''" @click="tabchange(1)">
已发布 {{lan.$t('yifabu')}}
</div> </div>
</div> </div>
<div class="sel"> <div class="sel">
<img src="@/static/images/sousuo.png" alt="" class="icon" /> <img src="@/static/images/sousuo.png" alt="" class="icon" />
<input type="text" placeholder="请输入想要搜索的直播标题" @keyup.enter="sel()" v-model="input"/> <input type="text" :placeholder="lan.$t('shipinsousuo')" @keyup.enter="sel()" v-model="input"/>
</div> </div>
</div> </div>
<div class="list" v-if="tabindex == 4"> <div class="list" v-if="tabindex == 4">
@ -195,11 +195,13 @@ import { defineComponent, onMounted, reactive, ref, UnwrapRef } from "vue";
import VideoItem from "@/components/VideoItem.vue"; import VideoItem from "@/components/VideoItem.vue";
import { getvideolist } from "@/api"; import { getvideolist } from "@/api";
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { useI18n } from '@/utils/i18n';
export default defineComponent({ export default defineComponent({
components: { components: {
VideoItem, VideoItem,
}, },
setup() { setup() {
const lan: any = useI18n();
const page = ref(1); const page = ref(1);
const tabindex = ref(4); const tabindex = ref(4);
interface VideoList { interface VideoList {
@ -251,7 +253,8 @@ export default defineComponent({
videolist, videolist,
sel, sel,
input, input,
pagechange pagechange,
lan
}; };
}, },
}); });