no message

This commit is contained in:
A1300399510 2024-08-29 18:18:17 +08:00
commit 7e22660737
17 changed files with 13777 additions and 0 deletions

719
01.html Normal file
View File

@ -0,0 +1,719 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="./js/vue.js"></script>
<script src="./js/html2canvas.min.js"></script>
<script src="./js/axios.min.js"></script>
<link rel="stylesheet" href="./css/style.css" />
</head>
<body>
<div id="app">
<div class="tab-box">
<div class="tab">
<div class="item" :class="{'pitch': tab == 'offer'}" @click="cutTab('offer')">Offer</div>
<div class="item" :class="{'pitch': tab == 'summary'}" @click="cutTab('summary')">总结</div>
</div>
</div>
<div class="operate flexacenter">
<input placeholder="请输入" v-model="inputText" @keyup.enter="confirm()" />
<div class="btn" @click="confirm()">确定</div>
<div class="btn" @click="saveimage()">保存图片</div>
</div>
<div class="main">
<template v-if="tab == 'offer' && JSON.stringify(offerinfo) !== '{}'">
<div class="box">
<div class="head">
<div class="left">
<img class="index" src="./img/01.png" />
<img class="arrow" src="./img/arrow-yellow.svg" />
<img class="arrow" src="./img/arrow-light-yellow.svg" />
</div>
<div class="right">
<div class="right-text">Offer详情</div>
</div>
<div class="strip"></div>
</div>
<div class="content offer-details">
<div class="details-header flexacenter">
<img class="icon" :src="offerinfo?.school?.image" />
<div class="school flex1 flexcolumn">
<div class="name">{{ offerinfo?.school?.name }}</div>
<div class="brief">
{{ offerinfo?.school?.enname }}
<template v-if="offerinfo?.school?.countries">| {{ offerinfo?.school?.countries }}</template>
</div>
</div>
</div>
<div class="info">
<div class="item" v-if="offerinfo.degree">
<div class="name">学位</div>
<div class="value">{{ offerinfo.degree }}</div>
</div>
<div class="item" v-if="offerinfo.professional">
<div class="name">专业</div>
<div class="value">{{ offerinfo.professional }}</div>
</div>
<div class="item" v-if="offerinfo.project">
<div class="name">项目</div>
<div class="value">{{ offerinfo.project }}</div>
</div>
<div class="item" v-if="offerinfo.apply_results">
<div class="name">申请结果</div>
<div class="value">{{ offerinfo.apply_results }}</div>
</div>
<div class="item" v-if="offerinfo.semester">
<div class="name">入学</div>
<div class="value">{{ offerinfo.semester }}</div>
</div>
<div class="item">
<div class="name">通知时间</div>
<div class="value">{{ offerinfo.noticedate }}</div>
</div>
<div class="item" v-if="offerinfo?.useperformance?.length">
<div class="name">使用成绩</div>
<div class="value"><template v-for="(it, i) in offerinfo?.useperformance">{{ it.toLocaleUpperCase() }} {{ i + 1 == offerinfo.useperformance.length ? '' : '、' }}</template></div>
</div>
</div>
</div>
</div>
<div class="box">
<div class="head">
<div class="left">
<img class="index" src="./img/02.png" />
<img class="arrow" src="./img/arrow-yellow.svg" />
<img class="arrow" src="./img/arrow-light-yellow.svg" />
</div>
<div class="right">
<div class="right-text">个人背景</div>
</div>
<div class="strip"></div>
</div>
<div class="content bj">
<div class="bj-title flexacenter flexcenter" v-if="personalBgResults.length != 0">
<div>-</div>
考试成绩
<div>-</div>
</div>
<div class="grade-box flexcolumn" v-if="personalBgResults.length != 0">
<div class="grade-item" v-for="(item, index) in personalBgResults" :key="index">
<div class="background-item-title">{{ item.name }}</div>
<div v-if="item.isarr == 'table'" class="offer-background-content flexacenter">
<div class="grade-content-item flex1 flexcolumn" v-for="(it, index) in item.value" :key="index">
<div class="grade-content-key flexcenter">{{ it.name }}</div>
<div class="grade-content-value flexcenter">{{ it.value }}</div>
</div>
</div>
<div v-else-if="item.isarr == 'sub'" class="offer-background-content offer-background-content2 flexcolumn">
<div class="offer-background-content-top flexcenter">{{ item.value.name }}</div>
<div class="offer-background-content-bottom flexacenter">
<div class="offer-background-content-left flexcenter">总分</div>
<div class="offer-background-content-text flex1 flexcenter">{{ item.value.value }}</div>
</div>
</div>
<div v-else-if="item.isarr == 'strip'" class="offer-background-content offer-background-content1 flexacenter">
<div class="offer-background-content-left flexcenter">总分</div>
<div class="offer-background-content-text flex1 flexcenter">{{ item.value }}</div>
</div>
<div v-else class="offer-background-content offer-background-content-text flexcenter">{{ item.value }}</div>
</div>
</div>
<div v-if="personalBgUndergraduate.length != 0" class="background-box">
<div class="bj-title flexacenter flexcenter">
<div>-</div>
本科背景
<div>-</div>
</div>
<div class="background-content offer-background-content flexcolumn">
<div class="offer-background-item flexflex" v-for="(item, index) in personalBgUndergraduate" :key="index">
<div class="offer-background-key">{{ item.name }}</div>
<div class="offer-background-value">{{ item.value }}</div>
</div>
</div>
</div>
<div v-if="personalBgGraduate.length != 0" class="background-box">
<div class="bj-title flexacenter flexcenter">
<div>-</div>
研究生背景
<div>-</div>
</div>
<div class="background-content offer-background-content flexcolumn">
<div class="offer-background-item flexflex" v-for="(item, index) in personalBgGraduate" :key="index">
<div class="offer-background-key">{{ item.name }}</div>
<div class="offer-background-value">{{ item.value }}</div>
</div>
</div>
</div>
<div v-if="personalBgBackgroundList.length != 0" class="background-box">
<div class="bj-title flexacenter flexcenter">
<div>-</div>
软件背景
<div>-</div>
</div>
<div class="grade-item" v-for="(item, index) in personalBgBackgroundList" :key="index">
<div class="background-item-title">{{ item.name }}</div>
<span class="offer-background-content offer-background-content-text flexacenter">{{ item.value }}</span>
</div>
</div>
</div>
</div>
<div class="box">
<div class="head">
<div class="left">
<img class="index" src="./img/03.png" />
<img class="arrow" src="./img/arrow-yellow.svg" />
<img class="arrow" src="./img/arrow-light-yellow.svg" />
</div>
<div class="right">
<div class="right-text">
<div class="right-text">心情与小结</div>
</div>
</div>
<div class="strip"></div>
</div>
<div class="content mood">
<div class="offer-mood-item flexcolumn" v-for="(item, index) in moodmessage" :key="index">
<div class="offer-mood-time" v-if="index != 0">以下内容于 {{ item.timestamp }} 补充</div>
<div class="offer-mood-text">{{ item.message }}</div>
</div>
</div>
</div>
<div class="more flexcenter">
more
<img class="more-icon" src="./img/arrow-round.svg" />
</div>
</template>
<template v-if="tab == 'summary' && JSON.stringify(info) !== '{}'">
<div class="box" v-for="(item,index) in offercollege" :key="index" style="margin-bottom: 30px;">
<div class="head" v-if="index == 0">
<div class="left">
<img class="index" src="./img/01.png" />
<img class="arrow" src="./img/arrow-blue.svg" />
<img class="arrow" src="./img/arrow-light-blue.svg" />
</div>
<div class="right summary">
<div class="right-text">收录{{ offercollege.length }}个Offer</div>
</div>
<div class="strip"></div>
</div>
<div class="head" style="height: 0;" v-else>
<div class="strip"></div>
</div>
<div class="content summaryInclude-item flexcolumn">
<!-- 半圆 -->
<div class="semicircle flexcenter">
{{ index + 1 }}
<img class="semicircle-bj" src="./img/semicircle-icon.svg" />
</div>
<div class="header flexacenter">
<img class="schoolimg" :src="item.schoolimage" />
<div class="schoolname">{{ item.schoolname }}</div>
</div>
<div class="summaryInclude-content flex1 flexcolumn">
<div class="item flexacenter" v-if="item.professional">
<div class="key">专业</div>
<div class="value">{{ item.professional }}</div>
</div>
<div class="item flexacenter" v-if="item.project">
<div class="key">项目</div>
<div class="value">{{ item.project }}</div>
</div>
<div class="item flexacenter">
<div class="key">学位</div>
<div class="value flexacenter" style="white-space: nowrap;">
{{ item.degree }}
<div class="vertical-line"></div>
{{ item.semester }}
<div class="vertical-line"></div>
{{ item.noticedate }}通知
<div class="vertical-line"></div>
<div v-if="item.apply_results" class="normal" :class="'results' + item.apply_results_status">{{ item.apply_results }}</div>
</div>
</div>
<div v-if="item.useperformance.length != 0" class="item flexacenter">
<div class="key">使用成绩</div>
<div class="value">
<template v-for="(it, i) in item.useperformance">{{ it.toLocaleUpperCase() }} {{ i + 1 == item.useperformance.length ? '' : '、' }}</template>
</div>
</div>
<div class="more-btn flexcenter">
详情
<img class="more-btn-icom" src="./img/arrows-gray.png" />
</div>
</div>
</div>
</div>
<div class="box">
<div class="head">
<div class="left">
<img class="index" src="./img/02.png" />
<img class="arrow" src="./img/arrow-blue.svg" />
<img class="arrow" src="./img/arrow-light-blue.svg" />
</div>
<div class="right summary">
<div class="right-text">申请总结</div>
</div>
<div class="strip"></div>
</div>
<div class="content summary-text">{{ info.content }}</div>
</div>
<div class="more flexcenter">
more
<img class="more-icon" src="./img/arrow1-round.svg" />
</div>
</template>
</div>
</div>
<script>
let app = new Vue({
el: "#app",
data: {
tab: "summary", // offer summary
inputText: "", // "XS9W80qnj5G1",
inputId: "", // "XS9W80qnj5G1",
personalBgGraduate: [],
personalBgUndergraduate: [],
personalBackground: {},
personalBgBackgrounddictionaries: [
// 个人背景的软件背景字典
{
key: "scientificresearch",
name: "科研相关",
},
{
key: "recommendationletter",
name: "推荐信",
},
{
key: "workexperience",
name: "实习/工作经历",
},
{
key: "awards",
name: "竞赛/奖项",
},
{
key: "scientificachievement",
name: "科学成就",
},
{
key: "exchangeprogram",
name: "交换项目",
},
{
key: "backgroundpromotionplan",
name: "背景提升计划",
},
{
key: "other",
name: "软件说明/其他",
},
],
personalBgBackgroundList: [], // 处理好的软件背景数据
resultsSubjectsDictionaries: ["toefl", "ielts", "ptea", "gre", "gmat", "lsat", "sub", "duolingo", "otherlanguage"], // 成绩顺序字典
resultsSubjectsGreValue: [
{
key: "verbal",
name: "语文-V",
},
{
key: "quantitative",
name: "数学-Q",
},
{
key: "analyticalwriting",
name: "写作-W",
},
{
key: "total",
name: "总分",
},
],
resultsSubjectsToeflValue: [
{
key: "reading",
name: "阅读-R",
},
{
key: "listening",
name: "听力-L",
},
{
key: "speaking",
name: "口试-S",
},
{
key: "writing",
name: "写作-W",
},
{
key: "total",
name: "总分",
},
],
personalBgResults: [], // 处理好的考试成绩数据
personalBgEducationdictionaries: [
// 个人背景的学校背景字典
{
key: "school",
name: "学校/档次",
},
{
key: "graduationtime",
name: "毕业时间",
},
{
key: "major",
name: "专业",
},
{
key: "majortype",
name: "专业分类1",
},
{
key: "alternativemajors",
name: "专业分类2",
},
{
key: "gpa",
name: "GPA成绩",
},
{
key: "majorrank",
name: "专业排名",
},
],
offerinfo: {},
moodmessage: [],
info: {},
offercollege: [
{
apply_results: "被拒",
apply_results_status: 4,
degree: "MSc",
isschoolfollow: 0,
noticedate: "2024-04-13",
professional: "MAPP",
project: null,
schoolimage: "https://oss.x-php.com/school/,J6BSwE-VfCFgAL5SBaR7ec6NYmSessJaYf5NHJQuwf83NTE2",
schoolname: "Erasmus Mundus",
schooltoken: "jIKIgB_A-3SxUlJWDspysFCbQTsh0S4cNT500hPb_ePImIQab0sBJTswMzU0",
schoolurl: "https://schools.gter.net/details/782",
semester: "24Fall",
uniqid: "eqnXK9j88GLD",
url: "https://offer.gter.net/details/eqnXK9j88GLD",
useperformance: ["ielts"],
},
{
apply_results: "Offer",
apply_results_status: 1,
degree: "MSc",
isschoolfollow: 0,
noticedate: "2024-08-02",
professional: "Computational Social Science",
project: null,
schoolimage: "https://oss.x-php.com/school/J6BSwE-VfCFvD7xSBaR7ec6NYmSe5sIMMvlNHJQuwf83NTE2",
schoolname: "香港中文大学(深圳)",
schooltoken: "LZSwfw47IwH4aIElgLWJrg3rzAIdPuZlvjoNh7qmH_Oxe_ChgaEZJ2MxNjJk",
schoolurl: "https://schools.gter.net/details/870",
semester: "24Fall",
uniqid: "f0ifiS9Ce5iy",
url: "https://offer.gter.net/details/f0ifiS9Ce5iy",
useperformance: ["ielts"],
},
],
},
mounted() {
axios.defaults.headers.common["Authorization"] = "813blr43ue2hhf2kjnlfibyy9swlxm2x"
// this.getPersonalBackground()
},
methods: {
// 获取 offer 详情
getOfferDetails() {
axios
.post("https://offer.gter.net/api/details", {
uniqid: this.inputId,
})
.then(res => {
res = res.data
if (res.code != 200) {
alert(res.message)
return
}
const data = res.data
this.offerinfo = data.offerinfo
this.moodmessage = data.moodmessage
this.getPersonalBackground(data.backgroundid)
})
},
// 获取总结详情
getSummaryDetails() {
axios
.post("https://offer.gter.net/api/details/summary", {
token: this.inputId,
})
.then(res => {
res = res.data
const data = res.data
this.offercollege = data.offercollege
this.info = data.info
})
},
getPersonalBackground(backgroundid) {
axios
.get("https://offer.gter.net/api/details/background", {
params: {
backgroundid,
},
})
.then(res => {
res = res.data
this.personalBackground = { ...res.data }
this.handlelSoftwareBackground()
this.handlelTsestScore()
this.handleEducationdictionaries()
})
},
// 处理个人背景-考试成绩
handlelTsestScore() {
let achievement = this.personalBackground.achievement
let resultsSubjectsDictionaries = this.resultsSubjectsDictionaries
let resultsSubjectsGreValue = this.resultsSubjectsGreValue
let resultsSubjectsToeflValue = this.resultsSubjectsToeflValue
let personalBgResults = []
resultsSubjectsDictionaries.forEach((element, index) => {
let name = ""
let value
let isarr = ""
if (["toefl", "ielts"].includes(element)) {
name = element.toLocaleUpperCase()
value = []
resultsSubjectsToeflValue.forEach(el => {
let value1 = achievement && achievement[element] && achievement[element][el.key]
if (value1 == undefined) return
isarr = "table"
value.push({
name: el.name,
value: value1,
})
})
} else if (["gre", "gmat"].includes(element)) {
name = element.toLocaleUpperCase()
value = []
resultsSubjectsGreValue.forEach(el => {
let value1 = achievement[element] && achievement[element][el.key]
if (value1 == undefined) return
isarr = "table"
value.push({
name: el.name,
value: value1,
})
})
} else if (element == "ptea") {
name = "PTE A"
value = achievement[element] && achievement[element].total
isarr = "strip"
} else if (element == "lsat") {
name = element.toLocaleUpperCase()
value = achievement[element]
isarr = "strip"
} else if (element == "sub") {
name = element.toLocaleUpperCase()
isarr = "sub"
value = {
name: achievement[element] && achievement[element].profession,
value: achievement[element] && achievement[element].total,
}
} else if (element == "duolingo") {
name = "多邻国"
value = achievement[element]
isarr = "strip"
} else if (element == "otherlanguage") {
if (achievement[element] && !achievement[element].trim()) return
name = "其他语言/暂无"
value = achievement[element]
isarr = "text"
}
if (name == "" || value == undefined || value.length == 0) return
if (name == "SUB" && value.name == undefined) return
personalBgResults.push({
name,
value,
isarr,
})
})
this.personalBgResults = personalBgResults
},
// 处理个人背景-软件背景
handlelSoftwareBackground() {
let background = this.personalBackground.background
let personalBgBackgrounddictionaries = this.personalBgBackgrounddictionaries
let personalBgBackgroundList = []
personalBgBackgrounddictionaries.forEach((element, index) => {
let value = (background && background[element.key]) || ""
value = value.trim()
if (value != null && value != undefined && value != "") {
value = value.replaceAll(/\r\n|\n|\r/g, "<br />")
value = value.replaceAll("<br /><br />", "\n")
value = value.replaceAll("<br/><br />", "\n")
value = value.replaceAll("<br /><br/>", "\n")
while (value.indexOf("<br/>") != -1 || value.indexOf("<br />") != -1 || value.indexOf("<br>") != -1) {
value = value.replaceAll("<br/>", "\n")
value = value.replaceAll("<br />", "\n")
value = value.replaceAll("<br>", "\n")
}
personalBgBackgroundList.push({
name: element.name,
value,
})
}
})
this.personalBgBackgroundList = personalBgBackgroundList
},
// 处理个人背景- 本科背景和研究生背景
handleEducationdictionaries() {
let personalBgUndergraduate = [] // 本科
let personalBgGraduate = [] // 研究生
let bjUndergraduate = this.personalBackground.undergraduate
let graduate = this.personalBackground.graduate
this.personalBgEducationdictionaries.forEach((element, index) => {
let undergraduateValue = bjUndergraduate[element.key]
let name = element.name
if (element.key == "gpa") {
undergraduateValue = []
if (`${bjUndergraduate["gpascore"]}` || `${bjUndergraduate["gpawes"]}` || `${bjUndergraduate["gpaotherscore"]}`) {
undergraduateValue = []
if (bjUndergraduate["gpascore"]) undergraduateValue.push(`${bjUndergraduate["gpascore"]}/100 百分制`)
if (bjUndergraduate["gpaoriginaldata"]) undergraduateValue.push(`${bjUndergraduate["gpaoriginaldata"]}`)
else if (bjUndergraduate["gpawes"]) undergraduateValue.push(`${bjUndergraduate["gpawes"]}/4 WES算法`)
if (bjUndergraduate["gpaotherscore"]) undergraduateValue.push(`${bjUndergraduate["gpaotherscore"]}/${bjUndergraduate["gpaotherfullscore"]} 其他算法`)
if (undergraduateValue.length > 0) {
undergraduateValue = undergraduateValue.join("、")
}
}
}
if ((element.key == "majortype" || element.key == "alternativemajors") && undergraduateValue == "其他") undergraduateValue = bjUndergraduate["majorother"]
if (undergraduateValue != undefined && undergraduateValue.length != 0) {
personalBgUndergraduate.push({
key: element.key,
name,
value: undergraduateValue,
})
}
})
this.personalBgEducationdictionaries.forEach((element, index) => {
let graduateValue = graduate[element.key]
let name = element.name
if (element.key == "gpa") {
if (`${graduate["gpascore"]}` || `${graduate["gpawes"]}` || `${graduate["gpaotherscore"]}`) {
graduateValue = []
if (graduate["gpascore"]) graduateValue.push(`${graduate["gpascore"]}/100 百分制`)
if (graduate["gpaoriginaldata"]) graduateValue.push(`${graduate["gpaoriginaldata"]}`)
else if (graduate["gpawes"]) graduateValue.push(`${graduate["gpawes"]}/4 WES算法`)
if (graduate["gpaotherscore"]) graduateValue.push(`${graduate["gpaotherscore"]}/${graduate["gpaotherfullscore"]} 其他算法`)
if (graduateValue.length > 0) {
graduateValue = graduateValue.join("、")
}
}
}
if ((element.key == "majortype" || element.key == "alternativemajors") && graduateValue == "其他") graduateValue = graduate["majorother"]
if (graduateValue != undefined && graduateValue.length != 0) {
personalBgGraduate.push({
key: element.key,
name,
value: graduateValue,
})
}
})
this.personalBgUndergraduate = personalBgUndergraduate
this.personalBgGraduate = personalBgGraduate
},
// 切换类型
cutTab(key) {
this.offerinfo = {}
this.info = {}
if (key == this.tab) return
this.tab = key
},
// 确定
confirm() {
if (!this.inputText) return
if (this.inputText.indexOf("http") != -1) this.inputId = this.inputText.substring(this.inputText.lastIndexOf("/") + 1)
else this.inputId = this.inputText
if (this.tab == "offer") this.getOfferDetails()
else this.getSummaryDetails()
},
// 保存图片
saveimage() {
html2canvas(document.querySelector(".main")).then(canvas => {
// 你现在可以对canvas做任何事情比如将其添加到文档中
// document.body.appendChild(canvas)
// 或者你可以将canvas转换为图片数据
var img = canvas.toDataURL("image/png")
// 创建一个新的图片元素
var newImg = document.createElement("img")
newImg.src = img
// 将新图片添加到文档中
// document.body.appendChild(newImg)
// 创建一个链接元素用于下载
var downloadLink = document.createElement("a")
downloadLink.href = img
// 为下载的文件命名
downloadLink.download = this.inputId + ".png"
// 触发下载
downloadLink.click()
})
},
},
})
</script>
</body>
</html>

