zj #87

Merged
asd merged 3 commits from zj into master 2020-10-28 01:34:03 +00:00
7 changed files with 1100 additions and 867 deletions

View File

@ -42,5 +42,11 @@ div {
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type="number"]{
-moz-appearance: textfield;
}
</style> </style>

View File

@ -189,6 +189,19 @@ export async function videoadd( form: any,data: any) {
} }
} }
/**
*
*/
export async function setvideo(data?: any) {
console.log(data,11110)
const res=await put<Liveaddrule>('video/'+data.id,data)
if(res.code==0){
message.success("修改成功")
}else{
message.error(res.msg)
}
}
/** /**
* *
*/ */

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="nav"> <div class="nav">
<div class="logo" :style="{'background-color': types == 0 ? 'unset' : ''}"> <div class="logo" :style="{'background-color': types == 0 ? 'unset' : ''}" @click="toindex">
<img src="@/static/images/logo.png" alt="" class="img"> <img src="@/static/images/logo.png" alt="" class="img">
<div class="title" :style="{'color': types == 0 ? '#07AD97' : ''}">Beelink</div> <div class="title" :style="{'color': types == 0 ? '#07AD97' : ''}">Beelink</div>
@ -183,12 +183,14 @@
} }
} }
</style> </style>
<script lang="ts"> <script lang="ts">
import { editsystemsetting, getcurrencys, getlanguages, getzonelist } from '@/api'; import { editsystemsetting, getcurrencys, getlanguages, getzonelist } from '@/api';
import router from '@/router'; import router from '@/router';
import store from '@/store'; import store from '@/store';
import { computed, defineComponent, onMounted, ref } from 'vue'; import { computed, defineComponent, onMounted, ref } from 'vue';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import axios from 'axios'
export default defineComponent({ export default defineComponent({
props:{ props:{
@ -199,6 +201,9 @@ export default defineComponent({
}, },
setup(props){ setup(props){
// console.log(useRoute().currentRoute.value.name) // console.log(useRoute().currentRoute.value.name)
axios.get("//api.map.baidu.com/location/ip?ak=YoG7yXzGNdKSDpAjvl7DpBaESaqzUKhT").then((res)=>{
console.log(res,"llllkljsdkoj")
})
const routes = useRoute(); const routes = useRoute();
console.log(routes.path); console.log(routes.path);
const types = ref(props.type) const types = ref(props.type)
@ -295,6 +300,9 @@ export default defineComponent({
function setlanguage(e?: any){ function setlanguage(e?: any){
editsystemsetting({language:e}) editsystemsetting({language:e})
} }
function toindex(){
router.push("/")
}
return { return {
nav, nav,
@ -308,7 +316,8 @@ export default defineComponent({
currencychange, currencychange,
languagelist, languagelist,
setlanguage, setlanguage,
nowroute nowroute,
toindex
} }
} }
}) })

View File

@ -47,6 +47,7 @@
import { defineComponent, ref } from "vue"; import { defineComponent, ref } from "vue";
import NavBottom from "@/components/NavBottom.vue"; import NavBottom from "@/components/NavBottom.vue";
import { feedback } from '@/api'; import { feedback } from '@/api';
import { useRoute } from 'vue-router';
export default defineComponent({ export default defineComponent({
name: "Aboutus", name: "Aboutus",
components: { components: {
@ -55,6 +56,11 @@ export default defineComponent({
setup() { setup() {
const tabindex=ref(1) const tabindex=ref(1)
const value = ref("") const value = ref("")
console.log(useRoute().query)
const selected=useRoute().query.selected
if(useRoute().query.selected){
tabindex.value=Number(selected)
}
const tabchange: (e: number) => void = (e: number) => { const tabchange: (e: number) => void = (e: number) => {
console.log(e); console.log(e);
tabindex.value=e tabindex.value=e

View File

@ -1,55 +1,72 @@
<template> <template>
<div class="cashout"> <div class="cashout">
<div class="mingxilist">
<div class="mingxilist"> <div class="tabs">
<div class="tabs"> <div class="beforetab">提现到指定账户</div>
<div class="beforetab">提现到指定账户</div> <span class="residue">余额{{ yue }}</span>
<span class="residue">余额{{yue}}</span> <div class="topbtn topbtn2">提现到指定账户</div>
<div class="topbtn topbtn2">提现到指定账户</div> <div class="topbtn topbtn1">提现记录</div>
<div class="topbtn topbtn1">提现记录</div> </div>
</div> <div class="line"></div>
<div class="line"></div> <div class="choose">
<div class="choose"> <div class="chooseitem">
<div class="chooseitem"> <div class="label">选择账户</div>
<div class="label">选择账户</div> <!-- <a-radio></a-radio> -->
<!-- <a-radio></a-radio> --> <!-- {{payinfo.type}} -->
<!-- {{payinfo.type}} --> <a-radio-group
<a-radio-group v-model:value="payinfo.type" @change="onChange"> v-model:value="payinfo.type"
<div class="accountlist"> @change="onChange"
<a-radio v-for="(i,j) in accountlist" :key="j" :value="j"> >
<div class="accountitem"> <div class="accountlist">
<div class="hostinfo" v-if="i.type==4"> <a-radio
<div> v-for="(i, j) in accountlist"
<img src="@/static/images/bank.png" alt="" class="icon" /> :key="j"
<span class="accounttype">银行卡</span> :value="j"
</div> >
</div> <div class="accountitem">
<div class="hostinfo" v-if="i.type==2"> <div class="hostinfo" v-if="i.type == 4">
<div> <div>
<img <img
src="@/static/images/walletzfb.png" src="@/static/images/bank.png"
alt="" alt=""
class="icon icon1" class="icon"
/> />
<span class="accounttype">支付宝</span> <span class="accounttype"
</div> >银行卡</span
</div> >
<div class="hostinfo" v-if="i.type==1"> </div>
<div> </div>
<img <div class="hostinfo" v-if="i.type == 2">
src="@/static/images/walletweixin.png" <div>
alt="" <img
class="icon icon1" src="@/static/images/walletzfb.png"
/> alt=""
<span class="accounttype">微信</span> class="icon icon1"
</div> />
</div> <span class="accounttype"
<div class="zhanghao">账号6217 **** **** **** 175</div> >支付宝</span
</div> >
</a-radio> </div>
</div>
<div class="hostinfo" v-if="i.type == 1">
<!-- <a-radio :value="2"> <div>
<img
src="@/static/images/walletweixin.png"
alt=""
class="icon icon1"
/>
<span class="accounttype"
>微信</span
>
</div>
</div>
<div class="zhanghao">
账号6217 **** **** **** 175
</div>
</div>
</a-radio>
<!-- <a-radio :value="2">
<div class="accountitem"> <div class="accountitem">
<div class="hostinfo"> <div class="hostinfo">
<div> <div>
@ -79,264 +96,290 @@
<div class="zhanghao">账号6217 **** **** **** 175</div> <div class="zhanghao">账号6217 **** **** **** 175</div>
</div> </div>
</a-radio> --> </a-radio> -->
</div>
</a-radio-group>
</div>
<div class="cashoutmoney">
<div class="label">提现金额</div>
<div class="moneynum">
<a-input v-model:value="payinfo.money" class="shuru" />
<div></div>
<div class="cashoutall" @click="all">全部金额</div>
<div class="desc">
每笔提现收取0.1%服务费最低0.1
</div>
</div>
</div>
<div
class="ale"
v-if="
payinfo.money < 100 || payinfo.money > parseFloat(yue)
"
>
*您的余额只有{{ parseFloat(yue) }}最低提现金额100
</div>
</div> </div>
</a-radio-group> <div class="cashoutall submit" @click="sub">立即提现</div>
<NavBottom class="navbottom"></NavBottom>
</div> </div>
<div class="cashoutmoney">
<div class="label">提现金额</div>
<div class="moneynum">
<a-input v-model:value="payinfo.money" class="shuru" />
<div></div>
<div class="cashoutall" @click="all">全部金额</div>
<div class="desc">每笔提现收取0.1%服务费最低0.1</div>
</div>
</div>
<div class="ale" v-if="payinfo.money<100 || payinfo.money>parseFloat(yue)">*您的余额只有{{parseFloat(yue)}}最低提现金额100</div>
</div>
<div class="cashoutall submit" @click="sub">立即提现</div>
<NavBottom class="navbottom"></NavBottom>
</div> </div>
</div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, onMounted, ref, toRaw } from "vue"; import { 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";
import { message } from "ant-design-vue";
export default defineComponent({ export default defineComponent({
name: "Cashout", name: "Cashout",
components: { components: {
NavBottom, NavBottom,
}, },
setup() { setup() {
const money = ref(0); const money = ref(0);
const payinfo=ref<any>({ const payinfo = ref<any>({
type:0, type: 0,
money:0, money: 0,
account :"", account: "",
mname:"", mname: "",
bankcode:"", bankcode: "",
bankname:"", bankname: "",
international:0, international: 0,
});
const moneychange: (e: number) => void = (e: number) => {
console.log(e);
};
// const yue=ref<string>(store.state.userinfo.money)
const yue = ref<number>(10000);
// yue.value=store.state.userinfo.money
const accountlist = ref<Array<any>>([]);
}) onMounted(async () => {
const moneychange: (e: number) => void = (e: number) => { accountlist.value = await getwallect();
console.log(e); console.log(store.state.userinfo);
}; });
// const yue=ref<string>(store.state.userinfo.money) function onChange(e: any) {
const yue=ref<number>(10000) console.log(e.target.value);
// yue.value=store.state.userinfo.money payinfo.value.type = e.target.value;
const accountlist =ref<Array<any>>([]) // payinfo.value.typeid=toRaw(accountlist.value)[e.target.value].wallectid
// payinfo.value.type=toRaw(accountlist.value)[e.target.value].wallectid
}
function all() {
payinfo.value.money = yue.value;
}
function sub() {
console.log(toRaw(payinfo.value));
onMounted(async () => { payinfo.value.money = Number(payinfo.value.money);
accountlist.value=await getwallect(); console.log(toRaw(payinfo.value));
}); if (accountlist.value.length == 0) {
function onChange(e: any) { message.error("您的账户列表为空,请先添加");
console.log(e.target.value); return;
payinfo.value.type=e.target.value } else if (payinfo.value.money < 100) {
// payinfo.value.typeid=toRaw(accountlist.value)[e.target.value].wallectid message.error("最低提现金额为100");
// payinfo.value.type=toRaw(accountlist.value)[e.target.value].wallectid return;
} } else if (payinfo.value.money > yue.value) {
function all(){ message.error("余额不足");
payinfo.value.money=yue.value } else {
} cashout(
function sub(){ toRaw(payinfo.value),
console.log(toRaw(payinfo.value)) toRaw(accountlist.value)[payinfo.value.type]
console.log(toRaw(payinfo.value)) );
payinfo.value.money=Number(payinfo.value.money) }
cashout(toRaw(payinfo.value),toRaw(accountlist.value)[payinfo.value.type])
// cashout(
} // toRaw(payinfo.value),
return { // toRaw(accountlist.value)[payinfo.value.type]
money, // );
moneychange, }
payinfo, return {
onChange, money,
all, moneychange,
yue, payinfo,
sub, onChange,
accountlist, all,
store yue,
}; sub,
}, accountlist,
store,
};
},
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.cashout ::v-deep(.ant-breadcrumb) > span:last-child { .cashout ::v-deep(.ant-breadcrumb) > span:last-child {
color: #08ae98; color: #08ae98;
} }
.cashout ::v-deep(.ant-radio-wrapper) { .cashout ::v-deep(.ant-radio-wrapper) {
display: flex; display: flex;
} }
.cashout ::v-deep(.ant-radio) { .cashout ::v-deep(.ant-radio) {
top: 43px; top: 43px;
height:13px height: 13px;
} }
.cashout { .cashout {
.mingxilist { .mingxilist {
width: 1150px; width: 1150px;
// height: 533px; // height: 533px;
background: white; background: white;
border-radius: 18px; border-radius: 18px;
margin-top: 18px; margin-top: 18px;
.tabs { .tabs {
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
padding-top: 35px; padding-top: 35px;
padding-left: 40px; padding-left: 40px;
.residue { .residue {
font-size: 11px; font-size: 11px;
margin: auto 0; margin: auto 0;
color: #08ae98; color: #08ae98;
position: relative; position: relative;
left: -30px; left: -30px;
} }
.topbtn { .topbtn {
// width: 89px; // width: 89px;
height: 17px; height: 17px;
padding-left: 14px; padding-left: 14px;
padding-right: 14px; padding-right: 14px;
line-height: 17px; line-height: 17px;
border: 1px solid #08ae98; border: 1px solid #08ae98;
border-radius: 3px; border-radius: 3px;
font-size: 10px; font-size: 10px;
color: #08ae98; color: #08ae98;
font-weight: 500;
margin: auto 0;
}
.topbtn2 {
margin-left: 642px;
}
.topbtn1 {
padding-left: 9px;
padding-right: 9px;
color: #d12c2e;
border: 1px solid #d12c2e;
margin-left: 11px;
}
}
.line {
width: 1070px;
height: 1px;
background: #eeeeee;
margin: 0 auto;
margin-top: 11px;
}
.beforetab {
color: #121212;
font-size: 13px;
line-height: 35px;
font-weight: bold;
margin-right: 57px;
}
.choose {
margin-top: 28px;
margin-left: 40px;
.label {
color: #808080;
font-size: 11px;
margin-right: 28px;
}
.chooseitem {
display: flex;
margin-bottom: 34px;
.label{
width:150px;
}
.accountlist {
display: flex;
flex-wrap: wrap;
.accountitem {
// width: 200px;
padding-bottom: 16px;
padding-right: 20px;
border: 1px solid #dcdfe0;
background: white;
border-radius: 17px;
margin-left: 17px;
margin-right: 46px;
margin-bottom: 17px;
.hostinfo {
display: flex;
padding-top: 17px;
.icon {
width: 47px;
height: 29px;
margin-right: 11px;
margin-left: 17px;
}
.icon1 {
width: 29px !important;
height: 29px !important;
}
.accounttype {
font-size: 13px;
color: #111111;
font-weight: 500; font-weight: 500;
} margin: auto 0;
} }
.zhanghao { .topbtn2 {
color: #111111; margin-left: 642px;
font-size: 10px; }
margin-top: 38px; .topbtn1 {
margin-left: 17px; padding-left: 9px;
padding-right: 9px;
color: #d12c2e;
border: 1px solid #d12c2e;
margin-left: 11px;
} }
}
} }
} .line {
.cashoutmoney { width: 1070px;
display: flex; height: 1px;
.moneynum { background: #eeeeee;
display: flex; margin: 0 auto;
font-size: 11px; margin-top: 11px;
line-height: 23px;
color: #808080;
.shuru {
width: 171px;
height: 23px;
margin-right: 8px;
}
.desc{
margin-left:17px
}
} }
} .beforetab {
} color: #121212;
.cashoutall { font-size: 13px;
line-height: 35px;
font-weight: bold;
margin-right: 57px;
}
.choose {
margin-top: 28px;
margin-left: 40px;
.label {
color: #808080;
font-size: 11px;
margin-right: 28px;
}
.chooseitem {
display: flex;
margin-bottom: 34px;
// .label {
// width: 150px;
// }
.accountlist {
display: flex;
flex-wrap: wrap;
.accountitem {
// width: 200px;
padding-bottom: 16px;
padding-right: 20px;
border: 1px solid #dcdfe0;
background: white;
border-radius: 17px;
margin-left: 17px;
margin-right: 46px;
margin-bottom: 17px;
.hostinfo {
display: flex;
padding-top: 17px;
.icon {
width: 47px;
height: 29px;
margin-right: 11px;
margin-left: 17px;
}
.icon1 {
width: 29px !important;
height: 29px !important;
}
.accounttype {
font-size: 13px;
color: #111111;
font-weight: 500;
}
}
.zhanghao {
color: #111111;
font-size: 10px;
margin-top: 38px;
margin-left: 17px;
}
}
}
}
.cashoutmoney {
display: flex;
.moneynum {
display: flex;
font-size: 11px;
line-height: 23px;
color: #808080;
.shuru {
width: 171px;
height: 23px;
margin-right: 8px;
}
.desc {
margin-left: 17px;
}
}
}
}
.cashoutall {
width: 67px; width: 67px;
height: 23px; height: 23px;
line-height: 23px; line-height: 23px;
background: #08ae98; background: #08ae98;
border-radius: 3px; border-radius: 3px;
color:white; color: white;
text-align: center; text-align: center;
margin-left: 23px; margin-left: 23px;
font-weight: bold; font-weight: bold;
} }
.ale{ .ale {
color:#D12C2E; color: #d12c2e;
font-size: 10px; font-size: 10px;
position: relative; position: relative;
left: 80px; left: 80px;
top: 11px; top: 11px;
} }
.submit{ .submit {
font-size:10px; font-size: 10px;
font-weight: 500; font-weight: 500;
position: relative; position: relative;
top: 56px; top: 56px;
left: 20px; left: 20px;
} }
} }
.navbottom { .navbottom {
padding-top: 250px; padding-top: 250px;
padding-bottom: 30px; padding-bottom: 30px;
} }
} }
</style> </style>

View File

@ -10,7 +10,7 @@
/> />
</a-form-item> </a-form-item>
<a-form-item label="视频封面" class="video-cover"> <a-form-item label="视频封面" class="video-cover">
<a-upload list-type="picture" :customRequest="uploadspic"> <a-upload list-type="picture" :customRequest="uploadspic" :before-upload="beforeUpload">
<div class="upload-image" v-if="!viewCover && form.img.length == 0"> <div class="upload-image" v-if="!viewCover && form.img.length == 0">
<PlusOutlined <PlusOutlined
style="fontsize: 22px" style="fontsize: 22px"
@ -109,8 +109,9 @@ import NavBottom from "@/components/NavBottom.vue";
import { previewCover } from "@/utils/common"; import { previewCover } from "@/utils/common";
import { FromSend, ImgInfo, VideoInfo } from "@/types"; import { FromSend, ImgInfo, VideoInfo } from "@/types";
import { uploadflie } from "@/utils/vod"; import { uploadflie } from "@/utils/vod";
import { videoadd, videodetail } from "@/api"; import { setvideo, videoadd, videodetail } from "@/api";
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { message } from 'ant-design-vue';
export default defineComponent({ export default defineComponent({
name: "ReleaseWebcast", name: "ReleaseWebcast",
@ -137,7 +138,7 @@ export default defineComponent({
}); });
onMounted(async () => { onMounted(async () => {
if(useRoute().query.id){ if(useRoute().query.id){
console.log(useRoute().query.id) console.log(useRoute().query.id,"knijkdbj")
form.value = await videodetail(useRoute().query.id,1) form.value = await videodetail(useRoute().query.id,1)
console.log(form.value,"fornm") console.log(form.value,"fornm")
} }
@ -189,71 +190,136 @@ export default defineComponent({
const uploadpicprogress: Ref<number> = ref(0); const uploadpicprogress: Ref<number> = ref(0);
const videofile = ref<File>(); const videofile = ref<File>();
const videos = ref<Array<any>>([]); const videos = ref<Array<any>>([]);
const ifalowupload=ref<boolean>(false)
interface AntUpload { interface AntUpload {
action: string; action: string;
data: unknown; data: unknown;
file: File; file: File;
} }
async function uploadspic(file: AntUpload) { async function uploadspic(file: AntUpload) {
const res = await uploadflie(file.file, (info: any) => { if(ifalowupload.value){
console.log(info); const res = await uploadflie(file.file, (info: any) => {
uploadpicprogress.value = info.percent.toFixed(2) * 100; console.log(info);
}); uploadpicprogress.value = info.percent.toFixed(2) * 100;
console.log(res); });
form.value.img = res.video.url; console.log(res);
form.value.img = res.video.url;
}else{
return
}
} }
/** /**
* 上传视频 * 上传视频
*/ */
const uploadprogress: Ref<number> = ref(0); const uploadprogress: Ref<number> = ref(0);
const ifallowvideo=ref<boolean>(false)
async function uploads(file: AntUpload) { async function uploads(file: AntUpload) {
uploadprogress.value=0 if(ifallowvideo.value){
form.value.video=[""] uploadprogress.value=0
console.log(file); form.value.video=[""]
videofile.value = file.file; console.log(file);
videos.value[0].addEventListener("durationchange", () => { videofile.value = file.file;
console.log(videos.value[0].duration); videos.value[0].addEventListener("durationchange", () => {
form.value.fileduration = videos.value[0].duration; console.log(videos.value[0].duration);
}); form.value.fileduration = videos.value[0].duration;
const res = await uploadflie(file.file, (info: any) => { });
console.log(info); const res = await uploadflie(file.file, (info: any) => {
uploadprogress.value = info.percent.toFixed(2) * 100; console.log(info);
}); uploadprogress.value = info.percent.toFixed(2) * 100;
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;
form.value.video[0]=res.video.url form.value.video[0]=res.video.url
uploadprogress.value=0
}
}
function beforeVideoUpload(info?: any){
console.log(info)
if(info.type.split("/")[0]!="video"){
ifallowvideo.value
message.error("文件必须是视频格式")
}else{
ifallowvideo.value=true
}
} }
/** /**
* 表单提交 * 表单提交
*/ */
const routes=useRoute()
const onSubmit = async (e: FromSend) => { const onSubmit = async (e: FromSend) => {
e.preventDefault(); e.preventDefault();
console.log(toRaw(form.value), 111); console.log(toRaw(form.value), 111);
videoadd(form, toRaw(form.value)); console.log(toRaw(form.value).video[0].length)
console.log(routes.query,"adsadsa")
const subdata=toRaw(form.value)
if(subdata.title==""){
message.error("标题不能为空")
return
}else if(subdata.img==""){
message.error("封面不能为空")
return
}else if(subdata.fileurl==""){
message.error("视频文件不能为空")
}else if(subdata.desc==""){
message.error("视频简介不能为空")
}
else{
if(routes.query.id){
form.value.id=routes.query.id
console.log('edi')
setvideo(form.value)
}else{
videoadd(form, toRaw(form.value));
}
// videoadd(form, toRaw(form.value));
}
// videoadd(form, toRaw(form.value));
}; };
function beforeUpload(info?: any){
console.log(info.type)
if(info.type.split('/')[0]!="image"){
message.error("上传文件必须是图片格式")
ifalowupload.value=false
return
}else{
ifalowupload.value=true
}
}
return { return {
labelCol: { span: 4 }, labelCol: { span: 4 },
wrapperCol: { span: 14 }, wrapperCol: { span: 14 },
form, form,
viewCover, viewCover,
previewImage, previewImage,
previewCover, previewCover,
coverChange, coverChange,
cancelCover, cancelCover,
beforeCoverUpload, beforeCoverUpload,
onSubmit, onSubmit,
uploadpicprogress, uploadpicprogress,
uploadspic, uploadspic,
uploadprogress, uploadprogress,
uploads, uploads,
videofile, videofile,
videos, videos,
removeFile removeFile,
beforeUpload,
ifalowupload,
beforeVideoUpload
}; };
}, },
}); });

File diff suppressed because it is too large Load Diff