xbx #146

Merged
theluyuan merged 13 commits from xbx into master 2020-11-23 08:59:54 +00:00
17 changed files with 167 additions and 75 deletions

View File

@ -17,6 +17,7 @@ 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'; import dayjs from 'dayjs';
import { getaddr } from './api';
export default defineComponent({ export default defineComponent({
setup(){ setup(){
@ -24,6 +25,7 @@ export default defineComponent({
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')){
console.log("token")
store.commit("login", true) store.commit("login", true)
store.dispatch("setUserInfo"); store.dispatch("setUserInfo");
}else{ }else{

View File

@ -783,6 +783,7 @@ export async function putmember(data: any): Promise<any>{
} }
console.log(newdata) console.log(newdata)
const res = await put<Liveaddrule>(`member/${store.state.userinfo.memberid}`, newdata) const res = await put<Liveaddrule>(`member/${store.state.userinfo.memberid}`, newdata)
store.dispatch("setUserInfo"); store.dispatch("setUserInfo");
return res; return res;
} }
@ -1038,28 +1039,63 @@ export async function luzhi(roomid: string){
console.log(res) console.log(res)
} }
export async function getaddr() { export function getaddr() {
const res = await get<any>('ip'); return new Promise((r)=>{
const gj = res.data.address.split("|")[0]; console.log("开始定位")
const lan = getValue("Lanvuage"); const lan = getValue("Lanvuage");
const qh = await get<any>('countryCode', { if ("geolocation" in navigator) {
longitude: res.data.content.point.x, /* 地理位置服务可用 */
latitude: res.data.content.point.y navigator.geolocation.getCurrentPosition(async (res) => {
}); console.log(res, 'res')
console.log(qh) const qh = await get<any>('countryCode', {
if(lan != null && lan){ longitude: res.coords.longitude,
if(gj == "CN"){ latitude: res.coords.latitude
return {hb: '人民币¥', qh}; });
}else { console.log(qh)
return {hb: '美元$'} if(lan != null && lan){
if(qh.data.ename == "China"){
r({hb: '人民币¥', qh});
}else {
r({hb: '美元$'})
}
}else{
if(qh.data.ename == "China"){
r({yy: "zh", yyx: "中文", hb: '人民币¥', qh});
}else {
r({yy: 'en', yyx: 'English', hb: '美元$', qh})
}
}
},(err) => {
message.error(err.message)
console.log(err, 'err')
})
} else {
/* 地理位置服务不可用 */
console.log("无法定位")
} }
}else{ })
if(gj == "CN"){
return {yy: "zh", yyx: "中文", hb: '人民币¥', qh}; // const res = await get<any>('ip');
}else { // const gj = res.data.address.split("|")[0];
return {yy: 'en', yyx: 'English', hb: '美元$', qh} // 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(gj == "CN"){
// return {hb: '人民币¥', qh};
// }else {
// return {hb: '美元$'}
// }
// }else{
// if(gj == "CN"){
// return {yy: "zh", yyx: "中文", hb: '人民币¥', qh};
// }else {
// return {yy: 'en', yyx: 'English', hb: '美元$', qh}
// }
// }
} }
@ -1080,10 +1116,20 @@ export async function getset() {
export async function setheadimg(src: string){ export async function setheadimg(src: string){
const res = await put(`member/${store.state.userinfo.memberid}`,{img: src}); const res = await put(`member/${store.state.userinfo.memberid}`,{img: src});
if(res.code == 0){
message.success(res.msg)
}else{
message.error(res.msg);
}
console.log(res) console.log(res)
} }
export async function setusername(src: string){ export async function setusername(src: string){
const res = await put(`member/${store.state.userinfo.memberid}`,{name: src}); const res = await put(`member/${store.state.userinfo.memberid}`,{name: src});
if(res.code == 0){
message.success(res.msg)
}else{
message.error(res.msg);
}
console.log(res) console.log(res)
} }

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}} {{lan.$t('fen')}}</span> <span class="lv">{{score}}</span>
</div> </div>
<div class="info"> <div class="info">
<div class="datetime"> <div class="datetime">

View File

@ -11,7 +11,7 @@
</div> </div>
</div> </div>
<div class="num">{{(score+'').split('.')[1]?score:score+'.0'}} {{lan.$t('fen')}}</div> <div class="num">{{(score+'').split('.')[1]?score:score+'.0'}}</div>
</div> </div>
<div class="all" @click="findall(replyid)" > <div class="all" @click="findall(replyid)" >
<span>{{lan.$t('suoyouhuifu')}}</span> <span>{{lan.$t('suoyouhuifu')}}</span>

View File

@ -1,29 +1,29 @@
export default { export default {
zhiboguanli: "Live broadcast management", zhiboguanli: "Live",
shipinguanli: "Video management", shipinguanli: "Vide",
dingyuezheguanli: "Subscriber management", dingyuezheguanli: "Followers",
gerenzhongxin: "Personal Center", gerenzhongxin: "Profile",
rili: "calendar", rili: "calendar",
quanbuzhibo: "All live", quanbuzhibo: "All",
weikaishi: "Not started", weikaishi: "Planning",
yijieshu: "Finished", yijieshu: "Completed",
zhibosousuo: "Please enter the live title you want to search", zhibosousuo: "Please enter the live title you want to search",
haiweikaishi: "Not yet", haiweikaishi: "Not yet",
jinruzhibo: "Enter live", jinruzhibo: "Enter live",
chakanhuifang: "View playback", chakanhuifang: "Replay",
quanbushipin: "All videos", quanbushipin: "All",
shenhezhong: "Under review", shenhezhong: "Reviewing",
weitongguo: "Failed", weitongguo: "Failed",
yifabu: "Published", yifabu: "Published",
shipinsousuo: "Please enter the live title you want to search", shipinsousuo: "Please enter the live title you want to search",
wodedingyuezhe: "My subscribers", wodedingyuezhe: "My subscribers",
xingming: "name", xingming: "name",
suozaiguojia: "Country of residence", suozaiguojia: "Country",
nianling: "Age", nianling: "Age",
xueshengmuyu: "Students' mother tongue", xueshengmuyu: "Speak",
xingqudian: "Points of interest", xingqudian: "Learn",
yuyandengji: "Language level", yuyandengji: "Language level",
canyupingtaishichang: "Total duration of live broadcast on the platform", canyupingtaishichang: "Attended course",
sousuoxuesheng: "Please enter the name of the student you want to search", sousuoxuesheng: "Please enter the name of the student you want to search",
huanying: "Hello, welcome", huanying: "Hello, welcome",
beelink: "Beelink", beelink: "Beelink",
@ -173,7 +173,7 @@ export default {
querenjujue: "Confirm rejection", querenjujue: "Confirm rejection",
zhiboyemian: "Live page", zhiboyemian: "Live page",
querenguanbi: "Are you sure you want to close the live broadcast", querenguanbi: "Are you sure you want to close the live broadcast",
dingyuezhe: "My subscribers", dingyuezhe: "My Followers",
sousuodingyue: "Please enter the name of the student you want to search", sousuodingyue: "Please enter the name of the student you want to search",
wodeqianbao: "My wallet", wodeqianbao: "My wallet",
lijitixian: "Immediate withdrawal", lijitixian: "Immediate withdrawal",
@ -303,7 +303,7 @@ export default {
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", shangchuanwancheng: "Please wait for the file to be uploaded",
zhanghaocunzai: "account already exists", zhanghaocunzai: "This number is already registered as a student",
shouruguize: "Description of revenue rules", shouruguize: "Description of revenue rules",
shouru1: "Live Revenue=Actual attendess x Actual duration x unit price", 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)", shouru2: "1 on 1, 20€/hour; 1 on N, 10€/hour/person, (1<N<=4)",
@ -312,6 +312,9 @@ export default {
querentuichu: "You confirm to exit?", querentuichu: "You confirm to exit?",
huobitishi: "Attention! You can only change the currency once!", huobitishi: "Attention! You can only change the currency once!",
zhuanmazhong: "Transcoding in", zhuanmazhong: "Transcoding in",
leixingcuowu:"File type error",
zuida:"maximum",
zhibotishi1:"Congratulations on your qualification for beelink live streaming course.",
shichangtishi:"", shichangtishi:"",
renshutishi: '', renshutishi: '',
tixianzhu: "", tixianzhu: "",

View File

@ -14,8 +14,8 @@ getset().then((res: any)=>{
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 }`
zh.zuiditixian = "最低提现金额" + res.symbol + res.minwithdraw zh.zuiditixian = "最低提现金额" + res.symbol + res.minwithdraw
en.zuiditixian = "Minimum withdrawal amount " + res.symbol + res.minwithdraw en.zuiditixian = "Minimum withdrawal amount " + res.symbol + res.minwithdraw
zh.zhibotishi = `恭喜您在beelink有直播课资格。直播资格按照每周浏览量排名,前${res.views}名基本直播资格。` zh.zhibotishi = `直播资格按照每周浏览量排名,前${res.views}名基本直播资格。`
en.zhibotishi = `Congratulations on your qualification for beelink live streaming course. The top ${res.views} basic live streaming qualifications are ranked according to the number of views per week` en.zhibotishi = `The top ${res.views} basic live streaming qualifications are ranked according to the number of views per week`
const i18n = geti18n(); const i18n = geti18n();
const loc = i18n.locale.value; const loc = i18n.locale.value;
i18n.locale.value = ''; i18n.locale.value = '';

View File

@ -303,7 +303,7 @@ export default {
cshipinyaoqiu1: "视频长度不能超过10分钟", cshipinyaoqiu1: "视频长度不能超过10分钟",
cshipinyaoqiu2: "视频大小不能超过500m", cshipinyaoqiu2: "视频大小不能超过500m",
shangchuanwancheng: "请等待文件上传完成", shangchuanwancheng: "请等待文件上传完成",
zhanghaocunzai: "帐号已存在", zhanghaocunzai: "该手机已注册学生端账号",
shuoruguize: "收入规则说明", shuoruguize: "收入规则说明",
shouru1: "直播收入=实际参加学生数x参加时长x单价", shouru1: "直播收入=实际参加学生数x参加时长x单价",
shouru2: "单价1对120欧/小时1对N10欧/小时/人1<N<=4", shouru2: "单价1对120欧/小时1对N10欧/小时/人1<N<=4",
@ -312,6 +312,9 @@ export default {
querentuichu: "您确认退出?", querentuichu: "您确认退出?",
huobitishi: "请注意,货币一旦修改,不能变动。", huobitishi: "请注意,货币一旦修改,不能变动。",
zhuanmazhong: "转码中", zhuanmazhong: "转码中",
leixingcuowu:"文件类型错误",
zuida:"最大",
zhibotishi1:"恭喜您在Beelink有直播课资格",
shichangtishi:"", shichangtishi:"",
renshutishi: '', renshutishi: '',
tixianzhu:"", tixianzhu:"",

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -126,11 +126,13 @@ export default createStore({
commit('setUserInfo', user); commit('setUserInfo', user);
} else { } else {
const info = await getaddr(); const info = await getaddr();
console.log(info,11256445)
commit("setLanguage", info) commit("setLanguage", info)
} }
}, },
async getip({ commit }){ async getip({ commit }){
const info = await getaddr(); const info = await getaddr();
console.log(info,11256445);
commit("setLanguage", info) commit("setLanguage", info)
} }
}, },

View File

@ -1,4 +1,6 @@
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { geti18n } from './i18n';
const lan = geti18n()
/** /**
* Base64 * Base64
@ -68,7 +70,7 @@ export function provenimg(file: any): boolean | void{
console.log(ntype) console.log(ntype)
const size = 2 * 1024 * 1024; const size = 2 * 1024 * 1024;
if(file.size > size){ if(file.size > size){
message.error("最大2MB") message.error(lan.$t('zuida') + "2MB")
return false; return false;
} }
let istype = false let istype = false
@ -93,13 +95,13 @@ export function provenvideo(file: any, isvideo?: boolean): boolean{
if(isvideo){ if(isvideo){
const size = 500 * 1024 * 1024; const size = 500 * 1024 * 1024;
if(file.size > size){ if(file.size > size){
message.error("最大500MB") message.error(lan.$t('zuida') + "500MB")
return false; return false;
} }
}else{ }else{
const size = 100 * 1024 * 1024; const size = 100 * 1024 * 1024;
if(file.size > size){ if(file.size > size){
message.error("最大100MB") message.error(lan.$t('zuida') + "100MB")
return false; return false;
} }
} }
@ -108,5 +110,6 @@ export function provenvideo(file: any, isvideo?: boolean): boolean{
return true; return true;
} }
} }
message.error(lan.$t("leixingcuowu"))
return false; return false;
} }

View File

@ -15,11 +15,16 @@ interface GetDate{
end: string; end: string;
} }
export function getdate(yue?: number): GetDate{ export function getdate(yue: number,id: string): GetDate{
let now = dayjs() /* eslint-disable */
if(yue != undefined){ const utc = require('dayjs/plugin/utc') // dependent on utc plugin
now = now.month(now.month() + yue); /* eslint-disable */
} const timezone = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(timezone)
const days: any = dayjs;
let now = days().tz(id)
now = now.month(now.month() + yue);
yue = now.month() + 1; yue = now.month() + 1;
const day = now.date() // 当前天 const day = now.date() // 当前天
const zhou = now.day(); // 当前周 const zhou = now.day(); // 当前周

View File

@ -294,7 +294,7 @@ export default defineComponent({
} }
const iszc = await checkuser({phone: phone.value.phone}) const iszc = await checkuser({phone: phone.value.phone})
if(iszc.data){ if(iszc.data){
message.error(lan.$t('zhanghaocunzai')) message.error(iszc.msg)
return ; return ;
} }
lock = true; lock = true;

View File

@ -507,7 +507,11 @@
</div> </div>
</div> </div>
<a-modal v-model:visible="huobi" :footer="null" :title="lan.$t('tishi')" > <a-modal v-model:visible="huobi" :footer="null" :title="lan.$t('tishi')" >
<p>{{lan.$t('huobitishi')}}</p> <div style=" display: flex;align-items: center;">
<img style=" width: 50px;margin-right: 15px;" src="@/static/images/tishihei.png" alt="">
<p style="margin-top: 1em">{{lan.$t('huobitishi')}}</p>
</div>
</a-modal> </a-modal>
<a-modal v-model:visible="touxiang" width="6rem" :footer="null"> <a-modal v-model:visible="touxiang" width="6rem" :footer="null">
<imghead @upload="imgupload" v-if="touxiang" :url="imgfire"></imghead> <imghead @upload="imgupload" v-if="touxiang" :url="imgfire"></imghead>
@ -960,7 +964,8 @@ export default defineComponent({
issum = false; issum = false;
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
console.log(info); console.log(info);
const jindu = info.percent.toFixed(2) * 100 let jindu: number = info.percent.toFixed(2) * 100;
jindu = parseInt(jindu + "");
uploadprogress.value = jindu > 0 ? jindu : 1; uploadprogress.value = jindu > 0 ? jindu : 1;
}); });
userinfo.value.video = res.video.url; userinfo.value.video = res.video.url;
@ -1107,6 +1112,7 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.archives { .archives {
width: 100%; width: 100%;
min-width: 700px; min-width: 700px;
@ -1114,6 +1120,7 @@ export default defineComponent({
padding: 46px; padding: 46px;
border-radius: 17px; border-radius: 17px;
position: relative; position: relative;
.telbox { .telbox {
margin-left: 15px; margin-left: 15px;
font-size: 12px; font-size: 12px;
@ -1380,19 +1387,19 @@ export default defineComponent({
} }
} }
.submit-btn { .submit-btn {
width: 63px; width: 70px;
height: 23px; height: 28px;
background: #08ae98; background: #08ae98;
border-radius: 3px; border-radius: 3px;
font-size: 10px; font-size: 10px;
font-weight: 500; font-weight: 500;
color: #ffffff; color: #ffffff;
text-align: center; text-align: center;
line-height: 23px; line-height: 28px;
cursor: pointer; cursor: pointer;
user-select: none; user-select: none;
position: absolute; position: fixed;
top: 1.5rem; top: 2.3rem;
right: 1rem; right: 1rem;
} }

View File

@ -231,7 +231,9 @@ export default defineComponent({
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
console.log(info); console.log(info);
uploadpicprogress.value = info.percent.toFixed(2) * 100; let jindu: number = info.percent.toFixed(2) * 100;
jindu = parseInt(jindu + "");
uploadpicprogress.value = jindu || 1;
}); });
console.log(res); console.log(res);
form.value.img = res.video.url; form.value.img = res.video.url;

View File

@ -222,8 +222,13 @@
<p>{{ lan.$t("querenquxiao") }}</p> <p>{{ lan.$t("querenquxiao") }}</p>
</a-modal> </a-modal>
<nav-bottom></nav-bottom> <nav-bottom></nav-bottom>
<div class="tishi" v-if="false"> <div class="tishi" v-if="true">
{{ lan.$t("zhibotishi") }} <img src="@/static/images/gantanhao.png" alt="">
<div>
{{ lan.$t("zhibotishi1") }}<br />
{{ lan.$t("zhibotishi") }}
</div>
</div> </div>
</div> </div>
@ -511,7 +516,9 @@ export default defineComponent({
uploadprogress.value = 1; 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);
const jindu = info.percent.toFixed(2) * 100 // const jindu = info.percent.toFixed(2) * 100
let jindu: number = info.percent.toFixed(2) * 100;
jindu = parseInt(jindu + "");
uploadprogress.value = jindu > 0 ? jindu : 1; uploadprogress.value = jindu > 0 ? jindu : 1;
}); });
console.log(res); console.log(res);
@ -525,7 +532,9 @@ export default defineComponent({
uploadpicprogress.value = 1; uploadpicprogress.value = 1;
const res = await uploadflie(file.file, (info: any) => { const res = await uploadflie(file.file, (info: any) => {
console.log(info); console.log(info);
uploadpicprogress.value = info.percent.toFixed(2) * 100 || 1; let jindu: number = info.percent.toFixed(2) * 100;
jindu = parseInt(jindu + "");
uploadpicprogress.value = jindu || 1;
}); });
console.log(res); console.log(res);
@ -634,13 +643,19 @@ export default defineComponent({
position: relative; position: relative;
.tishi{ .tishi{
position: absolute; position: absolute;
top: 40%; top: 60px;
right: 15%; right: 64px;
width: 25%;
line-height: 0.17rem; line-height: 0.17rem;
font-size: 0.1rem; font-size: 0.1rem;
font-weight: 500; font-weight: 500;
color: #808080; color: #808080;
display: flex;
align-items: center;
color:#07ad97;
> img{
width: 40px;
margin-right: 10px;
}
} }
::v-deep(.ant-form) { ::v-deep(.ant-form) {
.title { .title {

View File

@ -202,9 +202,8 @@ export default defineComponent({
}, },
setup(){ setup(){
console.log(1) console.log(1)
const date = getdate();
console.log(date) const month: any = ref({zhou:0,data:[]});
const month: any = ref(date);
const yue = ref(0); const yue = ref(0);
const userid = computed(() => { const userid = computed(() => {
return store.state.userinfo.memberid; return store.state.userinfo.memberid;
@ -249,16 +248,17 @@ export default defineComponent({
} }
function xia(){ function xia(){
yue.value = yue.value + 1; yue.value = yue.value + 1;
month.value = getdate(yue.value) month.value = getdate(yue.value, store.state.userinfo.zoneValue)
getdates(userid.value) getdates(userid.value)
} }
watch(userid, ()=> { watch(userid, ()=> {
month.value = getdate(0, store.state.userinfo.zoneValue)
getdates(userid.value); getdates(userid.value);
}) })
function shang(){ function shang(){
yue.value = yue.value - 1; yue.value = yue.value - 1;
month.value = getdate(yue.value) month.value = getdate(yue.value, store.state.userinfo.zoneValue)
getdates(userid.value) getdates(userid.value)
} }
@ -276,7 +276,11 @@ export default defineComponent({
} }
router.push({path: url,query: { id: id }}) router.push({path: url,query: { id: id }})
} }
getdates(userid.value); if(userid.value != 0){
month.value = getdate(0, store.state.userinfo.zoneValue)
getdates(userid.value);
}
return { return {
month, month,
xia, xia,