441
css/style.css Normal file
View File

@ -0,0 +1,441 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
}
.flexflex {
display: flex;
}
.flexcenter {
display: flex;
justify-content: center;
align-items: center;
}
.flexjcenter {
display: flex;
justify-content: center;
}
.flexacenter {
display: flex;
align-items: center;
}
.flex1 {
flex: 1;
}
.flexcolumn {
display: flex;
flex-direction: column;
}
#app {
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
}
.tab-box {
width: 490px;
display: flex;
align-items: center;
margin-top: 20px;
margin-bottom: 20px;
}
.tab-box .tab {
width: 150px;
height: 40px;
display: flex;
align-items: center;
margin: 0 auto;
border: 1px solid #eee;
border-radius: 20px;
}
.tab-box .tab .item {
flex: 1;
border-radius: 20px;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.tab-box .tab .item.pitch {
background-color: #f7a60a;
color: #fff;
}
.operate {
width: 490px;
display: flex;
justify-content: center;
}
.operate input {
flex: 1;
height: 40px;
border: 1px solid #eee;
border-radius: 20px;
padding: 10px;
}
.operate .btn {
padding: 0 20px;
height: 40px;
border: 1px solid #eee;
border-radius: 20px;
margin-left: 20px;
text-align: center;
line-height: 40px;
cursor: pointer;
}
.main {
width: 490px;
padding: 20px 20px 0;
}
.box {
position: relative;
z-index: 1;
margin-bottom: 50px;
}
.box .head {
display: flex;
justify-content: space-between;
align-items: center;
height: 77px;
}
.box .head .strip {
position: absolute;
top: 0;
right: 0;
height: 100%;
width: 232px;
background: linear-gradient(180deg, #5e47ef 0%, #9497fe 100%);
border-radius: 20px;
z-index: -1;
}
.box .head .left {
display: flex;
align-items: center;
}
.box .head .left .index {
width: 56px;
height: 65px;
margin-right: 12px;
}
.box .head .left .arrow {
display: flex;
}
.box .head .right {
font-family: "AlibabaPuHuiTiB", "Alibaba PuHuiTi Bold", "Alibaba PuHuiTi Heavy", "Alibaba PuHuiTi", sans-serif;
font-weight: 700;
font-style: normal;
font-size: 24px;
color: #ffffff;
text-align: center;
width: 232px;
height: 77px;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.box .head .right .right-text {
position: relative;
z-index: 1;
}
.box .head .right .right-text::after {
content: "";
width: 100%;
height: 12px;
background: linear-gradient(180deg, #f7a60a 0%, #ffe0a3 100%);
border: none;
border-radius: 150px;
display: block;
position: absolute;
bottom: 0;
z-index: -1;
}
.box .head .right.summary .right-text::after {
background: linear-gradient(180deg, #66c639 0%, #c7ed76 100%);
}
.box .content {
background: linear-gradient(269.73350992deg, #fcfeff 40%, #f6f6ff 100%);
border: 0.0133rem solid #ebebeb;
border-radius: 20px;
margin-right: 20px;
width: 430px;
}
.box .content.offer-details .details-header {
padding: 26px 20px 22px;
display: flex;
align-items: flex-start;
border-bottom: 1px solid #f2f2f2;
}
.box .content.offer-details .details-header .icon {
width: 36px;
height: 36px;
margin-right: 12px;
}
.box .content.offer-details .details-header .school .name {
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-size: 24px;
color: #000000;
margin-bottom: 8px;
}
.box .content.offer-details .details-header .school .brief {
font-size: 15px;
color: #7f7f7f;
}
.box .content.offer-details .info {
padding: 22px 0 24px;
}
.box .content.offer-details .info .item {
display: flex;
align-items: center;
}
.box .content.offer-details .info .item:not(:last-of-type) {
margin-bottom: 20px;
}
.box .content.offer-details .info .item .name {
font-size: 16px;
color: #7f7f7f;
width: 105px;
padding-right: 20px;
text-align: right;
}
.box .content.offer-details .info .item .value {
flex: 1;
font-size: 18px;
color: #333333;
}
.box .content.bj {
padding: 0 20px 27px;
}
.box .content.bj .bj-title {
color: #555555;
font-size: 16px;
margin: 0 auto 24px;
padding-top: 30px;
}
.box .content.bj .bj-title div {
margin: 0 6px;
color: #d7d7d7;
}
.box .content.bj .background-item-title {
font-weight: 700;
font-size: 16px;
color: #000000;
margin-bottom: 16px;
}
.box .content.bj .offer-background-content {
border-radius: 15px;
background-color: #f6f6f6;
border: 1px solid #d7d7d7;
}
.box .content.bj .offer-background-content .grade-content-item {
overflow: hidden;
}
.box .content.bj .offer-background-content .grade-content-item:not(:last-of-type) .grade-content-key,
.box .content.bj .offer-background-content .grade-content-item:not(:last-of-type) .grade-content-value {
border-right: 1px solid #ebebeb;
}
.box .content.bj .offer-background-content.offer-background-content-text {
padding: 24px 17px;
word-break: break-word;
font-size: 18px;
color: #333333;
}
.box .content.bj .offer-background-content.offer-background-content1 {
height: 56px;
}
.box .content.bj .offer-background-content.offer-background-content1 .offer-background-content-left {
width: 116px;
height: 100%;
border-right: 1px solid #ebebeb;
}
.box .content.bj .offer-background-content.offer-background-content1 .offer-background-content-text {
color: #50e3c2;
}
.box .content.bj .offer-background-content.offer-background-content2 .offer-background-content-top {
border-bottom: 1px solid #ebebeb;
height: 42px;
width: 100%;
color: #555555;
}
.box .content.bj .offer-background-content.offer-background-content2 .offer-background-content-bottom .offer-background-content-left {
height: 42px;
width: 174px;
border-right: 1px solid #ebebeb;
}
.box .content.bj .offer-background-content.offer-background-content2 .offer-background-content-bottom .offer-background-content-text {
height: 42px;
color: #50e3c2;
}
.box .content.bj .background-content {
padding: 26px 0;
}
.box .content.bj .grade-content-key {
font-size: 14px;
color: #555555;
height: 39px;
border-bottom: 1px solid #ebebeb;
}
.box .content.bj .grade-content-value {
height: 42px;
font-size: 16px;
color: #000000;
text-align: center;
}
.box .content.bj .offer-background-item {
align-items: flex-start;
}
.box .content.bj .offer-background-item:not(:last-of-type) {
margin-bottom: 21px;
}
.box .content.bj .offer-background-item .offer-background-key {
width: 98px;
color: #7f7f7f;
font-size: 16px;
margin-right: 16px;
text-align: right;
}
.box .content.bj .offer-background-item .offer-background-value {
color: #333333;
font-size: 18px;
padding-right: 25px;
word-break: break-word;
flex: 1;
}
.box .content.bj .grade-item:not(:last-of-type) {
margin-bottom: 24px;
}
.box .content.mood {
padding: 16px 20px;
}
.box .content.mood .offer-mood-text {
color: #555555;
word-break: break-word;
white-space: break-spaces;
font-size: 18px;
line-height: 36px;
}
.box .content.mood .offer-mood-time {
margin: 20px 0;
font-size: 16px;
color: #aaaaaa;
}
.box .content.summaryInclude-item {
position: relative;
margin-bottom: 30px;
}
.box .content.summaryInclude-item .semicircle {
width: 48px;
height: 24px;
line-height: 24px;
position: absolute;
left: 50%;
transform: translate(-50%);
z-index: 1;
font-size: 14px;
color: #ffffff;
}
.box .content.summaryInclude-item .semicircle .semicircle-bj {
width: 48px;
height: 24px;
position: absolute;
top: 0;
left: 0;
transform: rotate(180deg);
z-index: -1;
}
.box .content.summaryInclude-item .header {
padding: 44px 0 20px;
margin: 0 20px;
border-bottom: 1px solid #f2f2f2;
}
.box .content.summaryInclude-item .header .schoolimg {
width: 36px;
height: 36px;
margin-right: 12px;
}
.box .content.summaryInclude-item .header .schoolname {
font-weight: 400;
font-style: normal;
font-size: 24px;
color: #000000;
}
.box .content.summaryInclude-item .summaryInclude-content {
padding: 25px 20px 0;
}
.box .content.summaryInclude-item .summaryInclude-content .item {
font-size: 16px;
margin-bottom: 17px;
align-items: flex-start;
}
.box .content.summaryInclude-item .summaryInclude-content .item .key {
color: #7f7f7f;
margin-right: 12px;
white-space: nowrap;
}
.box .content.summaryInclude-item .summaryInclude-content .item .value {
color: #333333;
word-break: break-word;
font-size: 18px;
}
.box .content.summaryInclude-item .summaryInclude-content .item .vertical-line {
background-color: #d7d7d7;
width: 1px;
height: 17px;
margin: 0 8px;
}
.box .content.summaryInclude-item .summaryInclude-content .item .normal {
color: #72db86;
height: 22px;
line-height: 22px;
padding: 0 7px;
border-radius: 37px;
font-size: 16px;
background-color: #f6f6f6;
}
.box .content.summaryInclude-item .summaryInclude-content .item .normal.results2 {
color: #a7c42e !important;
}
.box .content.summaryInclude-item .summaryInclude-content .item .normal.results3 {
color: #62b1ff !important;
}
.box .content.summaryInclude-item .summaryInclude-content .item .normal.results4 {
color: #f95d5d !important;
}
.box .content.summaryInclude-item .summaryInclude-content .item .normal.results5 {
color: #f59a23 !important;
}
.box .content.summaryInclude-item .summaryInclude-content .item .normal.results6 {
color: #8080ff !important;
}
.box .content.summaryInclude-item .summaryInclude-content .more-btn {
font-size: 16px;
color: #aaaaaa;
text-align: center;
line-height: 24px;
padding-bottom: 30px;
}
.box .content.summaryInclude-item .summaryInclude-content .more-btn .more-btn-icom {
margin-left: 6px;
width: 16px;
height: 16px;
transform: rotate(270deg);
}
.box .content.summary-text {
font-size: 18px;
color: #555555;
line-height: 36px;
padding: 16px 20px;
word-break: keep-all;
word-wrap: break-word;
}
.more {
font-weight: 650;
font-size: 20px;
color: #000000;
padding-bottom: 45px;
}
.more .more-icon {
width: 20px;
height: 20px;
margin-left: 6px;
}

514
css/style.less Normal file
View File

@ -0,0 +1,514 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
}
.flexflex {
display: flex;
}
.flexcenter {
display: flex;
justify-content: center;
align-items: center;
}
.flexjcenter {
display: flex;
justify-content: center;
}
.flexacenter {
display: flex;
align-items: center;
}
.flex1 {
flex: 1;
}
.flexcolumn {
display: flex;
flex-direction: column;
}
#app {
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
}
.tab-box {
width: 490px;
display: flex;
align-items: center;
margin-top: 20px;
margin-bottom: 20px;
.tab {
width: 150px;
height: 40px;
display: flex;
align-items: center;
margin: 0 auto;
border: 1px solid #eee;
border-radius: 20px;
.item {
flex: 1;
border-radius: 20px;
text-align: center;
line-height: 40px;
cursor: pointer;
&.pitch {
background-color: #f7a60a;
color: #fff;
}
}
}
}
.operate {
width: 490px;
display: flex;
justify-content: center;
input {
flex: 1;
height: 40px;
border: 1px solid #eee;
border-radius: 20px;
padding: 10px;
}
.btn {
padding: 0 20px;
height: 40px;
border: 1px solid #eee;
border-radius: 20px;
margin-left: 20px;
text-align: center;
line-height: 40px;
cursor: pointer;
}
}
.main {
width: 490px;
padding: 20px 20px 0;
}
.box {
position: relative;
z-index: 1;
margin-bottom: 50px;
.head {
display: flex;
justify-content: space-between;
align-items: center;
height: 77px;
.strip {
position: absolute;
top: 0;
right: 0;
height: 100%;
width: 232px;
background: linear-gradient(180deg, rgba(94, 71, 239, 1) 0%, rgba(148, 151, 254, 1) 100%);
border-radius: 20px;
z-index: -1;
}
.left {
display: flex;
align-items: center;
.index {
width: 56px;
height: 65px;
margin-right: 12px;
}
.arrow {
display: flex;
}
}
.right {
font-family: "AlibabaPuHuiTiB", "Alibaba PuHuiTi Bold", "Alibaba PuHuiTi Heavy", "Alibaba PuHuiTi", sans-serif;
font-weight: 700;
font-style: normal;
font-size: 24px;
color: #ffffff;
text-align: center;
width: 232px;
height: 77px;
position: relative;
display: flex;
justify-content: center;
align-items: center;
.right-text {
position: relative;
z-index: 1;
&::after {
content: "";
width: 100%;
height: 12px;
background: linear-gradient(180deg, rgba(247, 166, 10, 1) 0%, rgba(255, 224, 163, 1) 100%);
border: none;
border-radius: 150px;
display: block;
position: absolute;
bottom: 0;
z-index: -1;
}
}
&.summary {
.right-text {
&::after {
background: linear-gradient(180deg, rgba(102, 198, 57, 1) 0%, rgba(199, 237, 118, 1) 100%);
}
}
}
}
}
.content {
background: linear-gradient(269.733509923942deg, rgba(252, 254, 255, 1) 40%, rgba(246, 246, 255, 1) 100%);
border: 0.0133rem solid rgba(235, 235, 235, 1);
border-radius: 20px;
margin-right: 20px;
width: 430px;
&.offer-details {
.details-header {
padding: 26px 20px 22px;
display: flex;
align-items: flex-start;
border-bottom: 1px solid #f2f2f2;
.icon {
width: 36px;
height: 36px;
margin-right: 12px;
}
.school {
.name {
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-size: 24px;
color: #000000;
margin-bottom: 8px;
}
.brief {
font-size: 15px;
color: #7f7f7f;
}
}
}
.info {
padding: 22px 0 24px;
.item {
display: flex;
align-items: center;
&:not(:last-of-type) {
margin-bottom: 20px;
}
.name {
font-size: 16px;
color: #7f7f7f;
width: 105px;
padding-right: 20px;
text-align: right;
}
.value {
flex: 1;
font-size: 18px;
color: #333333;
}
}
}
}
&.bj {
padding: 0 20px 27px;
.bj-title {
color: #555555;
font-size: 16px;
margin: 0 auto 24px;
padding-top: 30px;
div {
margin: 0 6px;
color: #d7d7d7;
}
}
.grade-box {
}
.background-item-title {
font-weight: 700;
font-size: 16px;
color: #000000;
margin-bottom: 16px;
}
.offer-background-content {
border-radius: 15px;
background-color: #f6f6f6;
border: 1px solid #d7d7d7;
.grade-content-item {
overflow: hidden;
&:not(:last-of-type) {
.grade-content-key,
.grade-content-value {
border-right: 1px solid #ebebeb;
}
}
}
&.offer-background-content-text {
padding: 24px 17px;
word-break: break-word;
font-size: 18px;
color: #333333;
}
&.offer-background-content1 {
height: 56px;
.offer-background-content-left {
width: 116px;
height: 100%;
border-right: 1px solid #ebebeb;
}
.offer-background-content-text {
color: #50e3c2;
}
}
&.offer-background-content2 {
.offer-background-content-top {
border-bottom: 1px solid #ebebeb;
height: 42px;
width: 100%;
color: #555555;
}
.offer-background-content-bottom {
.offer-background-content-left {
height: 42px;
width: 174px;
border-right: 1px solid #ebebeb;
}
.offer-background-content-text {
height: 42px;
color: #50e3c2;
}
}
}
}
.background-content {
padding: 26px 0;
}
.grade-content-key {
font-size: 14px;
color: #555555;
height: 39px;
border-bottom: 1px solid #ebebeb;
}
.grade-content-value {
height: 42px;
font-size: 16px;
color: #000000;
text-align: center;
}
.offer-background-item {
align-items: flex-start;
&:not(:last-of-type) {
margin-bottom: 21px;
}
.offer-background-key {
width: 98px;
color: #7f7f7f;
font-size: 16px;
margin-right: 16px;
text-align: right;
}
.offer-background-value {
color: #333333;
font-size: 18px;
padding-right: 25px;
word-break: break-word;
flex: 1;
}
}
.grade-item:not(:last-of-type) {
margin-bottom: 24px;
}
}
&.mood {
padding: 16px 20px;
.offer-mood-text {
color: #555555;
word-break: break-word;
white-space: break-spaces;
font-size: 18px;
line-height: 36px;
}
.offer-mood-time {
margin: 20px 0;
font-size: 16px;
color: #aaaaaa;
}
}
&.summaryInclude-item {
position: relative;
margin-bottom: 30px;
.semicircle {
width: 48px;
height: 24px;
line-height: 24px;
position: absolute;
left: 50%;
transform: translate(-50%);
z-index: 1;
font-size: 14px;
color: #ffffff;
.semicircle-bj {
width: 48px;
height: 24px;
position: absolute;
top: 0;
left: 0;
transform: rotate(180deg);
z-index: -1;
}
}
.header {
padding: 44px 0 20px;
margin: 0 20px;
border-bottom: 1px solid #f2f2f2;
.schoolimg {
width: 36px;
height: 36px;
margin-right: 12px;
}
.schoolname {
font-weight: 400;
font-style: normal;
font-size: 24px;
color: #000000;
}
}
.summaryInclude-content {
padding: 25px 20px 0;
.item {
font-size: 16px;
margin-bottom: 17px;
align-items: flex-start;
.key {
color: #7f7f7f;
margin-right: 12px;
white-space: nowrap;
}
.value {
color: #333333;
word-break: break-word;
font-size: 18px;
}
.vertical-line {
background-color: #d7d7d7;
width: 1px;
height: 17px;
margin: 0 8px;
}
.normal {
color: #72db86;
height: 22px;
line-height: 22px;
padding: 0 7px;
border-radius: 37px;
font-size: 16px;
background-color: rgba(246, 246, 246, 1);
&.results2 {
color: #a7c42e !important;
}
&.results3 {
color: #62b1ff !important;
}
&.results4 {
color: #f95d5d !important;
}
&.results5 {
color: #f59a23 !important;
}
&.results6 {
color: #8080ff !important;
}
}
}
.more-btn {
font-size: 16px;
color: #aaaaaa;
text-align: center;
line-height: 24px;
.more-btn-icom {
margin-left: 6px;
width: 16px;
height: 16px;
transform: rotate(270deg);
}
padding-bottom: 30px;
}
}
}
&.summary-text {
font-size: 18px;
color: #555555;
line-height: 36px;
padding: 16px 20px;
word-break: keep-all;
word-wrap: break-word;
}
}
}
.more {
font-weight: 650;
font-size: 20px;
color: #000000;
padding-bottom: 45px;
.more-icon {
width: 20px;
height: 20px;
margin-left: 6px;
}
}

BIN
img/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
img/02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
img/03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

6
img/arrow-blue.svg Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="11px" height="20px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -168 -130 )">
<path d="M 10.6371527777778 9.12109375 C 10.8790509259259 9.36848958333333 11 9.66145833333333 11 10 C 11 10.3385416666667 10.8790509259259 10.6315104166667 10.6371527777778 10.87890625 L 2.08159722222222 19.62890625 C 1.83969907407407 19.8763020833333 1.55324074074074 20 1.22222222222222 20 C 0.891203703703704 20 0.60474537037037 19.8763020833333 0.362847222222222 19.62890625 C 0.120949074074074 19.3815104166667 0 19.0885416666667 0 18.75 L 0 1.25 C 0 0.91145833333333 0.120949074074074 0.61848958333333 0.362847222222222 0.37109375 C 0.60474537037037 0.123697916666665 0.891203703703704 0 1.22222222222222 0 C 1.55324074074074 0 1.83969907407407 0.123697916666665 2.08159722222222 0.37109375 L 10.6371527777778 9.12109375 Z " fill-rule="nonzero" fill="#0034df" stroke="none" transform="matrix(1 0 0 1 168 130 )" />
</g>
</svg>

6
img/arrow-light-blue.svg Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="11px" height="20px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -177 -130 )">
<path d="M 10.6371527777778 9.12109375 C 10.8790509259259 9.36848958333333 11 9.66145833333333 11 10 C 11 10.3385416666667 10.8790509259259 10.6315104166667 10.6371527777778 10.87890625 L 2.08159722222222 19.62890625 C 1.83969907407407 19.8763020833333 1.55324074074074 20 1.22222222222222 20 C 0.891203703703704 20 0.60474537037037 19.8763020833333 0.362847222222222 19.62890625 C 0.120949074074074 19.3815104166667 0 19.0885416666667 0 18.75 L 0 1.25 C 0 0.91145833333333 0.120949074074074 0.61848958333333 0.362847222222222 0.37109375 C 0.60474537037037 0.123697916666665 0.891203703703704 0 1.22222222222222 0 C 1.55324074074074 0 1.83969907407407 0.123697916666665 2.08159722222222 0.37109375 L 10.6371527777778 9.12109375 Z " fill-rule="nonzero" fill="#b1c9fc" stroke="none" transform="matrix(1 0 0 1 177 130 )" />
</g>
</svg>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="11px" height="20px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 -9 0 )">
<path d="M 10.6371527777778 9.12109375 C 10.8790509259259 9.36848958333333 11 9.66145833333333 11 10 C 11 10.3385416666667 10.8790509259259 10.6315104166667 10.6371527777778 10.87890625 L 2.08159722222222 19.62890625 C 1.83969907407407 19.8763020833333 1.55324074074074 20 1.22222222222222 20 C 0.891203703703704 20 0.60474537037037 19.8763020833333 0.362847222222222 19.62890625 C 0.120949074074074 19.3815104166667 0 19.0885416666667 0 18.75 L 0 1.25 C 0 0.91145833333333 0.120949074074074 0.61848958333333 0.362847222222222 0.37109375 C 0.60474537037037 0.123697916666665 0.891203703703704 0 1.22222222222222 0 C 1.55324074074074 0 1.83969907407407 0.123697916666665 2.08159722222222 0.37109375 L 10.6371527777778 9.12109375 Z " fill-rule="nonzero" fill="#ffe0a3" stroke="none" transform="matrix(1 0 0 1 9 0 )" />
</g>
</svg>

12
img/arrow-round.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="20px" height="20px" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="10" y1="0" x2="10" y2="20" id="LinearGradient67">
<stop id="Stop68" stop-color="#c280ff" offset="0" />
<stop id="Stop69" stop-color="#8080ff" offset="1" />
</linearGradient>
</defs>
<g transform="matrix(1 0 0 1 -343 -2453 )">
<path d="M 8.75 16.7447916666667 C 8.97569444444444 16.7447916666667 9.17100694444444 16.6623263888889 9.3359375 16.4973958333333 L 15.2473958333333 10.5859375 C 15.4123263888889 10.4210069444444 15.4947916666667 10.2256944444444 15.4947916666667 10 C 15.4947916666667 9.77430555555556 15.4123263888889 9.57899305555556 15.2473958333333 9.4140625 L 9.3359375 3.50260416666667 C 9.17100694444444 3.33767361111111 8.97569444444444 3.25520833333333 8.75 3.25520833333333 C 8.52430555555556 3.25520833333333 8.32899305555556 3.33767361111111 8.1640625 3.50260416666667 L 6.8359375 4.83072916666667 C 6.67100694444445 4.99565972222222 6.58854166666667 5.19097222222222 6.58854166666667 5.41666666666667 C 6.58854166666667 5.64236111111111 6.67100694444445 5.83767361111111 6.8359375 6.00260416666667 L 10.8333333333333 10 L 6.8359375 13.9973958333333 C 6.67100694444445 14.1623263888889 6.58854166666667 14.3576388888889 6.58854166666667 14.5833333333333 C 6.58854166666667 14.8090277777778 6.67100694444445 15.0043402777778 6.8359375 15.1692708333333 L 8.1640625 16.4973958333333 C 8.32899305555556 16.6623263888889 8.52430555555556 16.7447916666667 8.75 16.7447916666667 Z M 18.6588541666667 4.98046875 C 19.5529513888889 6.51258680555555 20 8.18576388888889 20 10 C 20 11.8142361111111 19.5529513888889 13.4874131944444 18.6588541666667 15.01953125 C 17.7647569444444 16.5516493055556 16.5516493055556 17.7647569444444 15.01953125 18.6588541666667 C 13.4874131944444 19.5529513888889 11.8142361111111 20 10 20 C 8.18576388888889 20 6.51258680555556 19.5529513888889 4.98046875 18.6588541666667 C 3.44835069444444 17.7647569444444 2.23524305555556 16.5516493055556 1.34114583333333 15.01953125 C 0.447048611111111 13.4874131944444 0 11.8142361111111 0 10 C 0 8.18576388888889 0.447048611111111 6.51258680555555 1.34114583333333 4.98046875 C 2.23524305555556 3.44835069444444 3.44835069444444 2.23524305555555 4.98046875 1.34114583333333 C 6.51258680555556 0.447048611111109 8.18576388888889 0 10 0 C 11.8142361111111 0 13.4874131944444 0.447048611111109 15.01953125 1.34114583333333 C 16.5516493055556 2.23524305555555 17.7647569444444 3.44835069444444 18.6588541666667 4.98046875 Z " fill-rule="nonzero" fill="url(#LinearGradient67)" stroke="none" transform="matrix(1 0 0 1 343 2453 )" />
</g>
</svg>

6
img/arrow-yellow.svg Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="11px" height="20px" xmlns="http://www.w3.org/2000/svg">
<g>
<path d="M 10.6371527777778 9.12109375 C 10.8790509259259 9.36848958333333 11 9.66145833333333 11 10 C 11 10.3385416666667 10.8790509259259 10.6315104166667 10.6371527777778 10.87890625 L 2.08159722222222 19.62890625 C 1.83969907407407 19.8763020833333 1.55324074074074 20 1.22222222222222 20 C 0.891203703703704 20 0.60474537037037 19.8763020833333 0.362847222222222 19.62890625 C 0.120949074074074 19.3815104166667 0 19.0885416666667 0 18.75 L 0 1.25 C 0 0.91145833333333 0.120949074074074 0.61848958333333 0.362847222222222 0.37109375 C 0.60474537037037 0.123697916666665 0.891203703703704 0 1.22222222222222 0 C 1.55324074074074 0 1.83969907407407 0.123697916666665 2.08159722222222 0.37109375 L 10.6371527777778 9.12109375 Z " fill-rule="nonzero" fill="#f7a60a" stroke="none" />
</g>
</svg>

12
img/arrow1-round.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="20px" height="20px" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="10" y1="0" x2="10" y2="20" id="LinearGradient82">
<stop id="Stop83" stop-color="#66c639" offset="0" />
<stop id="Stop84" stop-color="#c7ed76" offset="1" />
</linearGradient>
</defs>
<g transform="matrix(1 0 0 1 -1262 -1936 )">
<path d="M 8.75 16.7447916666667 C 8.97569444444444 16.7447916666667 9.17100694444444 16.6623263888889 9.3359375 16.4973958333333 L 15.2473958333333 10.5859375 C 15.4123263888889 10.4210069444444 15.4947916666667 10.2256944444444 15.4947916666667 10 C 15.4947916666667 9.77430555555556 15.4123263888889 9.57899305555556 15.2473958333333 9.4140625 L 9.3359375 3.50260416666667 C 9.17100694444444 3.33767361111111 8.97569444444444 3.25520833333333 8.75 3.25520833333333 C 8.52430555555556 3.25520833333333 8.32899305555556 3.33767361111111 8.1640625 3.50260416666667 L 6.8359375 4.83072916666667 C 6.67100694444445 4.99565972222222 6.58854166666667 5.19097222222222 6.58854166666667 5.41666666666667 C 6.58854166666667 5.64236111111111 6.67100694444445 5.83767361111111 6.8359375 6.00260416666667 L 10.8333333333333 10 L 6.8359375 13.9973958333333 C 6.67100694444445 14.1623263888889 6.58854166666667 14.3576388888889 6.58854166666667 14.5833333333333 C 6.58854166666667 14.8090277777778 6.67100694444445 15.0043402777778 6.8359375 15.1692708333333 L 8.1640625 16.4973958333333 C 8.32899305555556 16.6623263888889 8.52430555555556 16.7447916666667 8.75 16.7447916666667 Z M 18.6588541666667 4.98046875 C 19.5529513888889 6.51258680555555 20 8.18576388888889 20 10 C 20 11.8142361111111 19.5529513888889 13.4874131944444 18.6588541666667 15.01953125 C 17.7647569444444 16.5516493055556 16.5516493055556 17.7647569444444 15.01953125 18.6588541666667 C 13.4874131944444 19.5529513888889 11.8142361111111 20 10 20 C 8.18576388888889 20 6.51258680555556 19.5529513888889 4.98046875 18.6588541666667 C 3.44835069444444 17.7647569444444 2.23524305555556 16.5516493055556 1.34114583333333 15.01953125 C 0.447048611111111 13.4874131944444 0 11.8142361111111 0 10 C 0 8.18576388888889 0.447048611111111 6.51258680555555 1.34114583333333 4.98046875 C 2.23524305555556 3.44835069444444 3.44835069444444 2.23524305555555 4.98046875 1.34114583333333 C 6.51258680555556 0.447048611111109 8.18576388888889 0 10 0 C 11.8142361111111 0 13.4874131944444 0.447048611111109 15.01953125 1.34114583333333 C 16.5516493055556 2.23524305555555 17.7647569444444 3.44835069444444 18.6588541666667 4.98046875 Z " fill-rule="nonzero" fill="url(#LinearGradient82)" stroke="none" transform="matrix(1 0 0 1 1262 1936 )" />
</g>
</svg>

BIN
img/arrows-gray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

12
img/semicircle-icon.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="24px" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient gradientUnits="userSpaceOnUse" x1="1234" y1="177" x2="1234" y2="201" id="LinearGradient85">
<stop id="Stop86" stop-color="#66c639" offset="0" />
<stop id="Stop87" stop-color="#c7ed76" offset="1" />
</linearGradient>
</defs>
<g transform="matrix(1 0 0 1 -1210 -177 )">
<path d="M 1210 201 C 1210 187.56 1220.56 177 1234 177 C 1247.44 177 1258 187.56 1258 201 C 1258 201 1210 201 1210 201 Z " fill-rule="nonzero" fill="url(#LinearGradient85)" stroke="none" />
</g>
</svg>

9
js/axios.min.js vendored Normal file

File diff suppressed because one or more lines are too long

20
js/html2canvas.min.js vendored Normal file

File diff suppressed because one or more lines are too long

12014
js/vue.js Normal file

File diff suppressed because it is too large Load Diff