xbx #118

Merged
theluyuan merged 10 commits from xbx into master 2020-11-06 23:45:06 +08:00
22 changed files with 237 additions and 84 deletions

View File

@ -673,8 +673,9 @@ interface SendSms{
msg: string; msg: string;
} }
export async function sendsms(phone: string, type: number): Promise<boolean>{ export async function sendsms(code: string ,phone: string): Promise<boolean>{
const res = await post<SendSms>("SendSms", {phone, type}); const type = code == '86' ? 0 : 1;
const res = await post<SendSms>("SendSms", {phone: code + phone, type});
console.log(res); console.log(res);
if(res.code == 0){ if(res.code == 0){
message.success(res.msg); message.success(res.msg);
@ -947,7 +948,7 @@ export async function liveinfo(id: number): Promise<any>{
} }
export async function setlive(data: any){ export async function setlive(data: any){
data.status = 0; data.status = data.livestatus;
const info = await put("live/" + data.id, data) const info = await put("live/" + data.id, data)
console.log(info.data) console.log(info.data)
if(info.code==0){ if(info.code==0){
@ -1024,3 +1025,7 @@ export async function interests() {
return res.data; return res.data;
} }
export async function getset() {
const res = await get('getset');
return res.data;
}

View File

@ -174,15 +174,12 @@ export default defineComponent({
const lan: any = useI18n(); const lan: any = useI18n();
function navto(){ function navto(){
let url = ''; let url = '';
switch (props.type) { switch (props.status) {
case 1: case 1:
url = '/regime/livedetail'; url = '/regime/liveing';
break; break;
case 2: default:
url = '/regime/livedetail'; url = '/regime/livedetail';
break;
case 3:
url = '/regeime/liveing';
} }
console.log(props.zid); console.log(props.zid);
if(props.zid != undefined){ if(props.zid != undefined){

View File

@ -157,7 +157,7 @@
width: 57px; width: 57px;
height: 57px; height: 57px;
border-radius: 50%; border-radius: 50%;
background-color: #0f0; // background-color: #0f0;
} }
} }
} }

View File

@ -5,56 +5,20 @@
</div> </div>
<div class="info"> <div class="info">
<div class="item"> <div class="item" v-for="(item,index) in list" :key="index">
<div style="display:flex"> <div style="display:flex">
<div class="stuinfo"> <div class="stuinfo">
<div>andy</div> <div>{{item.name}}</div>
</div> </div>
</div> </div>
<div class="icons"> <div class="icons">
<img src="@/static/images/camera.png" alt="" class="icon"> <img src="@/static/images/camera.png" @click="cameta(item.memberid)" alt="" class="icon">
<img src="@/static/images/vol.png" alt="" class="icon"> <img src="@/static/images/vol.png" alt="" class="icon" @click="vol(item.memberid)">
</div> </div>
</div> </div>
<div class="item">
<div style="display:flex">
<div class="stuinfo">
<div>andy</div>
</div>
</div>
<div class="icons">
<img src="@/static/images/camera.png" alt="" class="icon">
<img src="@/static/images/vol.png" alt="" class="icon">
</div>
</div>
<div class="item">
<div style="display:flex">
<div class="stuinfo">
<div>andy</div>
</div>
</div>
<div class="icons">
<img src="@/static/images/camera.png" alt="" class="icon">
<img src="@/static/images/vol.png" alt="" class="icon">
</div>
</div>
<div class="item">
<div style="display:flex">
<div class="stuinfo">
<div>andy</div>
</div>
</div>
<div class="icons">
<img src="@/static/images/camera.png" alt="" class="icon">
<img src="@/static/images/vol.png" alt="" class="icon">
</div>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -147,5 +111,23 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from "vue"; import { defineComponent } from "vue";
export default defineComponent({}); export default defineComponent({
props:{
list:{
type: Array
}
},
setup(prop,context){
function cameta(id: number){
context.emit("cameta", id)
}
function vol(id: number){
context.emit("vol", id)
}
return {
cameta,
vol
}
}
});
</script> </script>

View File

@ -185,11 +185,22 @@ export default defineComponent({
const userinfo = computed(() => store.state.userinfo) const userinfo = computed(() => store.state.userinfo)
// //
for(const i in list){ const routelist = [
console.log(list[i].route==useRoute().path) ["/mine/archives"],
if(list[i].route == useRoute().path){ ['/mine/webcast'],
selnum.value = parseInt(i); ['/mine/video'],
['/mine/wallet', '/mine/cashout', '/mine/addaccount', '/mine/transaction', '/mine/transactionxq'],
['/mine/liststatistic'],
['/mine/aboutus']
]
for(const i in routelist){
for(const j in routelist[i]){
console.log(routelist[i][j]==useRoute().path)
if(routelist[i][j] == useRoute().path){
selnum.value = parseInt(i);
}
} }
} }
/** /**
* 跳转路由与赋值对应的下标 * 跳转路由与赋值对应的下标

View File

@ -328,7 +328,10 @@ export default defineComponent({
} }
function toindex(){ function toindex(){
router.push("/") if(!store.state.islogin){
return ;
}
router.push("/mine/archives")
} }
return { return {

View File

@ -63,7 +63,7 @@
width: 57px; width: 57px;
height: 57px; height: 57px;
border-radius: 50%; border-radius: 50%;
background-color: #0f0; // background-color: #0f0;
} }
.name{ .name{

View File

@ -33,7 +33,7 @@
width: 45px; width: 45px;
height: 45px; height: 45px;
border-radius: 50%; border-radius: 50%;
background-color: #0f0; // background-color: #0f0;
} }
.name{ .name{

View File

@ -189,7 +189,6 @@ export default {
xuanzezhanghu: "Select account", xuanzezhanghu: "Select account",
tixianjine: "Withdrawal amount", tixianjine: "Withdrawal amount",
quanbujine: "Total amount", quanbujine: "Total amount",
tixianzhu: "Note: 0.1% service fee will be charged for each withdrawal, with a minimum of ¥ 0.1",
yueshu: "Your balance is only", yueshu: "Your balance is only",
zuiditixian: "Minimum withdrawal amount ¥ 100", zuiditixian: "Minimum withdrawal amount ¥ 100",
mingxichaxun: "Details inquiry", mingxichaxun: "Details inquiry",
@ -297,5 +296,8 @@ export default {
kaihuhangweikong:"Swiftcode cannot be empty", kaihuhangweikong:"Swiftcode cannot be empty",
shensu:"Appeal", shensu:"Appeal",
querenquxiao: "Are you sure to cancel the live broadcast?", querenquxiao: "Are you sure to cancel the live broadcast?",
tianjiatixian: "Add a withdrawal account" tianjiatixian: "Add a withdrawal account",
shichangtishi:"",
renshutishi: '',
tixianzhu: "",
} }

View File

@ -1,9 +1,27 @@
import zh from "./zh" import zh from "./zh"
import en from "./en" import en from "./en"
import { getset } from '@/api';
import { geti18n } from '@/utils/i18n';
getset().then((res: any)=>{
zh.shichangtishi = `最短${res.timeLowerLimit}min, 最长${res.timeCeiling}min`
en.shichangtishi = `The shortest is ${res.timeLowerLimit}min and the longest is ${res.timeCeiling}min`
zh.renshutishi = `最少${res.lowerLimit}人, 最多${res.numberCeiling}`
en.renshutishi = `At least ${res.lowerLimit}, at most ${res.numberCeiling}`
en.shichangtishi = `Minimum ${res.lowerLimit} person, maximum ${res.numberCeiling} people`
zh.tixianzhu = `注:每笔提现收取${res.sxf}服务费,最低${ res.symbol + res.minmoney }`
en.tixianzhu = `Note: ${res.sxf} service fee will be charged for each withdrawal, with a minimum of ${ res.symbol + res.minmoney }`
const i18n = geti18n();
const loc = i18n.locale.value;
i18n.locale.value = '';
i18n.locale.value = loc;
console.log('i18n')
})
export default { export default {
locale: "zh", //默认语言 locale: "zh", //默认语言
messages: { messages: {
zh, zh: zh,
en en: en
} }
} }

View File

@ -192,7 +192,6 @@ export default {
xuanzezhanghu:"选择账户", xuanzezhanghu:"选择账户",
tixianjine:"提现金额", tixianjine:"提现金额",
quanbujine:"全部金额", quanbujine:"全部金额",
tixianzhu:"注每笔提现收取0.1%服务费最低¥0.1",
yueshu:"您的余额只有", yueshu:"您的余额只有",
zuiditixian:"最低提现金额¥100", zuiditixian:"最低提现金额¥100",
mingxichaxun:"明细查询", mingxichaxun:"明细查询",
@ -297,5 +296,8 @@ export default {
kaihuhangweikong:"开户行不能为空", kaihuhangweikong:"开户行不能为空",
shensu:"申诉", shensu:"申诉",
querenquxiao: "您确认取消直播吗?", querenquxiao: "您确认取消直播吗?",
tianjiatixian: "添加提现账户" tianjiatixian: "添加提现账户",
shichangtishi:"",
renshutishi: '',
tixianzhu:"",
} }

5
src/import-png.d.ts vendored
View File

@ -13,4 +13,9 @@ declare module "ant-design-vue/es/locale/zh_CN" {
export default value; export default value;
} }
declare module 'tim-js-sdk'{
const value: any;
export default value;
}
declare var FB: any; declare var FB: any;

View File

@ -195,7 +195,7 @@ export default defineComponent({
align-items: center; align-items: center;
position: fixed; position: fixed;
top: 0; top: 0;
z-index: 9999; z-index: 99;
.navcontent{ .navcontent{
width: 910px; width: 910px;
margin: 0 auto; margin: 0 auto;

View File

@ -188,7 +188,7 @@ export default defineComponent({
} }
lock = true; lock = true;
console.log(myquhao.value,"quhao") console.log(myquhao.value,"quhao")
sendsms(myquhao.value + phone.value, 0); sendsms(myquhao.value, phone.value);
const timestep = setInterval(() => { const timestep = setInterval(() => {
console.log(11112); console.log(11112);

View File

@ -138,7 +138,7 @@ export default defineComponent({
return; return;
} }
lock = true; lock = true;
sendsms(uinfo.value.quhao + uinfo.value.phone, 0); sendsms(uinfo.value.quhao, uinfo.value.phone);
const timestep = setInterval(() => { const timestep = setInterval(() => {
console.log(11112); console.log(11112);
time.value = time.value - 1; time.value = time.value - 1;

View File

@ -285,7 +285,7 @@ export default defineComponent({
return; return;
} }
lock = true; lock = true;
sendsms(phone.value.quhao + phone.value.phone, 0); sendsms(phone.value.quhao, phone.value.phone);
const timestep = setInterval(() => { const timestep = setInterval(() => {
console.log(phone); console.log(phone);
time.value = time.value - 1; time.value = time.value - 1;

View File

@ -348,7 +348,7 @@
<div <div
@click=" @click="
sendVerificationCode( sendVerificationCode(
userinfo.code + userinfo.mobile userinfo.code , userinfo.mobile
) )
" "
class="confirm-btn" class="confirm-btn"
@ -411,7 +411,7 @@
/> />
<div <div
@click=" @click="
sendVerificationCode(myquhao + mynewtel) sendVerificationCode(myquhao , mynewtel)
" "
class="confirm-btn" class="confirm-btn"
> >
@ -678,11 +678,11 @@ export default defineComponent({
/** /**
* 发送验证码 * 发送验证码
*/ */
function sendVerificationCode(tel: string): void { function sendVerificationCode(code: string ,tel: string): void {
if (remainTime.value === 0) { if (remainTime.value === 0) {
computedVerificationCode(); computedVerificationCode();
console.log(tel, "send"); console.log(tel, "send");
sendsms(tel, 0); sendsms(code, tel);
} }
} }
// //

View File

@ -126,7 +126,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, ref, toRaw } from "vue"; import { computed, defineComponent, onMounted, ref, toRaw } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { cashout, getwallect } from "@/api"; import { cashout, getwallect } from "@/api";
import store from "@/store"; import store from "@/store";
@ -154,7 +154,7 @@ export default defineComponent({
console.log(e); console.log(e);
}; };
const yue=ref<number>(store.state.userinfo.moneyValue) const yue=ref<number>(store.state.userinfo.moneyValue)
const danwei = ref(store.state.userinfo.symbol) const danwei = computed(() => store.state.userinfo.symbol)
// const yue = ref<number>(10000); // const yue = ref<number>(10000);
// yue.value=store.state.userinfo.money // yue.value=store.state.userinfo.money
const accountlist = ref<Array<any>>([]); const accountlist = ref<Array<any>>([]);

View File

@ -143,7 +143,7 @@
type="number" type="number"
/> />
<span class="unit">{{ lan.$t("fenzhong") }}</span> <span class="unit">{{ lan.$t("fenzhong") }}</span>
<div style="color: red;font-size: 0.12rem;line-height: 1.3;">*最短30min, 最长120min</div> <div style="color: red;font-size: 0.12rem;line-height: 1.3;">*{{ lan.$t('shichangtishi') }}</div>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="lan.$t('zhiborenshu')" :label="lan.$t('zhiborenshu')"
@ -156,7 +156,7 @@
:placeholder="lan.$t('shuruzhiborenshu')" :placeholder="lan.$t('shuruzhiborenshu')"
type="number" type="number"
/> />
<div style="color: red;font-size: 0.12rem;line-height: 1.3;">*最少1人, 最多4人</div> <div style="color: red;font-size: 0.12rem;line-height: 1.3;">*{{ lan.$t('renshutishi') }}</div>
</a-form-item> </a-form-item>
<a-form-item :label="lan.$t('zhibojianjie')" class="brief"> <a-form-item :label="lan.$t('zhibojianjie')" class="brief">

View File

@ -187,7 +187,7 @@ export default defineComponent({
setup() { setup() {
const lan: any = useI18n(); const lan: any = useI18n();
const page = ref(1); const page = ref(1);
const tabindex = ref(1); const tabindex = ref<number | string>(1);
const livelist = ref<LivelistInfo>({ const livelist = ref<LivelistInfo>({
code: 0, code: 0,
total: 0, total: 0,
@ -200,7 +200,11 @@ export default defineComponent({
}); });
async function tab(){ async function tab(){
input.value = ''; input.value = '';
livelist.value = await getlivelist({ status: tabindex.value}); let index: string | number = '';
if(tabindex.value != 1){
index = tabindex.value
}
livelist.value = await getlivelist({ status: index});
} }
function tabchange(e: number): void { function tabchange(e: number): void {

View File

@ -9,7 +9,7 @@
</div> </div>
</div> </div>
<div class="info"> <div class="info">
<LiveingWatcher></LiveingWatcher> <LiveingWatcher :list="roominfo.studentlist" @cameta="sendtext" @vol="senvol"></LiveingWatcher>
<div class="LivePlaying"> <div class="LivePlaying">
<LivePlaying></LivePlaying> <LivePlaying></LivePlaying>
<div class="comment"> <div class="comment">
@ -190,7 +190,7 @@
} }
</style> </style>
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, ref } from "vue"; import { defineComponent, onMounted, ref, resolveComponent } from "vue";
import LivePlaying from "@/components/LivePlaying.vue"; import LivePlaying from "@/components/LivePlaying.vue";
import LiveingWatcher from "@/components/LiveingWatcher.vue"; import LiveingWatcher from "@/components/LiveingWatcher.vue";
import TRTC from "trtc-js-sdk" import TRTC from "trtc-js-sdk"
@ -199,6 +199,7 @@ 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'; import { useI18n } from '@/utils/i18n';
import TIM from 'tim-js-sdk';
export default defineComponent({ export default defineComponent({
components: { components: {
@ -217,6 +218,7 @@ export default defineComponent({
const roominfo = ref<any>([]); const roominfo = ref<any>([]);
console.log(useRoute()) console.log(useRoute())
const id = useRoute().query.id; const id = useRoute().query.id;
let tim: any;
TRTC.checkSystemRequirements().then((result: any) => { TRTC.checkSystemRequirements().then((result: any) => {
if(!result) { if(!result) {
message.error(lan.$t('buzhichitonghua')) message.error(lan.$t('buzhichitonghua'))
@ -323,7 +325,7 @@ export default defineComponent({
client = TRTC.createClient({ client = TRTC.createClient({
mode: 'rtc', mode: 'rtc',
sdkAppId: '1400400340', sdkAppId: '1400435767',
userId: store.state.userinfo.memberid, userId: store.state.userinfo.memberid,
userSig: userSig userSig: userSig
}); });
@ -351,6 +353,87 @@ export default defineComponent({
// } // }
fun() fun()
}); });
// im
tim = TIM.create({
SDKAppID: 1400400340
}); // SDK tim
tim.setLogLevel(0);
tim.on(TIM.EVENT.MESSAGE_RECEIVED, function(event: any) {
// event.data
// event.name - TIM.EVENT.MESSAGE_RECEIVED
// event.data - Message - [Message]
for(const i in event.data){
console.log(event.data[i])
}
});
tim.on(TIM.EVENT.GROUP_LIST_UPDATED, function(event: any) {
// event.data
// event.name - TIM.EVENT.GROUP_LIST_UPDATED
// event.data - Group - [Group]
console.log(event.data)
});
tim.login({userID: store.state.userinfo.memberid.toString(), userSig: userSig}).then((res: any)=>{
console.log(res.data); //
if (res.data.repeatLogin === true) {
// v2.5.1
console.log(res.data.errorInfo);
}
}).catch(function(imError: any) {
console.warn('login error:', imError); //
});
tim.on(TIM.EVENT.SDK_READY, function (){
const promise = tim.createGroup({
type: TIM.TYPES.GRP_AVCHATROOM,
name: 'live',
groupID: roominfo.value.roomid
});
promise.then(function(imResponse: any) { //
console.log(imResponse.data.group); //
tim.joinGroup({
groupID: roominfo.value.roomid,
type: TIM.TYPES.GRP_AVCHATROOM
}).then((res: any)=>{
switch (res.data.status) {
case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: //
break;
case TIM.TYPES.JOIN_STATUS_SUCCESS: //
console.log(res.data.group); //
break;
case TIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: //
break;
default:
break;
}
}).catch((err: any)=>{
console.log(err)
})
}).catch(function(imError: any) {
console.warn('createGroup error:', imError); //
tim.joinGroup({
groupID: roominfo.value.roomid,
type: TIM.TYPES.GRP_AVCHATROOM
}).then((res: any)=>{
switch (res.data.status) {
case TIM.TYPES.JOIN_STATUS_WAIT_APPROVAL: //
break;
case TIM.TYPES.JOIN_STATUS_SUCCESS: //
console.log(res.data.group); //
break;
case TIM.TYPES.JOIN_STATUS_ALREADY_IN_GROUP: //
break;
default:
break;
}
}).catch((err: any)=>{
console.log(err)
})
});
});
} }
async function fenxiang(){ async function fenxiang(){
console.log(localStream) console.log(localStream)
@ -387,6 +470,46 @@ export default defineComponent({
}); });
} }
function sendtext(id: number){
const m = tim.createTextMessage({
to: roominfo.value.roomid,
conversationType: TIM.TYPES.CONV_GROUP,
payload: {
text: `beelinkMuteUserId:${id},isClose:0`
}
});
const promise = tim.sendMessage(m);
promise.then(function(imResponse: any) {
//
console.log(imResponse);
message.success("发送命令成功")
}).catch(function(imError: any) {
//
message.error("发送命令失败")
console.warn('sendMessage error:', imError);
});
}
function sendvol(id: number){
const m = tim.createTextMessage({
to: roominfo.value.roomid,
conversationType: TIM.TYPES.CONV_GROUP,
payload: {
text: `beelinkTurnOffTheCameraUserId:${id},isClose:1
0`
}
});
const promise = tim.sendMessage(m);
promise.then(function(imResponse: any) {
//
console.log(imResponse);
message.success("发送命令成功")
}).catch(function(imError: any) {
//
message.error("发送命令失败")
console.warn('sendMessage error:', imError);
});
}
onMounted(async ()=>{ onMounted(async ()=>{
const si = setInterval(async ()=>{ const si = setInterval(async ()=>{
if(store.state.userinfo.memberid != 0 && store.state.userinfo.memberid){ if(store.state.userinfo.memberid != 0 && store.state.userinfo.memberid){
@ -405,7 +528,8 @@ export default defineComponent({
roominfo, roominfo,
guanbi, guanbi,
visible, visible,
lan lan,
sendtext
} }
}, },
}); });

View File

@ -4,7 +4,7 @@
<VideoPlay :url="result.fileurl"></VideoPlay> <VideoPlay :url="result.fileurl"></VideoPlay>
<VideoCont :videoid="result.videoid" :date="result.createdAt" :watch="result.watch" :share="result.share" :status="result.status"></VideoCont> <VideoCont :videoid="result.videoid" :date="result.createdAt" :watch="result.watch" :share="result.share" :status="result.status"></VideoCont>
</div> </div>
<VideoReview class="review"></VideoReview> <VideoReview class="review" v-if="result.status == 1"></VideoReview>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>