xbx #134

Merged
theluyuan merged 34 commits from xbx into master 2020-11-18 06:56:15 +00:00
32 changed files with 368 additions and 114 deletions

View File

@ -19,6 +19,7 @@
"trtc-js-sdk": "^4.6.5", "trtc-js-sdk": "^4.6.5",
"vod-js-sdk-v6": "^1.4.10", "vod-js-sdk-v6": "^1.4.10",
"vue": "^3.0.0-0", "vue": "^3.0.0-0",
"vue-cropper": "^0.5.5",
"vue-router": "^4.0.0-0", "vue-router": "^4.0.0-0",
"vuex": "^4.0.0-0" "vuex": "^4.0.0-0"
}, },

View File

@ -9,7 +9,7 @@ html{
body{ body{
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #fff; background-color: #F5F5F5;
font-family: Futura,sans-serif; font-family: Futura,sans-serif;
} }
video{ video{

View File

@ -7,15 +7,15 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title> <title><%= htmlWebpackPlugin.options.title %></title>
<link href="http://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.css" rel="stylesheet"> <link href="https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.css" rel="stylesheet">
<!-- 如需在IE8、9浏览器中初始化播放器浏览器需支持Flash并在页面中引入 --> <!-- 如需在IE8、9浏览器中初始化播放器浏览器需支持Flash并在页面中引入 -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="//imgcache.qq.com/open/qcloud/video/tcplayer/ie8/videojs-ie8.js"></script> <script src="//imgcache.qq.com/open/qcloud/video/tcplayer/ie8/videojs-ie8.js"></script>
<![endif]--> <![endif]-->
<!-- 如果需要在 Chrome Firefox 等现代浏览器中通过H5播放hls需要引入 hls.js --> <!-- 如果需要在 Chrome Firefox 等现代浏览器中通过H5播放hls需要引入 hls.js -->
<script src="http://imgcache.qq.com/open/qcloud/video/tcplayer/lib/hls.min.0.8.8.js"></script> <script src="https://imgcache.qq.com/open/qcloud/video/tcplayer/lib/hls.min.0.8.8.js"></script>
<!-- 引入播放器 js 文件 --> <!-- 引入播放器 js 文件 -->
<script src="http://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.min.js"></script> <script src="https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.min.js"></script>
<script> <script>
//designWidth:设计稿的实际宽度值,需要根据实际设置 //designWidth:设计稿的实际宽度值,需要根据实际设置
//maxWidth:制作稿的最大宽度值,需要根据实际设置 //maxWidth:制作稿的最大宽度值,需要根据实际设置
@ -79,7 +79,7 @@
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
z-index: 999; z-index: 1001;
display: none; display: none;
} }
</style> </style>

View File

@ -267,11 +267,12 @@
<!-- content --> <!-- content -->
<div class="row-div" style="height: 100%; width: 100%; padding: 10px"> <div class="row-div" style="height: 100%; width: 100%; padding: 10px">
<div class="col-div" style="width: 340px; height: 100%; padding: 10px"> <div class="col-div" style="width: 340px; height: 100%; padding: 10px">
<div class="col-div card" style="width: 100%; height: 100%"> <div class="col-div card" style="width: 100%; height: 100%; padding: 23px">
<!-- 成员列表 --> <!-- 成员列表 -->
<div style="width: 100%;">上课人员</div>
<div id="member-list" class="col-div" style="width: 100%; justify-content: flex-start; flex: 1"> <div id="member-list" class="col-div" style="width: 100%; justify-content: flex-start; flex: 1">
<!-- member --> <!-- member -->
<div id="member-me" style="width: 100%; padding-left: 20px"> <!-- <div id="member-me" style="width: 100%; padding-left: 20px">
<div class="row-div member" <div class="row-div member"
style="width: 100%; height: 50px; justify-content: space-between"> style="width: 100%; height: 50px; justify-content: space-between">
<div class="member-id">(我)</div> <div class="member-id">(我)</div>
@ -283,7 +284,7 @@
alt=""> alt="">
</div> </div>
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>

View File

@ -16,12 +16,13 @@ import { provideI18n } from "@/utils/i18n"
import i18ninit from "@/i18n/init" import i18ninit from "@/i18n/init"
import enUS from 'ant-design-vue/es/locale/en_US'; import enUS from 'ant-design-vue/es/locale/en_US';
import zhCN from 'ant-design-vue/es/locale/zh_CN'; import zhCN from 'ant-design-vue/es/locale/zh_CN';
import dayjs from 'dayjs';
export default defineComponent({ export default defineComponent({
setup(){ setup(){
console.log(i18ninit) console.log(i18ninit)
const len = provideI18n(i18ninit); const len = provideI18n(i18ninit);
len.locale.value = !getValue("Lanvuage") ? 'zh' : getValue("Lanvuage"); // len.locale.value = !getValue("Lanvuage") ? 'zh' : getValue("Lanvuage");
if(getValue('token')){ if(getValue('token')){
store.commit("login", true) store.commit("login", true)
store.dispatch("setUserInfo"); store.dispatch("setUserInfo");
@ -34,6 +35,14 @@ export default defineComponent({
} }
const zh = zhCN const zh = zhCN
const en = enUS const en = enUS
/* eslint-disable */
const utc = require('dayjs/plugin/utc') // dependent on utc plugin
/* eslint-disable */
const timezone = require('dayjs/plugin/timezone')
const days: any = dayjs;
dayjs.extend(utc)
dayjs.extend(timezone)
console.log(days.tz.guess())
return{ return{
zh, zh,
en, en,

View File

@ -14,6 +14,25 @@ export interface Get {
let login: MessageType; let login: MessageType;
let count = 0; let count = 0;
const div: any = document.getElementById("make"); const div: any = document.getElementById("make");
export function countadd(){
if(count == 0){
login = message.loading('加载中..', 0)
div.style.display = "block"
}
count++;
}
export function countdel(){
if(count != 0){
setTimeout(()=>{
count--;
if(count == 0){
login();
div.style.display = "none"
}
console.log(count)
}, 1000)
}
}
axios.interceptors.request.use((config)=>{ axios.interceptors.request.use((config)=>{
if(count == 0){ if(count == 0){
login = message.loading('加载中..', 0) login = message.loading('加载中..', 0)

View File

@ -3,6 +3,7 @@ import store from '@/store';
import { LiveList, LivelistInfo, LoginData, UserInfo } from '@/types'; import { LiveList, LivelistInfo, LoginData, UserInfo } from '@/types';
import { getValue, saveValue } from '@/utils/common'; import { getValue, saveValue } from '@/utils/common';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import dayjs from 'dayjs';
import { del, get, post, put, setToken } from './base' import { del, get, post, put, setToken } from './base'
@ -885,6 +886,14 @@ export async function checksmscode(phone: string, smscode: string){
export async function register(data: any){ export async function register(data: any){
/* eslint-disable */
const utc = require('dayjs/plugin/utc') // dependent on utc plugin
/* eslint-disable */
const timezone = require('dayjs/plugin/timezone')
const days: any = dayjs;
dayjs.extend(utc)
dayjs.extend(timezone)
const res = await post<any>("register",{ const res = await post<any>("register",{
mobile: data.phone, mobile: data.phone,
code: data.quhao, code: data.quhao,
@ -893,7 +902,10 @@ export async function register(data: any){
name: data.name, name: data.name,
email: data.emil, email: data.emil,
mtongue: data.muyu, mtongue: data.muyu,
tlanguage: data.jiaoshou tlanguage: data.jiaoshou,
language: getValue("Lanvuage") || 'zh',
zoneid: days.tz.guess()
}) })
if(res.code == 0){ if(res.code == 0){
message.success(res.msg) message.success(res.msg)
@ -1022,17 +1034,22 @@ export async function getaddr() {
const res = await get<any>('ip'); const res = await get<any>('ip');
const gj = res.data.address.split("|")[0]; const gj = res.data.address.split("|")[0];
const lan = getValue("Lanvuage"); const lan = getValue("Lanvuage");
const qh = await get<any>('countryCode', {
longitude: res.data.content.point.x,
latitude: res.data.content.point.y
});
console.log(qh)
if(lan != null && lan){ if(lan != null && lan){
if(gj == "CN"){ if(gj == "CN"){
return ['人民币¥']; return {hb: '人民币¥', qh};
}else { }else {
return [ '美元$'] return {hb: '美元$'}
} }
}else{ }else{
if(gj == "CN"){ if(gj == "CN"){
return ["zh", "中文", '人民币¥']; return {yy: "zh", yyx: "中文", hb: '人民币¥', qh};
}else { }else {
return ['en', 'English', '美元$'] return {yy: 'en', yyx: 'English', hb: '美元$', qh}
} }
} }

View File

@ -2,7 +2,10 @@
<div class="menu"> <div class="menu">
<div class="user" style="overflow: hidden;"> <div class="user" style="overflow: hidden;">
<div class="user" :class="{'seltop': selnum == 0}"> <div class="user" :class="{'seltop': selnum == 0}">
<img :src="userinfo.img" alt="" class="head"> <!-- <img :src="userinfo.img" alt="" class="head"> -->
<a-avatar :size="85" shape="circle" class="head" :src="userinfo.img">
<template v-slot:icon><UserOutlined /></template>
</a-avatar>
<div class="name">{{userinfo.name}}</div> <div class="name">{{userinfo.name}}</div>
</div> </div>
</div> </div>
@ -20,7 +23,7 @@
<div style="overflow: hidden;"> <div style="overflow: hidden;">
<div class="item" :class="{'selbottom': selnum == list.length - 1}"></div> <div class="item" :class="{'selbottom': selnum == list.length - 1}"></div>
</div> </div>
<div class="item loginout" @click="logout"> <div class="item loginout" @click="visible = true">
<div class="route"> <div class="route">
<img src="../static/images/tuichu.png" alt="" class="icon"> <img src="../static/images/tuichu.png" alt="" class="icon">
<div class="title"> <div class="title">
@ -29,6 +32,9 @@
</div> </div>
</div> </div>
</div> </div>
<a-modal v-model:visible="visible" :title="lan.$t('tishi')" @ok="logout">
<p>{{lan.$t('querentuichu')}}</p>
</a-modal>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -220,6 +226,8 @@ export default defineComponent({
selnum.value = index; selnum.value = index;
} }
const visible = ref(false);
function logout(): void{ function logout(): void{
console.log("退出") console.log("退出")
store.commit("login", false) store.commit("login", false)
@ -237,6 +245,7 @@ export default defineComponent({
logout, logout,
mouse, mouse,
lan, lan,
visible,
jiantou: require('../static/images/jiantou.png'), jiantou: require('../static/images/jiantou.png'),
jiantous: require('../static/images/kuozhan1.png') jiantous: require('../static/images/kuozhan1.png')
} }

View File

@ -41,34 +41,7 @@
</template> </template>
</a-dropdown> </a-dropdown>
<a-dropdown :trigger="['click']" :getPopupContainer="triggerNode => triggerNode.parentNode" v-if="islogin">
<div class="item" @click="e => e.preventDefault()">
<img src="@/static/images/qianbi.png" alt="" class="icon">
<div class="name">{{userinfo.currency}}</div>
<img src="@/static/images/jiantou2.png" alt="" class="down">
</div>
<template v-slot:overlay>
<a-menu style="max-height:70vh;overflow: auto;">
<!-- 货币 -->
<a-menu-item v-for="(i,j) in currencylist" :key="j" style="position: relative;">
<div class="selitem" @click="currencychange(i.value)">
<span :style="{'color': i.name == userinfo.currency ? '#06C7AE' : ''}">{{i.name}} </span>
<img src="@/static/images/duihao.png" alt="" v-if="i.name == userinfo.currency" class="duihao">
</div>
</a-menu-item>
<!-- <a-menu-item key="1">
<div class="selitem">
<span>时区2b</span>
</div>
</a-menu-item>
<a-menu-item key="3">
<div class="selitem">
<span>时区3b</span>
</div>
</a-menu-item> -->
</a-menu>
</template>
</a-dropdown>
<a-dropdown :trigger="['click']" :getPopupContainer="triggerNode => triggerNode.parentNode"> <a-dropdown :trigger="['click']" :getPopupContainer="triggerNode => triggerNode.parentNode">
<div class="item" @click="e => e.preventDefault()"> <div class="item" @click="e => e.preventDefault()">
<img src="@/static/images/yuyan.png" alt="" class="icon"> <img src="@/static/images/yuyan.png" alt="" class="icon">

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="video"> <div class="video">
<div class="title">{{title}}</div>
<video style="width:100%; height:100%;" :id="'a' + url" ></video> <video style="width:100%; height:100%;" :id="'a' + url" ></video>
</div> </div>
</template> </template>
@ -10,12 +10,21 @@
height: 563px; height: 563px;
border-radius: 17px; border-radius: 17px;
background: white; background: white;
position: relative;
// background-color: #0f0; // background-color: #0f0;
overflow: hidden; overflow: hidden;
>video{ >video{
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.title{
position: absolute;
top: 23px;
left: 51px;
font-size: 13px;
color: #fff;
z-index: 999;
}
} }
</style> </style>
<script lang="ts"> <script lang="ts">
@ -27,6 +36,9 @@ export default defineComponent({
props:{ props:{
url: { url: {
type: String type: String
},
title: {
type: String
} }
}, },
setup(props, ctx){ setup(props, ctx){

View File

@ -42,6 +42,7 @@ export default {
banquan: "Copyright Beelink Inc. All rights reserved 2019-2022", banquan: "Copyright Beelink Inc. All rights reserved 2019-2022",
zhanghao: "accounts", zhanghao: "accounts",
shuruzhanghao: "Please enter your email or mobile phone number", shuruzhanghao: "Please enter your email or mobile phone number",
shuruzhanghaol: "Please enter your email address or country number + mobile phone number34690xxx",
mima: "password", mima: "password",
shurumima: "Please enter your password", shurumima: "Please enter your password",
wangjimima: "Forget the password?", wangjimima: "Forget the password?",
@ -90,7 +91,7 @@ export default {
shuliandu: "Proficiency", shuliandu: "Proficiency",
jixutianjia: "Continue adding", jixutianjia: "Continue adding",
xindemuyu: "Please enter your new mother tongue", xindemuyu: "Please enter your new mother tongue",
duanshipin: "Short video", duanshipin: "Short video introduction",
shipinyaoqiu: "Video requirements:", shipinyaoqiu: "Video requirements:",
shipinyaoqiu1: "The time required for uploading video is within 30s", shipinyaoqiu1: "The time required for uploading video is within 30s",
shipinyaoqiu2: "Support file size 100m", shipinyaoqiu2: "Support file size 100m",
@ -190,7 +191,7 @@ export default {
tixianjine: "Withdrawal amount", tixianjine: "Withdrawal amount",
quanbujine: "Total amount", quanbujine: "Total amount",
yueshu: "Your balance is only", yueshu: "Your balance is only",
zuiditixian: "Minimum withdrawal amount ¥ 100", zuiditixian: "Minimum withdrawal amount",
mingxichaxun: "Details inquiry", mingxichaxun: "Details inquiry",
kaishiriqi: "Please select the start date", kaishiriqi: "Please select the start date",
jieshuriqi: "Please select the end date", jieshuriqi: "Please select the end date",
@ -301,6 +302,15 @@ export default {
shijishichang: "Actual live broadcast duration", shijishichang: "Actual live broadcast duration",
cshipinyaoqiu1: "The video should be no longer than 10 minutes", cshipinyaoqiu1: "The video should be no longer than 10 minutes",
cshipinyaoqiu2: "Video size cannot exceed 500M", cshipinyaoqiu2: "Video size cannot exceed 500M",
shangchuanwancheng: "Please wait for the file to be uploaded",
zhanghaocunzai: "account already exists",
shouruguize: "Description of revenue rules",
shouru1: "Live Revenue=Actual attendess x Actual duration x unit price",
shouru2: "1 on 1, 20€/hour; 1 on N, 10€/hour/person, (1<N<=4)",
shouru3: "Attention! You can only change the currency once!",
tishi: "tip",
querentuichu: "You confirm to exit?",
huobitishi: "Attention! You can only change the currency once!",
shichangtishi:"", shichangtishi:"",
renshutishi: '', renshutishi: '',
tixianzhu: "", tixianzhu: "",

View File

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

View File

@ -42,6 +42,7 @@ export default {
banquan:"Beelink公司版权所有 2019—2022", banquan:"Beelink公司版权所有 2019—2022",
zhanghao:"帐号", zhanghao:"帐号",
shuruzhanghao:"请输入您的邮箱或者手机号", shuruzhanghao:"请输入您的邮箱或者手机号",
shuruzhanghaol:"请输入您的邮箱或者国家号+手机号86186xxx",
mima:"密码", mima:"密码",
shurumima:"请输入您的密码", shurumima:"请输入您的密码",
wangjimima:"忘记密码?", wangjimima:"忘记密码?",
@ -90,7 +91,7 @@ export default {
shuliandu:"熟练度", shuliandu:"熟练度",
jixutianjia:"继续添加", jixutianjia:"继续添加",
xindemuyu:"请输入新的母语", xindemuyu:"请输入新的母语",
duanshipin:"短视频", duanshipin:"短视频介绍",
shipinyaoqiu:"视频要求:", shipinyaoqiu:"视频要求:",
shipinyaoqiu1:"上传视频时间要求为30s之内", shipinyaoqiu1:"上传视频时间要求为30s之内",
shipinyaoqiu2:"支持文件大小100M", shipinyaoqiu2:"支持文件大小100M",
@ -193,7 +194,7 @@ export default {
tixianjine:"提现金额", tixianjine:"提现金额",
quanbujine:"全部金额", quanbujine:"全部金额",
yueshu:"您的余额只有", yueshu:"您的余额只有",
zuiditixian:"最低提现金额¥100", zuiditixian:"最低提现金额",
mingxichaxun:"明细查询", mingxichaxun:"明细查询",
kaishiriqi:"请选择开始日期", kaishiriqi:"请选择开始日期",
jieshuriqi:"请选择结束日期", jieshuriqi:"请选择结束日期",
@ -301,6 +302,15 @@ export default {
shijishichang: "实际直播时长", shijishichang: "实际直播时长",
cshipinyaoqiu1: "视频长度不能超过10分钟", cshipinyaoqiu1: "视频长度不能超过10分钟",
cshipinyaoqiu2: "视频大小不能超过500m", cshipinyaoqiu2: "视频大小不能超过500m",
shangchuanwancheng: "请等待文件上传完成",
zhanghaocunzai: "帐号已存在",
shuoruguize: "收入规则说明",
shouru1: "直播收入=实际参加学生数x参加时长x单价",
shouru2: "单价1对120欧/小时1对N10欧/小时/人1<N<=4",
shouru3: "请注意,货币一旦修改,不能变动",
tishi: "提示",
querentuichu: "您确认退出?",
huobitishi: "请注意,货币一旦修改,不能变动。",
shichangtishi:"", shichangtishi:"",
renshutishi: '', renshutishi: '',
tixianzhu:"", tixianzhu:"",

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

@ -18,6 +18,14 @@ declare module 'tim-js-sdk'{
export default value; export default value;
} }
declare module 'vue-cropper'{
const VueCropper: any
export {
VueCropper
}
}
declare var FB: any; declare var FB: any;
declare var TCPlayer: any; declare var TCPlayer: any;

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="mine" :style="{height:height + 'px'}"> <div class="mine" :style="{height:height + 'px'}">
<NavTop :type="1" style="flex-shrink:0"></NavTop> <NavTop :type="1" style="flex-shrink:0"></NavTop>
<div class="body"> <div class="body" id="rbody">
<router-view/> <router-view/>
</div> </div>
</div> </div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -1,6 +1,7 @@
import { getaddr, userinfo } from '@/api'; import { getaddr, userinfo } from '@/api';
import { setLanvuage } from '@/api/base'; import { setLanvuage } from '@/api/base';
import { getValue, saveValue } from '@/utils/common'; import { getValue, saveValue } from '@/utils/common';
import { geti18n } from '@/utils/i18n';
import { isProxy } from 'vue'; import { isProxy } from 'vue';
import { createStore } from 'vuex' import { createStore } from 'vuex'
@ -50,11 +51,32 @@ export default createStore({
willsayValue: [{name: "0", level: 0}], willsayValue: [{name: "0", level: 0}],
zoneStr: "中途岛GMT-11:00", zoneStr: "中途岛GMT-11:00",
zoneid: 1, zoneid: 1,
symbol: "$" symbol: "$",
zoneValue:"",
currencytag: 0
}, },
islogin: false islogin: false,
seting:{
lowerLimit: "",
minmoney: 0,
minwithdraw: "",
numberCeiling: "",
sxf: "",
symbol: "",
timeCeiling: "",
timeLowerLimit: "",
},
qh: {
code: "86",
ename: "China",
name: "中国",
}
}, },
mutations: { mutations: {
setseting(state, info){
console.log(info, 112)
state.seting = info
},
setUserInfo(state, userinfo){ setUserInfo(state, userinfo){
userinfo.money = userinfo.money.toString() userinfo.money = userinfo.money.toString()
state.userinfo = userinfo state.userinfo = userinfo
@ -67,19 +89,20 @@ export default createStore({
const split = new Date().toString().split(" "); const split = new Date().toString().split(" ");
const timeZoneFormatted = split[split.length - 2] + " " + split[split.length - 1]; const timeZoneFormatted = split[split.length - 2] + " " + split[split.length - 1];
const lan = getValue("Lanvuage"); const lan = getValue("Lanvuage");
state.qh = data.qh.data;
if(lan != null && lan){ if(lan != null && lan){
// state.userinfo.language = data[1] // English 中文 // state.userinfo.language = data[1] // English 中文
// state.userinfo.languageValue = data[0] // 'en' 'zh' // state.userinfo.languageValue = data[0] // 'en' 'zh'
state.userinfo.zoneStr = timeZoneFormatted; state.userinfo.zoneStr = timeZoneFormatted;
state.userinfo.currency = data[0]; state.userinfo.currency = data.hb;
}else{ }else{
console.log(data, 111) console.log(data, 111)
state.userinfo.language = data[1] // English 中文 state.userinfo.language = data.yyx // English 中文
state.userinfo.languageValue = data[0] // 'en' 'zh' state.userinfo.languageValue = data.yy // 'en' 'zh'
state.userinfo.zoneStr = timeZoneFormatted; state.userinfo.zoneStr = timeZoneFormatted;
state.userinfo.currency = data[2]; state.userinfo.currency = data.hb;
saveValue("Lanvuage", data[0]); saveValue("Lanvuage", data.yy);
if( data[0] != 'zh'){ if( data.yy != geti18n().$s()){
location.reload() location.reload()
} }
// setLanvuage(data[0]); // setLanvuage(data[0]);

View File

@ -1,3 +1,5 @@
import { message } from 'ant-design-vue';
/** /**
* Base64 * Base64
*/ */
@ -64,6 +66,11 @@ export function provenimg(file: any): boolean | void{
const ntypearr = file.name.split('.'); const ntypearr = file.name.split('.');
const ntype = ntypearr[ntypearr.length - 1]; const ntype = ntypearr[ntypearr.length - 1];
console.log(ntype) console.log(ntype)
const size = 2 * 1024 * 1024;
if(file.size > size){
message.error("最大2MB")
return false;
}
let istype = false let istype = false
for(const i in type){ for(const i in type){
if(type[i] == ntype){ if(type[i] == ntype){
@ -79,14 +86,27 @@ export function provenimg(file: any): boolean | void{
* @param name * @param name
*/ */
export function provenvideo(file: any): boolean{ export function provenvideo(file: any, isvideo?: boolean): boolean{
const type = ['flv', 'mp4', 'wmv', 'mov', 'avi']; const type = ['flv', 'mp4', 'wmv', 'mov', 'avi'];
const ntypearr = file.name.split('.'); const ntypearr = file.name.split('.');
const ntype = ntypearr[ntypearr.length - 1]; const ntype = ntypearr[ntypearr.length - 1];
if(isvideo){
const size = 500 * 1024 * 1024;
if(file.size > size){
message.error("最大500MB")
return false;
}
}else{
const size = 100 * 1024 * 1024;
if(file.size > size){
message.error("最大100MB")
return false;
}
}
for(const i in type){ for(const i in type){
if(type[i] == ntype){ if(type[i] == ntype){
return true; return true;
} }
} }
return true; return false;
} }

View File

@ -64,8 +64,18 @@ export function getdate(yue?: number): GetDate{
} }
export function getweek(time: string,zhou?: number){ export function getweek(time: string, id: string,zhou?: number){
let now = dayjs((!time ? undefined : time)) /* eslint-disable */
const utc = require('dayjs/plugin/utc') // dependent on utc plugin
/* eslint-disable */
const timezone = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(timezone)
const days: any = dayjs;
console.log(id, 11111)
let now = days((!time ? undefined : time)).tz(id)
console.log(now, 11111)
if(zhou != undefined){ if(zhou != undefined){
now = now.day(now.day() + (zhou * 6)); now = now.day(now.day() + (zhou * 6));
} }

View File

@ -23,7 +23,7 @@
</a-select-option> </a-select-option>
<a-select-option value="Jiangsu"> Jiangsu </a-select-option> <a-select-option value="Jiangsu"> Jiangsu </a-select-option>
</a-select> --> </a-select> -->
<a-select :default-value="quhaolist[0].name + '+' + quhaolist[0].code" size="small" option-label-prop="label" @change="getquhao" class="getcode" show-search > <a-select :default-value="mrqh.name + '+' + mrqh.code" size="small" option-label-prop="label" @change="getquhao" class="getcode" show-search >
<a-select-option v-for="(i,j) in quhaolist" :key="j" :value="i.name + '+' + i.code" :label="'+' + i.code"> <a-select-option v-for="(i,j) in quhaolist" :key="j" :value="i.name + '+' + i.code" :label="'+' + i.code">
{{i.name}}+{{i.code}} {{i.name}}+{{i.code}}
</a-select-option> </a-select-option>
@ -53,7 +53,7 @@
<a-input-group compact> <a-input-group compact>
<a-input <a-input
style="width: 80%" style="width: 80%"
:placeholder="lan.$t('shuruzhanghao')" :placeholder="lan.$t('shuruzhanghaol')"
v-model:value="userinfo.phone" v-model:value="userinfo.phone"
/> />
</a-input-group> </a-input-group>
@ -117,13 +117,14 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, reactive, ref } from "vue"; import { computed, defineComponent, onMounted, reactive, ref } from "vue";
import LoginTab from "@/components/login/LoginTab.vue"; import LoginTab from "@/components/login/LoginTab.vue";
import NavTop from "@/components/NavTop.vue" import NavTop from "@/components/NavTop.vue"
import { checksmscode, getquhaolist, getwebvideolist, loginpass, sendsms } from '@/api'; import { checksmscode, getquhaolist, getwebvideolist, loginpass, 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'; import { useI18n } from '@/utils/i18n';
import store from '@/store';
export default defineComponent({ export default defineComponent({
name: "Login", name: "Login",
@ -146,6 +147,7 @@ export default defineComponent({
phone: '13152639856', phone: '13152639856',
password: '123456' password: '123456'
}) })
const mrqh = computed(() => store.state.qh)
const quhaolist = ref<any>([ const quhaolist = ref<any>([
{ {
code: "86", code: "86",
@ -281,7 +283,8 @@ export default defineComponent({
tovideoxq, tovideoxq,
navto, navto,
lan, lan,
slogin slogin,
mrqh
}; };
}, },
}); });

View File

@ -23,7 +23,7 @@
> >
<a-input-group compact> <a-input-group compact>
<a-select <a-select
:default-value="quhaolist[0].name + '+' + quhaolist[0].code" :default-value="mrqh.name + '+' + mrqh.code"
size="small" size="small"
@change="getquhao" @change="getquhao"
class="getcode" class="getcode"
@ -221,10 +221,11 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, reactive, ref, toRaw } from "vue"; import { computed, defineComponent, onMounted, reactive, ref, toRaw } from "vue";
import NavTop from "@/components/NavTop.vue"; import NavTop from "@/components/NavTop.vue";
import { import {
checksmscode, checksmscode,
checkuser,
getquhaolist, getquhaolist,
getwillsay, getwillsay,
interests, interests,
@ -234,6 +235,7 @@ import {
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"; import { useI18n } from "@/utils/i18n";
import store from '@/store';
export default defineComponent({ export default defineComponent({
name: "Sign", name: "Sign",
@ -259,6 +261,7 @@ export default defineComponent({
jiaoshou: "", jiaoshou: "",
}); });
const willsay = ref<any>(); const willsay = ref<any>();
const mrqh = computed(() => store.state.qh)
const quhaolist = ref<any>([ const quhaolist = ref<any>([
{ {
code: "86", code: "86",
@ -278,8 +281,9 @@ export default defineComponent({
* 点击获取验证码 触发60S倒计时 * 点击获取验证码 触发60S倒计时
*/ */
let lock = false; let lock = false;
const getcode: () => void = () => { const getcode = async () => {
console.log(11111); console.log(11111);
if (lock) { if (lock) {
return; return;
} }
@ -287,6 +291,11 @@ export default defineComponent({
message.error(lan.$t('shoujihaoweikong')); message.error(lan.$t('shoujihaoweikong'));
return; return;
} }
const iszc = await checkuser({phone: phone.value.phone})
if(iszc.code == 0){
message.error(lan.$t('zhanghaocunzai'))
return ;
}
lock = true; lock = true;
sendsms(phone.value.quhao, phone.value.phone); sendsms(phone.value.quhao, phone.value.phone);
const timestep = setInterval(() => { const timestep = setInterval(() => {
@ -371,7 +380,9 @@ export default defineComponent({
phone.value.quhao + phone.value.phone, phone.value.quhao + phone.value.phone,
phone.value.code phone.value.code
); );
if (res) { if (res) {
stepnow.value = e; stepnow.value = e;
} }
@ -417,7 +428,8 @@ export default defineComponent({
navto, navto,
lan, lan,
quhaolist, quhaolist,
getquhao getquhao,
mrqh
}; };
}, },
}); });

View File

@ -283,6 +283,7 @@
" "
@change="currencychange" @change="currencychange"
v-model:value="currencyindex" v-model:value="currencyindex"
:disabled="userinfo.currencytag == 1"
> >
<a-select-option <a-select-option
v-for="(item, index) in currencylist" v-for="(item, index) in currencylist"
@ -383,7 +384,7 @@
<!-- <a-input size="small" v-model:value="bindPhone.number" /> --> <!-- <a-input size="small" v-model:value="bindPhone.number" /> -->
<a-input-group compact class="telbox"> <a-input-group compact class="telbox">
<a-select <a-select
:default-value="quhaolist[0].name + '+' + quhaolist[0].code" :default-value="mrqh.name + '+' + mrqh.code"
size="small" size="small"
@change="getquhao" @change="getquhao"
option-label-prop="label" option-label-prop="label"
@ -493,6 +494,9 @@
{{ lan.$t("baocun") }} {{ lan.$t("baocun") }}
</div> </div>
</div> </div>
<a-modal v-model:visible="huobi" :footer="null" :title="lan.$t('tishi')" >
<p>{{lan.$t('huobitishi')}}</p>
</a-modal>
<nav-bottom></nav-bottom> <nav-bottom></nav-bottom>
</div> </div>
</template> </template>
@ -542,6 +546,7 @@ export default defineComponent({
NavBottom, NavBottom,
}, },
setup() { setup() {
let issum = true;
const lan: any = useI18n(); const lan: any = useI18n();
interface SpeakItem { interface SpeakItem {
lang: string; lang: string;
@ -556,6 +561,7 @@ export default defineComponent({
const userinfo = computed(() => { const userinfo = computed(() => {
return store.state.userinfo; return store.state.userinfo;
}); });
const huobi = ref(false);
// //
const currencyindex = ref<string>(userinfo.value.currency); const currencyindex = ref<string>(userinfo.value.currency);
const formData = ref(toRaw(userinfo.value)); const formData = ref(toRaw(userinfo.value));
@ -573,6 +579,8 @@ export default defineComponent({
const chiveslist = ref<any>([[], []]); const chiveslist = ref<any>([[], []]);
const languages = ref<unknown>([]); const languages = ref<unknown>([]);
const quhaolist = ref<any>([]); const quhaolist = ref<any>([]);
const mrqh = computed(() => store.state.qh)
const myquhao = ref<string>(""); const myquhao = ref<string>("");
const mynewtel = ref<string>(""); const mynewtel = ref<string>("");
@ -812,6 +820,10 @@ export default defineComponent({
// for(let i in toRaw(formData.value).willsay){ // for(let i in toRaw(formData.value).willsay){
// console.log(toRaw(formData.value).willsay[i]) // console.log(toRaw(formData.value).willsay[i])
// } // }
if(!issum){
message.error(lan.$t("shangchuanwancheng"))
return;
}
const uesrinfo = toRaw(formData.value); const uesrinfo = toRaw(formData.value);
// for (let m = 0; m < toRaw(chiveslist.value).length; m++) { // for (let m = 0; m < toRaw(chiveslist.value).length; m++) {
// for (const i in uesrinfo.willsayValue) { // for (const i in uesrinfo.willsayValue) {
@ -925,14 +937,16 @@ export default defineComponent({
const uploadprogress: Ref<number> = ref(0); const uploadprogress: Ref<number> = ref(0);
async function uploads(file: AntUpload) { async function uploads(file: AntUpload) {
uploadprogress.value = 0; uploadprogress.value = 1;
issum = false;
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
console.log(info); console.log(info);
uploadprogress.value = info.percent.toFixed(2) * 100; const jindu = info.percent.toFixed(2) * 100
uploadprogress.value = jindu > 0 ? jindu : 1;
}); });
userinfo.value.video = res.video.url; userinfo.value.video = res.video.url;
userinfo.value.videoid = res.fileId; userinfo.value.videoid = res.fileId;
issum = true;
} }
if (formData.value.video != "") { if (formData.value.video != "") {
@ -963,6 +977,7 @@ export default defineComponent({
function currencychange(e?: any) { function currencychange(e?: any) {
console.log(e); console.log(e);
huobi.value = true;
userinfo.value.currencyValue = e; userinfo.value.currencyValue = e;
// editsystemsetting({currency:e}) // editsystemsetting({currency:e})
} }
@ -1049,7 +1064,9 @@ export default defineComponent({
isdisabled, isdisabled,
setname, setname,
video, video,
imgs imgs,
mrqh,
huobi
}; };
}, },
}); });
@ -1340,6 +1357,9 @@ export default defineComponent({
line-height: 23px; line-height: 23px;
cursor: pointer; cursor: pointer;
user-select: none; user-select: none;
position: fixed;
bottom: 100px;
right: 300px;
} }
// .submit-btn:hover { // .submit-btn:hover {
// background: #08ae98; // background: #08ae98;

View File

@ -61,7 +61,7 @@
</div> </div>
</div> </div>
<div class="zhanghao"> <div class="zhanghao">
{{lan.$t('zhanghao')}}6217 **** **** **** 175 {{lan.$t('zhanghao')}}{{i.account}}
</div> </div>
</div> </div>
</a-radio> </a-radio>
@ -153,7 +153,7 @@ export default defineComponent({
const moneychange: (e: number) => void = (e: number) => { const moneychange: (e: number) => void = (e: number) => {
console.log(e); console.log(e);
}; };
const yue=ref<number>(store.state.userinfo.moneyValue) const yue=computed( () => store.state.userinfo.moneyValue)
const danwei = computed(() => 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
@ -180,7 +180,7 @@ export default defineComponent({
if (accountlist.value.length == 0) { if (accountlist.value.length == 0) {
message.error(lan.$t('kongzhanghaoliebiao')); message.error(lan.$t('kongzhanghaoliebiao'));
return; return;
} else if (payinfo.value.money < 100) { } else if (payinfo.value.money < store.state.seting.minwithdraw) {
message.error(lan.$t('zuiditixian')); message.error(lan.$t('zuiditixian'));
return; return;
} else if (payinfo.value.money > yue.value) { } else if (payinfo.value.money > yue.value) {

View File

@ -6,14 +6,14 @@
<div class="hits">视频点击量</div> <div class="hits">视频点击量</div>
</div> </div>
<div class="list-body"> <div class="list-body">
<div class="rank-item" v-for="item in rankData" :key="item.uid" :class="{'mine-item': item.uid === 5 }"> <div class="rank-item" v-for="(item,index) in list" :key="index" :class="{'mine-item': item.isme }">
<div class="other-rank" :class="{'mine-rank': item.uid === 5 }"> <div class="other-rank" :class="{'mine-rank': item.isme }">
<div class="ranking-number"> <div class="ranking-number">
<span v-if="item.uid === 5" class="mine">我的成绩</span> <span v-if="item.isme" class="mine">我的成绩</span>
<div v-else> <div v-else>
<img src="@/static/images/rank_first.png" class="rank-img" v-if="item.id === 1" /> <img src="@/static/images/rank_first.png" class="rank-img" v-if="index === 0" />
<img src="@/static/images/rank_second.png" class="rank-img" v-else-if="item.id === 2" /> <img src="@/static/images/rank_second.png" class="rank-img" v-else-if="index === 1" />
<img src="@/static/images/rank_third.png" class="rank-img" v-else-if="item.id === 3" /> <img src="@/static/images/rank_third.png" class="rank-img" v-else-if="index === 2" />
<span class="other" v-else>{{ item.id }}</span> <span class="other" v-else>{{ item.id }}</span>
</div> </div>
</div> </div>
@ -45,6 +45,11 @@ export default defineComponent({
components: { components: {
UserOutlined UserOutlined
}, },
props:{
list: {
type: Object
}
},
setup() { setup() {
interface RankItem { interface RankItem {
uid: number; uid: number;

View File

@ -147,6 +147,7 @@ export default defineComponent({
NavBottom, NavBottom,
}, },
setup() { setup() {
let issum= true;
const lan: any = useI18n(); const lan: any = useI18n();
interface FileItem { interface FileItem {
video: Array<string>; video: Array<string>;
@ -254,20 +255,24 @@ export default defineComponent({
const uploadprogress: Ref<number> = ref(0); const uploadprogress: Ref<number> = ref(0);
const ifallowvideo = ref<boolean>(false); const ifallowvideo = ref<boolean>(false);
async function uploads(file: AntUpload) { async function uploads(file: AntUpload) {
issum = false;
console.log(file); console.log(file);
videofile.value = file.file; videofile.value = file.file;
uploadprogress.value = 1;
videos.value[0].addEventListener("durationchange", () => { videos.value[0].addEventListener("durationchange", () => {
console.log(videos.value[0].duration); console.log(videos.value[0].duration);
form.value.fileduration = videos.value[0].duration; form.value.fileduration = videos.value[0].duration;
}); });
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
console.log(info); console.log(info);
uploadprogress.value = info.percent.toFixed(2) * 100; const jindu = info.percent.toFixed(2) * 100
uploadprogress.value = jindu > 0 ? jindu : 1;
}); });
console.log(res); console.log(res);
form.value.fileid = res.fileId; form.value.fileid = res.fileId;
form.value.fileurl = res.video.url; form.value.fileurl = res.video.url;
issum = true;
} }
function beforeVideoUpload(info?: any) { function beforeVideoUpload(info?: any) {
@ -285,6 +290,10 @@ export default defineComponent({
*/ */
const routes = useRoute(); const routes = useRoute();
const onSubmit = async (e: FromSend) => { const onSubmit = async (e: FromSend) => {
if(!issum){
message.error(lan.$t("shangchuanwancheng"))
return;
}
e.preventDefault(); e.preventDefault();
console.log(toRaw(form.value), 111); console.log(toRaw(form.value), 111);
console.log(toRaw(form.value).video[0].length); console.log(toRaw(form.value).video[0].length);
@ -323,7 +332,7 @@ export default defineComponent({
} }
} }
function video(file: any){ function video(file: any){
return provenvideo(file) return provenvideo(file, true)
} }
function imgs(file: any){ function imgs(file: any){
return provenimg(file) return provenimg(file)

View File

@ -7,6 +7,7 @@
size="small" size="small"
v-model:value="form.title" v-model:value="form.title"
:placeholder="lan.$t('shuruzhibobiaoti')" :placeholder="lan.$t('shuruzhibobiaoti')"
@click="isEntitled = jinzhi"
/> />
</a-form-item> </a-form-item>
<a-form-item :label="lan.$t('zhibofengmian')" class="item-cover" :rules="{ required: true, message: 'Please input Activity name', trigger: 'blur'}"> <a-form-item :label="lan.$t('zhibofengmian')" class="item-cover" :rules="{ required: true, message: 'Please input Activity name', trigger: 'blur'}">
@ -110,7 +111,7 @@
</p> </p>
</div> --> </div> -->
</a-form-item> </a-form-item>
<a-form-item :label="lan.$t('kaishishijian')" :rules="{ required: true, message: 'Please input Activity name', trigger: 'blur'}"> <a-form-item :label="lan.$t('kaishishijian')" @click="isEntitled = jinzhi" :rules="{ required: true, message: 'Please input Activity name', trigger: 'blur'}">
<!-- <a-input <!-- <a-input
size="small" size="small"
@ -123,6 +124,7 @@
format="YYYY-MM-DD HH:mm" format="YYYY-MM-DD HH:mm"
:value="form.dateline" :value="form.dateline"
:disabled-date="disabledDate" :disabled-date="disabledDate"
@click="isEntitled = jinzhi"
@change="startchange" @change="startchange"
:placeholder="lan.$t('shezhikaishishijian')" :placeholder="lan.$t('shezhikaishishijian')"
:getCalendarContainer=" :getCalendarContainer="
@ -139,6 +141,7 @@
<a-input <a-input
size="small" size="small"
v-model:value="form.livetime" v-model:value="form.livetime"
@click="isEntitled = jinzhi"
:placeholder="lan.$t('shuruzhiboshijian')" :placeholder="lan.$t('shuruzhiboshijian')"
type="number" type="number"
/> />
@ -153,6 +156,7 @@
<a-input <a-input
size="small" size="small"
v-model:value="form.livenumber" v-model:value="form.livenumber"
@click="isEntitled = jinzhi"
:placeholder="lan.$t('shuruzhiborenshu')" :placeholder="lan.$t('shuruzhiborenshu')"
type="number" type="number"
/> />
@ -162,6 +166,7 @@
<a-form-item :label="lan.$t('zhibojianjie')" 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"
@click="isEntitled = jinzhi"
:autoSize="true" :autoSize="true"
class="brief-textarea" class="brief-textarea"
:maxlength="200" :maxlength="200"
@ -221,6 +226,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { import {
computed,
defineComponent, defineComponent,
onBeforeUpdate, onBeforeUpdate,
onMounted, onMounted,
@ -242,6 +248,7 @@ 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"; import { useI18n } from "@/utils/i18n";
import store from '@/store';
export default defineComponent({ export default defineComponent({
name: "ReleaseWebcast", name: "ReleaseWebcast",
@ -252,6 +259,7 @@ export default defineComponent({
RankList, RankList,
}, },
setup() { setup() {
let issum = true;
const lan: any = useI18n(); const lan: any = useI18n();
// //
const form = ref({ const form = ref({
@ -271,6 +279,9 @@ export default defineComponent({
const videofile = ref<File>(); const videofile = ref<File>();
const videos = ref<Array<any>>([]); const videos = ref<Array<any>>([]);
const lives = ref<any>({}); const lives = ref<any>({});
const jinzhi = ref(false)
const isEntitled: Ref<boolean> = ref(false);
/** /**
* 验证直播时间 * 验证直播时间
*/ */
@ -360,10 +371,21 @@ export default defineComponent({
form.value = res; form.value = res;
}); });
} }
const seting = computed(() => store.state.seting)
const onSubmit = (e: FromSend) => { const onSubmit = (e: FromSend) => {
if(jinzhi.value){
isEntitled.value = true;
}
if(!issum){
message.error(lan.$t("shangchuanwancheng"))
return;
}
e.preventDefault(); e.preventDefault();
validate() validate()
.then(() => { .then(() => {
console.log(seting.value)
console.log(toRaw(form), 111); console.log(toRaw(form), 111);
const subdata: any = toRaw(form.value); const subdata: any = toRaw(form.value);
if (subdata.title == "") { if (subdata.title == "") {
@ -385,12 +407,13 @@ export default defineComponent({
message.error(lan.$t('zhiborenshuweikong')); message.error(lan.$t('zhiborenshuweikong'));
return; return;
} else { } else {
if(subdata.livetime < 30 || subdata.livetime > 120){ if(subdata.livetime < parseInt(seting.value.timeLowerLimit) || subdata.livetime > parseInt(seting.value.timeCeiling)){
message.error("直播时长最短30min, 最长120min"); // console.log(subdata.livetime, subdata.livetime < seting.value.timeLowerLimit || subdata.livetime > seting.value.timeCeiling)
message.error(lan.$t('shichangtishi'));
return ; return ;
} }
if(subdata.livenumber > 4 || subdata.livenumber < 1){ if(subdata.livenumber > parseInt(seting.value.numberCeiling) || subdata.livenumber < parseInt(seting.value.lowerLimit)){
message.error("直播人数最少1人, 最多4人"); message.error(lan.$t('renshutishi'));
return ; return ;
} }
if (!lives.value.status) { if (!lives.value.status) {
@ -415,7 +438,6 @@ export default defineComponent({
console.log("error", err); console.log("error", err);
}); });
}; };
const isEntitled: Ref<boolean> = ref(false);
/** /**
* 隐藏无资格提示 * 隐藏无资格提示
*/ */
@ -475,20 +497,24 @@ export default defineComponent({
} }
} }
async function uploads(file: AntUpload) { async function uploads(file: AntUpload) {
issum = false;
console.log(file); console.log(file);
videofile.value = file.file; videofile.value = file.file;
videos.value[0].addEventListener("durationchange", () => { videos.value[0].addEventListener("durationchange", () => {
console.log(videos.value[0].duration); console.log(videos.value[0].duration);
form.value.fileduration = videos.value[0].duration; form.value.fileduration = videos.value[0].duration;
}); });
uploadprogress.value = 1;
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
console.log(info); console.log(info);
uploadprogress.value = info.percent.toFixed(2) * 100; const jindu = info.percent.toFixed(2) * 100
uploadprogress.value = jindu > 0 ? jindu : 1;
}); });
console.log(res); console.log(res);
form.value.fileid = res.fileId; form.value.fileid = res.fileId;
form.value.fileurl = res.video.url; form.value.fileurl = res.video.url;
issum = true;
} }
const ifallowpic = ref<boolean>(false); const ifallowpic = ref<boolean>(false);
async function uploadspic(file: AntUpload) { async function uploadspic(file: AntUpload) {
@ -502,11 +528,11 @@ 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) => {
if (res) { if (res) {
isEntitled.value = true; isEntitled.value = true;
lives.value = res; lives.value = res;
jinzhi.value = true;
} }
}); });
function beforeUploadpic(info?: any) { function beforeUploadpic(info?: any) {
@ -537,9 +563,17 @@ export default defineComponent({
} }
} }
function video(file: any){ function video(file: any){
if(jinzhi.value){
isEntitled.value = true;
return false;
}
return provenvideo(file) return provenvideo(file)
} }
function imgs(file: any){ function imgs(file: any){
if(jinzhi.value){
isEntitled.value = true;
return false;
}
return provenimg(file) return provenimg(file)
} }
@ -578,7 +612,8 @@ export default defineComponent({
onquxiao, onquxiao,
isquxiao, isquxiao,
video, video,
imgs imgs,
jinzhi
}; };
}, },
}); });

View File

@ -157,7 +157,7 @@
<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">{{lan.$t('mingxichaxun')}}</span> <span class="tabtitle">{{lan.$t('mingxichaxun')}}<img src="@/static/images/wenhao.png" @click="visible = true" /></span>
<div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)"> <div :class="tabindex == 0 ? 'on' : ''" @click="tabchange(0)">
{{lan.$t('quanbu')}} {{lan.$t('quanbu')}}
@ -201,6 +201,12 @@
<a-pagination v-if="salelist.total" v-model:current="page" :total="salelist.total" :showLessItems="true" @change="pagechange"/> <a-pagination v-if="salelist.total" v-model:current="page" :total="salelist.total" :showLessItems="true" @change="pagechange"/>
</div> </div>
</div> </div>
<a-modal v-model:visible="visible" :footer="null" :title="lan.$t('shuoruguize')" @cancel="visible = false">
<p>{{lan.$t('shouru1')}}</p>
<p>{{lan.$t('shouru2')}}</p>
<p style="color:#D12C2E">{{lan.$t('shouru3')}}</p>
</a-modal>
<NavBottom class="navbottom"></NavBottom> <NavBottom class="navbottom"></NavBottom>
</div> </div>
</template> </template>
@ -228,6 +234,7 @@ export default defineComponent({
const state=ref<number>(0) const state=ref<number>(0)
const dates=ref<Array<string>>(["",""]) const dates=ref<Array<string>>(["",""])
const page = ref(1); const page = ref(1);
const visible = ref(true);
onMounted(async () => { onMounted(async () => {
console.log(useRoute().query) console.log(useRoute().query)
listindex.value=1 listindex.value=1
@ -311,7 +318,8 @@ export default defineComponent({
del, del,
store, store,
pagechange, pagechange,
lan lan,
visible
}; };
}, },
}); });
@ -341,7 +349,7 @@ export default defineComponent({
color: #111; color: #111;
padding: 11px 0; padding: 11px 0;
.tabtitle { .tabtitle {
width: 60px; // width: 60px;
margin-right: 30px; margin-right: 30px;
} }
> div { > div {
@ -354,6 +362,15 @@ export default defineComponent({
color: #08ae98; color: #08ae98;
} }
} }
>span{
display: flex;
align-items: center;
>img{
margin-left: 8px;
width: 13px;
height: 13px;
}
}
.on { .on {
color: #08ae98; color: #08ae98;
position: relative; position: relative;

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="videoinfo"> <div class="videoinfo">
<div class="info"> <div class="info">
<VideoPlay :url="result.fileid"></VideoPlay> <VideoPlay :title="result.title" :url="result.fileid"></VideoPlay>
<VideoCont :videoid="result.videoid" :yuanyin="result.statusdesc" :date="result.createdAt" :watch="result.watch" :share="result.share" :status="result.status"></VideoCont> <VideoCont :videoid="result.videoid" :yuanyin="result.statusdesc" :date="result.createdAt" :watch="result.watch" :share="result.share" :status="result.status"></VideoCont>
</div> </div>
<VideoReview :videoinfo="result.score" class="review" v-if="result.status == 1"></VideoReview> <VideoReview :videoinfo="result.score" class="review" v-if="result.status == 1"></VideoReview>

View File

@ -99,6 +99,9 @@
width: 1320px; width: 1320px;
height: 63px; height: 63px;
display: flex; display: flex;
position: sticky;
top: -23px;
z-index: 1000;
>div{ >div{
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -214,10 +217,14 @@ export default defineComponent({
const day = getDay(res[i].dateline) const day = getDay(res[i].dateline)
for(const j in month.value.date){ for(const j in month.value.date){
for(const k in month.value.date[j]){ for(const k in month.value.date[j]){
if(yue.value == 0 && month.value.date[j][k].day == month.value.day){
month.value.date[j][k].s = 1
}
if(month.value.date[j][k].day == day){ if(month.value.date[j][k].day == day){
if(month.value.date[j][k].list == undefined){ if(month.value.date[j][k].list == undefined){
month.value.date[j][k].list = []; month.value.date[j][k].list = [];
} }
if(!month.value.date[j][k].s){ if(!month.value.date[j][k].s){
month.value.date[j][k].s = res[i].livestatus month.value.date[j][k].s = res[i].livestatus
}else if(month.value.date[j][k].s != 1){ }else if(month.value.date[j][k].s != 1){

View File

@ -122,6 +122,9 @@
width: 1320px; width: 1320px;
height: 63px; height: 63px;
display: flex; display: flex;
position: sticky;
top: -23px;
z-index: 1000;
> div { > div {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -239,7 +242,7 @@
} }
.times{ .times{
font-size: 11px; font-size: 11px;
color: #FFFA18; color: #D12C2E;
} }
} }
} }
@ -259,7 +262,7 @@ export default defineComponent({
setup() { setup() {
const zhou = ref(0); const zhou = ref(0);
const time: any = useRoute().query.time; const time: any = useRoute().query.time;
const week = ref<any>(getweek(time)); const week = ref<any>(getweek(time, store.state.userinfo.zoneValue));
const userid = store.state.userinfo.memberid; const userid = store.state.userinfo.memberid;
console.log(week.value); console.log(week.value);
function getdates(userid: number){ function getdates(userid: number){
@ -291,7 +294,14 @@ export default defineComponent({
const times = ref(''); const times = ref('');
const xs = ref(0); const xs = ref(0);
setInterval(()=>{ setInterval(()=>{
const now = dayjs(); /* eslint-disable */
const utc = require('dayjs/plugin/utc') // dependent on utc plugin
/* eslint-disable */
const timezone = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(timezone)
const days: any = dayjs;
const now = days().tz(store.state.userinfo.zoneValue)
const xiaoshi = now.hour() const xiaoshi = now.hour()
const fenzhong = now.minute() const fenzhong = now.minute()
top.value = (xiaoshi + (fenzhong / 60)) * 0.63; top.value = (xiaoshi + (fenzhong / 60)) * 0.63;
@ -300,7 +310,7 @@ export default defineComponent({
}, 2000) }, 2000)
watch(zhou, (value) => { watch(zhou, (value) => {
week.value = getweek(time, value); week.value = getweek(time, store.state.userinfo.zoneValue, value);
console.log(week.value); console.log(week.value);
getdates(userid) getdates(userid)
}); });

View File

@ -1,4 +1,5 @@
{ {
"defaultSeverity": "error",
"compilerOptions": { "compilerOptions": {
"target": "esnext", "target": "esnext",
"module": "esnext", "module": "esnext",
@ -35,6 +36,10 @@
"tests/**/*.tsx" "tests/**/*.tsx"
], ],
"exclude": [ "exclude": [
"node_modules" "node_modules",
] "tslint:recommended"
],
"rules": {
"no-var-requires": false
}
} }

View File

@ -9245,6 +9245,11 @@ vod-js-sdk-v6@^1.4.10:
js-sha1 "^0.6.0" js-sha1 "^0.6.0"
uuid "^3.3.2" uuid "^3.3.2"
vue-cropper@^0.5.5:
version "0.5.5"
resolved "https://registry.npmjs.org/vue-cropper/-/vue-cropper-0.5.5.tgz#9bd1ba563c7faa268abd52fb2af4c6c28d33c962"
integrity sha512-5mGaBlS1EwLxUFwHHX2Q8zOZSiVfBUjOfolR+ZNKwu7Rh3u+GhwHYOyFkgZHhhoQBBNdyVB28O6W+MpMimhCbA==
vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.1.1: vue-eslint-parser@^7.0.0, vue-eslint-parser@^7.1.1:
version "7.1.1" version "7.1.1"
resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.1.tgz#c43c1c715ff50778b9a7e9a4e16921185f3425d3" resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.1.1.tgz#c43c1c715ff50778b9a7e9a4e16921185f3425d3"