@@ -69,6 +69,7 @@ your_dashboard = Dashboard | |||||
your_profile = Profile | your_profile = Profile | ||||
your_starred = Starred | your_starred = Starred | ||||
your_settings = Settings | your_settings = Settings | ||||
invite_friends = Invite Friends | |||||
all = All | all = All | ||||
sources = Sources | sources = Sources | ||||
@@ -69,6 +69,7 @@ your_dashboard=个人中心 | |||||
your_profile=个人信息 | your_profile=个人信息 | ||||
your_starred=已点赞 | your_starred=已点赞 | ||||
your_settings=设置 | your_settings=设置 | ||||
invite_friends=邀请好友 | |||||
all=所有 | all=所有 | ||||
sources=自建 | sources=自建 | ||||
@@ -180,6 +180,10 @@ | |||||
</i> | </i> | ||||
{{.i18n.Tr "custom.Platform_Tutorial"}} | {{.i18n.Tr "custom.Platform_Tutorial"}} | ||||
</a> | </a> | ||||
<a class="item" href="{{AppSubUrl}}/user/invitation_tpl"> | |||||
<i class="icon users"></i> | |||||
{{.i18n.Tr "invite_friends"}} | |||||
</a> | |||||
{{if .IsAdmin}} | {{if .IsAdmin}} | ||||
<div class="divider"></div> | <div class="divider"></div> | ||||
@@ -177,6 +177,10 @@ | |||||
</svg> | </svg> | ||||
</i> | </i> | ||||
{{.i18n.Tr "custom.Platform_Tutorial"}} | {{.i18n.Tr "custom.Platform_Tutorial"}} | ||||
</a> | |||||
<a class="item" href="{{AppSubUrl}}/user/invitation_tpl"> | |||||
<i class="icon users"></i> | |||||
{{.i18n.Tr "invite_friends"}} | |||||
</a> | </a> | ||||
{{if .IsAdmin}} | {{if .IsAdmin}} | ||||
<div class="divider"></div> | <div class="divider"></div> | ||||
@@ -160,6 +160,10 @@ | |||||
</i> | </i> | ||||
{{.i18n.Tr "custom.Platform_Tutorial"}} | {{.i18n.Tr "custom.Platform_Tutorial"}} | ||||
</a> | </a> | ||||
<a class="item" href="{{AppSubUrl}}/user/invitation_tpl"> | |||||
<i class="icon users"></i> | |||||
{{.i18n.Tr "invite_friends"}} | |||||
</a> | |||||
{{if .IsAdmin}} | {{if .IsAdmin}} | ||||
<div class="divider"></div> | <div class="divider"></div> | ||||
@@ -181,6 +181,10 @@ | |||||
</i> | </i> | ||||
{{.i18n.Tr "custom.Platform_Tutorial"}} | {{.i18n.Tr "custom.Platform_Tutorial"}} | ||||
</a> | </a> | ||||
<a class="item" href="{{AppSubUrl}}/user/invitation_tpl"> | |||||
<i class="icon users"></i> | |||||
{{.i18n.Tr "invite_friends"}} | |||||
</a> | |||||
{{if .IsAdmin}} | {{if .IsAdmin}} | ||||
<div class="divider"></div> | <div class="divider"></div> | ||||
@@ -35,6 +35,9 @@ | |||||
{{if .DisableRegistration}} | {{if .DisableRegistration}} | ||||
<p>{{.i18n.Tr "auth.disable_register_prompt"}}</p> | <p>{{.i18n.Tr "auth.disable_register_prompt"}}</p> | ||||
{{else}} | {{else}} | ||||
<div class="field" style="font-weight:400;font-size:14px;color:rgba(250,140,22,1);"> | |||||
<span>您的好友 <span>Itx003</span> 邀请你加入启智社区AI协作平台,畅享充沛的免费算力资源!</span> | |||||
</div> | |||||
<div class="field {{if and (.Err_UserName) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister))}}error{{end}}"> | <div class="field {{if and (.Err_UserName) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister))}}error{{end}}"> | ||||
<input id="user_name" name="user_name" value="{{.user_name}}" placeholder="{{.i18n.Tr "username"}}" autofocus required> | <input id="user_name" name="user_name" value="{{.user_name}}" placeholder="{{.i18n.Tr "username"}}" autofocus required> | ||||
</div> | </div> | ||||
@@ -71,6 +74,16 @@ | |||||
{{template "user/auth/phone_verify" .}} | {{template "user/auth/phone_verify" .}} | ||||
</div> | </div> | ||||
{{end}} | {{end}} | ||||
<div class="field"> | |||||
<div style="display:flex;"> | |||||
<div style="display:flex;align-items:center;"> | |||||
<span>推荐人</span> | |||||
</div> | |||||
<input style="flex:1;margin-left:12px;" id="shared_user" name="shared_user" value="{{.password}}" autocomplete="off" /> | |||||
</div> | |||||
</div> | |||||
<div class="field"> | <div class="field"> | ||||
<div class="ui checkbox"> | <div class="ui checkbox"> | ||||
<input name="agree" type="checkbox" tabindex="0" class="hidden" {{if .agree}}checked{{end}}><label>{{.i18n.Tr "use_and_privacy_agree" "/home/term" "/home/privacy" | Safe}}</label> | <input name="agree" type="checkbox" tabindex="0" class="hidden" {{if .agree}}checked{{end}}><label>{{.i18n.Tr "use_and_privacy_agree" "/home/term" "/home/privacy" | Safe}}</label> | ||||
@@ -18,6 +18,9 @@ | |||||
v-cloak | v-cloak | ||||
> | > | ||||
<div> | <div> | ||||
<div style="height:60px;"> | |||||
<a href="/user/invitation_tpl"><img src="/img/ad/ad02.png" style="width:100%;height:100%" /></a> | |||||
</div> | |||||
<div v-if="!isOrganization" class="ui two item tabable menu"> | <div v-if="!isOrganization" class="ui two item tabable menu"> | ||||
<a :class="{item: true, active: tab === 'repos'}" @click="changeTab('repos')">{{.i18n.Tr "repository"}}</a> | <a :class="{item: true, active: tab === 'repos'}" @click="changeTab('repos')">{{.i18n.Tr "repository"}}</a> | ||||
<a :class="{item: true, active: tab === 'organizations'}" @click="changeTab('organizations')">{{.i18n.Tr "organization"}}</a> | <a :class="{item: true, active: tab === 'organizations'}" @click="changeTab('organizations')">{{.i18n.Tr "organization"}}</a> | ||||
@@ -48,6 +48,12 @@ | |||||
</li> | </li> | ||||
{{end}} | {{end}} | ||||
{{end}} | {{end}} | ||||
<li> | |||||
{{svg "octicon-clock" 16}} {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}} | |||||
<div style="margin-top:6px;height:50px;"> | |||||
<a href="/user/invitation_tpl"><img src="/img/ad/ad02.png" style="width:100%;height:100%" /></a> | |||||
</div> | |||||
</li> | |||||
<li>{{svg "octicon-clock" 16}} {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li> | <li>{{svg "octicon-clock" 16}} {{.i18n.Tr "user.join_on"}} {{.Owner.CreatedUnix.FormatShort}}</li> | ||||
{{if and .Orgs .HasOrgsVisible}} | {{if and .Orgs .HasOrgsVisible}} | ||||
@@ -0,0 +1,7 @@ | |||||
{{template "base/head" .}} | |||||
<link rel="stylesheet" href="{{StaticUrlPrefix}}/css/vp-user-invite.css?v={{MD5 AppVer}}" /> | |||||
<div class="user settings invite"> | |||||
<div id="__vue-root"></div> | |||||
</div> | |||||
<script src="{{StaticUrlPrefix}}/js/vp-user-invite.js?v={{MD5 AppVer}}"></script> | |||||
{{template "base/footer" .}} |
@@ -0,0 +1,87 @@ | |||||
; (function () { | |||||
const adList = [{ | |||||
id: 1, | |||||
pos: { | |||||
left: 50, | |||||
bottom: 50, | |||||
}, | |||||
src: '/img/ad/ad01.png', | |||||
url: '/user/invitation_tpl', | |||||
width: 144, | |||||
height: 108, | |||||
}/*, { | |||||
id: 2, | |||||
pos: { | |||||
right: 50, | |||||
bottom: 50, | |||||
}, | |||||
src: '/img/ad/ad01.png', | |||||
url: '/user/invitation_tpl', | |||||
width: 144, | |||||
height: 108, | |||||
}*/]; | |||||
function createAd(adList) { | |||||
const adInfoStr = window.localStorage.getItem('ads') || '{}'; | |||||
let adInfoObj = JSON.parse(adInfoStr); | |||||
const today = new Date(); | |||||
const timeEnd = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1).getTime(); | |||||
const now = Date.now(); | |||||
if (!adInfoObj.expires || adInfoObj.expires <= now) { | |||||
adInfoObj = { | |||||
expires: timeEnd, | |||||
}; | |||||
} | |||||
for (var i = 0, iLen = adList.length; i < iLen; i++) { | |||||
var adI = adList[i]; | |||||
var showOr = adInfoObj[adI.id] === false ? false : true; | |||||
adInfoObj[adI.id] = showOr; | |||||
if (!showOr) continue; | |||||
var adEl = $(`<div class="__ad_c__" _id="${adI.id}" style="position:fixed;z-index:99999999; | |||||
width:${adI.width}px;height:${adI.height}px; | |||||
left:${adI.pos.left !== undefined ? adI.pos.left + 'px' : ''}; | |||||
top:${adI.pos.top !== undefined ? adI.pos.top + 'px' : ''}; | |||||
right:${adI.pos.right !== undefined ? adI.pos.right + 'px' : ''}; | |||||
bottom:${adI.pos.bottom !== undefined ? adI.pos.bottom + 'px' : ''};"> | |||||
<a style="" href="${adI.url}" target="_blank"> | |||||
<img style="height:100%;width:100%;" src="${adI.src}" /> | |||||
</a> | |||||
<div class="__ad_close_c__" style="position:absolute;top:6px;right:6px;"> | |||||
<i class="ri-close-circle-line __ad_close__" style="color:white;font-size:18px;cursor:pointer;"></i> | |||||
</div> | |||||
</div>`); | |||||
$('body').append(adEl); | |||||
} | |||||
window.localStorage.setItem('ads', JSON.stringify(adInfoObj)); | |||||
} | |||||
function initAdEvent() { | |||||
$('body').on('click', '.__ad_c__ .__ad_close__', function () { | |||||
var self = $(this); | |||||
var adEl = self.closest('.__ad_c__'); | |||||
var adId = adEl.attr('_id'); | |||||
const adInfoStr = window.localStorage.getItem('ads') || '{}'; | |||||
const adInfoObj = JSON.parse(adInfoStr); | |||||
adInfoObj[adId] = false; | |||||
window.localStorage.setItem('ads', JSON.stringify(adInfoObj)); | |||||
adEl.remove(); | |||||
}); | |||||
var scrollTopOld = $(document).scrollTop(); | |||||
var timeHandler = null; | |||||
$(window).scroll(function (e) { | |||||
var scrollTop = $(document).scrollTop(); | |||||
var offSet = scrollTop - scrollTopOld; | |||||
scrollTopOld = scrollTop; | |||||
timeHandler && clearTimeout(timeHandler); | |||||
$('.__ad_c__').animate({ bottom: 50 + offSet + 'px' }, 0); | |||||
timeHandler = setTimeout(function () { | |||||
$('.__ad_c__').animate({ bottom: 50 + 'px' }, 0); | |||||
}, 20); | |||||
}); | |||||
} | |||||
setTimeout(function () { | |||||
createAd(adList); | |||||
initAdEvent(); | |||||
}, 0); | |||||
})(); |
@@ -52,6 +52,7 @@ import router from "./router/index.js"; | |||||
import { Message } from "element-ui"; | import { Message } from "element-ui"; | ||||
import { i18nVue } from "./features/i18nVue.js"; | import { i18nVue } from "./features/i18nVue.js"; | ||||
import './features/ad.js'; | |||||
Vue.use(ElementUI); | Vue.use(ElementUI); | ||||
Vue.prototype.$axios = axios; | Vue.prototype.$axios = axios; | ||||
@@ -77,7 +77,7 @@ | |||||
}); | }); | ||||
function mouseMove(e) { | function mouseMove(e) { | ||||
var _clientX = e.clientX; | |||||
var _clientX = e.clientX !== undefined ? e.clientX : e.targetTouches[0].clientX; | |||||
var offset = _clientX - clientX; | var offset = _clientX - clientX; | ||||
var triggerEl = self.dom.find('.slide-trigger'); | var triggerEl = self.dom.find('.slide-trigger'); | ||||
var triggerWidth = triggerEl.width(); | var triggerWidth = triggerEl.width(); | ||||
@@ -99,6 +99,8 @@ | |||||
function mouseUp(e) { | function mouseUp(e) { | ||||
$(document).off('mousemove', mouseMove); | $(document).off('mousemove', mouseMove); | ||||
$(document).off('mouseup', mouseUp); | $(document).off('mouseup', mouseUp); | ||||
$(document).off('touchmove', mouseMove); | |||||
$(document).off('touchend', mouseUp); | |||||
self.isMoving = false; | self.isMoving = false; | ||||
$.ajax({ | $.ajax({ | ||||
url: '/verifySlideImage', | url: '/verifySlideImage', | ||||
@@ -106,7 +108,7 @@ | |||||
dataType: 'json', | dataType: 'json', | ||||
data: { | data: { | ||||
slide_id: self.imgID, | slide_id: self.imgID, | ||||
x: parseInt(self.dom.find('.slide-image-small').position().left) | |||||
x: parseInt(self.dom.find('.slide-image-small').position().left / self.dom.find('.slide-image-big').attr('scale')) | |||||
}, | }, | ||||
success: function (res) { | success: function (res) { | ||||
if (res && res.Code === 0) { | if (res && res.Code === 0) { | ||||
@@ -138,13 +140,18 @@ | |||||
}); | }); | ||||
} | } | ||||
this.dom.find('.slide-trigger').on('mousedown', function (e) { | |||||
function mouseDown(e) { | |||||
if (self.verifySucess) return; | if (self.verifySucess) return; | ||||
clientX = e.clientX; | |||||
clientX = e.clientX !== undefined ? e.clientX : e.targetTouches[0].clientX; | |||||
oLeft = $(this).position().left; | oLeft = $(this).position().left; | ||||
$(document).on('mousemove', mouseMove); | $(document).on('mousemove', mouseMove); | ||||
$(document).on('mouseup', mouseUp); | $(document).on('mouseup', mouseUp); | ||||
}); | |||||
$(document).on('touchmove', mouseMove); | |||||
$(document).on('touchend', mouseUp); | |||||
} | |||||
this.dom.find('.slide-trigger').on('mousedown', mouseDown); | |||||
this.dom.find('.slide-trigger').on('touchstart', mouseDown); | |||||
this.dom.find('.verify-code-send-btn').on('click', function () { | this.dom.find('.verify-code-send-btn').on('click', function () { | ||||
if (!self.canSendCode) return; | if (!self.canSendCode) return; | ||||
@@ -199,6 +206,7 @@ | |||||
self.dom.find('.slide-bar-wrap').css('display', 'flex'); | self.dom.find('.slide-bar-wrap').css('display', 'flex'); | ||||
self.dom.find('.verify-code-c').css('display', 'flex'); | self.dom.find('.verify-code-c').css('display', 'flex'); | ||||
self.dom.find('.modify-phone-number').hide(); | self.dom.find('.modify-phone-number').hide(); | ||||
self.refreshImages(); | |||||
}); | }); | ||||
}; | }; | ||||
@@ -210,6 +218,8 @@ | |||||
this.imgID = ''; | this.imgID = ''; | ||||
this.dom.find('.slide-bar').removeClass('sucess error').css('width', '30px'); | this.dom.find('.slide-bar').removeClass('sucess error').css('width', '30px'); | ||||
this.dom.find('.slide-trigger').removeClass('sucess error').css('left', '0px'); | this.dom.find('.slide-trigger').removeClass('sucess error').css('left', '0px'); | ||||
var scale = this.dom.find('.slide-bar-bg').width() / 391; | |||||
this.dom.find('.slide-image-big').css('transform', `scale(${scale})`).attr('scale', scale); | |||||
this.dom.find('.slide-trigger .icon').hide(); | this.dom.find('.slide-trigger .icon').hide(); | ||||
this.dom.find('.slide-trigger .icon.arrow').show(); | this.dom.find('.slide-trigger .icon.arrow').show(); | ||||
this.dom.find('.slide-txt').show(); | this.dom.find('.slide-txt').show(); | ||||
@@ -174,10 +174,11 @@ | |||||
width: 391px; | width: 391px; | ||||
height: 196px; | height: 196px; | ||||
top: 36px; | top: 36px; | ||||
left: 0; | |||||
left: 1px; | |||||
border-radius: 2px; | border-radius: 2px; | ||||
z-index: 100; | z-index: 100; | ||||
display: none; | display: none; | ||||
transform-origin: 0 0; | |||||
} | } | ||||
.__phone-verify-code .slide-bar-c .slide-image-small { | .__phone-verify-code .slide-bar-c .slide-image-small { | ||||
@@ -0,0 +1,11 @@ | |||||
import service from '../service'; | |||||
// 邀请好友页面数据 | |||||
export const getUserInvitationCode = () => { | |||||
return service({ | |||||
url: '/user/invitation_code', | |||||
method: 'get', | |||||
params: {}, | |||||
data: {}, | |||||
}); | |||||
} |
@@ -0,0 +1,279 @@ | |||||
<template> | |||||
<div class="ui container"> | |||||
<div class="title"> | |||||
<div class="title-1"><span>邀请好友</span></div> | |||||
<div class="title-2"><span>复制二维码或者邀请注册链接分享给好友</span></div> | |||||
</div> | |||||
<div class="content-1"> | |||||
<div class="img-c"> | |||||
<img class="img" src="/img/ad/ad03.jpg" /> | |||||
<div class="txt">邀请好友来启智,用免费算力还能赚奖金!</div> | |||||
</div> | |||||
<div class="descr"> | |||||
<span>新一期的开源打榜活动,每邀请一名好友注册并激活,就可以获得5打榜积分。快快邀请更多好友帮你冲击榜单吧~ </span> | |||||
<a>点击查看活动详情</a> | |||||
</div> | |||||
</div> | |||||
<div class="content-2"> | |||||
<div class="txt-c"> | |||||
<div class="txt-1"> | |||||
<span>启智AI协作平台是启智社区面向AI开发者提供的一站式AI开发协作平台,提供了代码托管、数据集管理、基于异构计算资源的模型调试与训练等功能。目前已经与鹏城云脑、中国算力网(C²NET)一期打通,免费提供丰富算力资源,支撑大家完成AI开发任务。</span> | |||||
</div> | |||||
<div class="txt-2"><span>{{ sharedLink }}</span></div> | |||||
<div class="txt-3"><span>推荐人:</span><span>{{ sharedUser }}</span></div> | |||||
<el-button class="__copy_link_btn__" type="primary">复制注册邀请链接</el-button> | |||||
</div> | |||||
<div class="qr-code"> | |||||
<img src="" alt="" style="width:120px;height:120px;"> | |||||
</div> | |||||
</div> | |||||
<div class="table-container"> | |||||
<div> | |||||
<el-table border :data="tableData" style="width:100%" v-loading="loading" stripe> | |||||
<el-table-column prop="ID" label="已邀请好友" align="left" header-align="center"> | |||||
<template slot-scope="scope"> | |||||
<div style="display:flex;align-items:center;padding-left:20px;"> | |||||
<img src="" alt="" style="height:45px;width:45px;margin-right:10px;" /> | |||||
<a :href="scope.row.userLink" style="font-weight:500;font-size:15px;">{{ scope.row.userName }}</a> | |||||
</div> | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column prop="statusStr" label="状态" align="center" header-align="center"> | |||||
<template slot-scope="scope"> | |||||
<span :style="{ color: scope.row.statusColor }">{{ scope.row.statusStr }}</span> | |||||
</template> | |||||
</el-table-column> | |||||
<el-table-column prop="regTime" label="注册时间" align="center" header-align="center"> | |||||
</el-table-column> | |||||
<template slot="empty"> | |||||
<span style="font-size: 12px">{{ | |||||
loading ? $t('loading') : $t('noData') | |||||
}}</span> | |||||
</template> | |||||
</el-table> | |||||
</div> | |||||
<div class="__r_p_pagination"> | |||||
<div style="margin-top: 2rem"> | |||||
<div class="center"> | |||||
<el-pagination background @current-change="currentChange" :current-page="pageInfo.curpage" | |||||
:page-sizes="pageInfo.pageSizes" :page-size="pageInfo.pageSize" | |||||
layout="total, sizes, prev, pager, next, jumper" :total="pageInfo.total"> | |||||
</el-pagination> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
</template> | |||||
<script> | |||||
import { formatDate } from 'element-ui/lib/utils/date-util'; | |||||
import Clipboard from 'clipboard'; | |||||
export default { | |||||
data() { | |||||
return { | |||||
sharedLink: 'https://git.openi.org.cn/user/sign_up?sharedUser=Openihu', | |||||
sharedUser: 'Openihu', | |||||
loading: false, | |||||
tableData: [], | |||||
pageInfo: { | |||||
curpage: 1, | |||||
pageSize: 10, | |||||
pageSizes: [10], | |||||
total: 0, | |||||
}, | |||||
}; | |||||
}, | |||||
components: {}, | |||||
methods: { | |||||
initCopy() { | |||||
const clipboard = new Clipboard('.__copy_link_btn__', { | |||||
text: () => { | |||||
return this.sharedLink; | |||||
}, | |||||
}) | |||||
clipboard.on('success', (e) => { | |||||
this.$message({ | |||||
type: 'success', | |||||
message: '分享内容已复制到剪切板' | |||||
}); | |||||
}); | |||||
}, | |||||
getTableData() { | |||||
const data = new Array(10).fill(0).map((item, index) => { | |||||
const status = Math.random() > 0.5 ? '1' : '2'; | |||||
return { | |||||
userName: 'userName-' + index + '-' + Math.random().toFixed(2), | |||||
userLink: 'userLink-' + index + '-' + Math.random().toFixed(2), | |||||
status: status, | |||||
statusStr: status == '1' ? '已激活' : '未激活', | |||||
statusColor: status == '1' ? 'rgb(82, 196, 26)' : 'rgb(245, 34, 45)', | |||||
regTime: 'regTime' + index + Math.random().toFixed(2), | |||||
} | |||||
}); | |||||
this.tableData = data; | |||||
return; | |||||
const params = { | |||||
page: this.pageInfo.curpage, | |||||
pagesize: this.pageInfo.pageSize, | |||||
}; | |||||
this.loading = true; | |||||
getResSceneList(params).then(res => { | |||||
this.loading = false; | |||||
res = res.data; | |||||
if (res.Code === 0) { | |||||
const list = res.Data.List; | |||||
const data = list.map((item) => { | |||||
return { | |||||
} | |||||
}); | |||||
this.tableData = data; | |||||
this.pageInfo.total = res.Data.TotalSize; | |||||
} | |||||
}).catch(err => { | |||||
console.log(err); | |||||
this.loading = false; | |||||
}); | |||||
}, | |||||
currentChange(val) { | |||||
this.pageInfo.curpage = val; | |||||
this.getTableData(); | |||||
}, | |||||
}, | |||||
mounted() { | |||||
this.initCopy(); | |||||
this.getTableData(); | |||||
}, | |||||
beforeDestroy() { | |||||
}, | |||||
}; | |||||
</script> | |||||
<style scoped lang="less"> | |||||
.title { | |||||
margin-top: 15px; | |||||
margin-bottom: 15px; | |||||
.title-1 { | |||||
font-weight: 500; | |||||
font-size: 20px; | |||||
color: rgba(16, 16, 16, 1); | |||||
margin-bottom: 10px; | |||||
} | |||||
.title-2 { | |||||
font-weight: 400; | |||||
font-size: 14px; | |||||
color: rgba(136, 136, 136, 1); | |||||
} | |||||
} | |||||
.content-1 { | |||||
margin-bottom: 32px; | |||||
.img-c { | |||||
height: 80px; | |||||
position: relative; | |||||
.img { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
.txt { | |||||
position: absolute; | |||||
width: 100%; | |||||
height: 100%; | |||||
left: 0; | |||||
top: 0; | |||||
line-height: 80px; | |||||
padding-left: 25px; | |||||
font-weight: 500; | |||||
font-size: 24px; | |||||
color: rgb(255, 255, 255); | |||||
} | |||||
} | |||||
.descr { | |||||
font-weight: 300; | |||||
font-size: 16px; | |||||
color: rgb(16, 16, 16); | |||||
padding: 25px; | |||||
border-left: 1px solid rgba(0, 0, 0, 0.1); | |||||
border-right: 1px solid rgba(0, 0, 0, 0.1); | |||||
border-bottom: 1px solid rgba(0, 0, 0, 0.1); | |||||
border-radius: 0px 0px 4px 4px; | |||||
} | |||||
} | |||||
.content-2 { | |||||
display: flex; | |||||
background-color: rgb(228, 242, 255); | |||||
border-color: rgb(228, 242, 255); | |||||
border-width: 1px; | |||||
border-style: solid; | |||||
border-radius: 5px; | |||||
padding: 25px; | |||||
margin-bottom: 32px; | |||||
.txt-c { | |||||
flex: 1; | |||||
font-weight: 300; | |||||
font-size: 16px; | |||||
color: rgb(16, 16, 16); | |||||
span { | |||||
line-height: 24px; | |||||
} | |||||
div { | |||||
margin-bottom: 6px; | |||||
} | |||||
.txt-3 { | |||||
margin-bottom: 15px; | |||||
} | |||||
} | |||||
.qr-code { | |||||
width: 150px; | |||||
display: flex; | |||||
flex-direction: column; | |||||
align-items: end; | |||||
} | |||||
} | |||||
.table-container { | |||||
margin-bottom: 16px; | |||||
/deep/ .el-table__header { | |||||
th { | |||||
background: rgb(245, 245, 246); | |||||
font-size: 12px; | |||||
color: rgb(36, 36, 36); | |||||
} | |||||
} | |||||
/deep/ .el-table__body { | |||||
td { | |||||
font-size: 12px; | |||||
} | |||||
} | |||||
.op-btn { | |||||
cursor: pointer; | |||||
font-size: 12px; | |||||
color: rgb(25, 103, 252); | |||||
margin: 0 5px; | |||||
} | |||||
} | |||||
.center { | |||||
display: flex; | |||||
justify-content: center; | |||||
} | |||||
</style> |
@@ -0,0 +1,17 @@ | |||||
import Vue from 'vue'; | |||||
import ElementUI from 'element-ui'; | |||||
import 'element-ui/lib/theme-chalk/index.css'; | |||||
import localeEn from 'element-ui/lib/locale/lang/en'; | |||||
import localeZh from 'element-ui/lib/locale/lang/zh-CN'; | |||||
import { i18n, lang } from '~/langs'; | |||||
import App from './index.vue'; | |||||
Vue.use(ElementUI, { | |||||
locale: lang === 'zh-CN' ? localeZh : localeEn, | |||||
size: 'small', | |||||
}); | |||||
new Vue({ | |||||
i18n, | |||||
render: (h) => h(App), | |||||
}).$mount('#__vue-root'); |