Compare commits
2 Commits
84198fe795
...
d49337ba4f
| Author | SHA1 | Date | |
|---|---|---|---|
| d49337ba4f | |||
| c11cced1aa |
14
api.html
@ -11,7 +11,7 @@
|
|||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="翻译之家提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
content="聚合翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
||||||
/>
|
/>
|
||||||
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
||||||
<link rel="stylesheet" href="static/css/public.css" />
|
<link rel="stylesheet" href="static/css/public.css" />
|
||||||
@ -23,7 +23,7 @@
|
|||||||
<script src="static/js/lodash.min.js"></script>
|
<script src="static/js/lodash.min.js"></script>
|
||||||
<script src="static/js/layui.all.js"></script>
|
<script src="static/js/layui.all.js"></script>
|
||||||
<script src="static/js/common.js"></script>
|
<script src="static/js/common.js"></script>
|
||||||
<title>翻译之家</title>
|
<title>聚合翻译</title>
|
||||||
<script>
|
<script>
|
||||||
var _hmt = _hmt || [];
|
var _hmt = _hmt || [];
|
||||||
(function () {
|
(function () {
|
||||||
@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
||||||
<a href="userInfo.html" class="console">控制台</a>
|
<a href="userinfo.html" class="console">控制台</a>
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<div class="phone">{{userInfo.name}}</div>
|
<div class="phone">{{userInfo.name}}</div>
|
||||||
<i></i>
|
<i></i>
|
||||||
@ -177,13 +177,13 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!--<div class="p1 content">--><!-- <h3>翻译之家API</h3>--><!-- <p>翻译之家为你提供主流翻译引擎机器翻译技术</p>--><!-- <div class="line"></div>--><!-- <div class="w1">为什么选择翻译之家?</div>--><!-- <div class="w2">我们是主流翻译引擎综合代理服务商,汇集众多企业客户,从而可以享受较低的渠道价格。</div>--><!--</div>-->
|
<!--<div class="p1 content">--><!-- <h3>聚合翻译API</h3>--><!-- <p>聚合翻译为你提供主流翻译引擎机器翻译技术</p>--><!-- <div class="line"></div>--><!-- <div class="w1">为什么选择聚合翻译?</div>--><!-- <div class="w2">我们是主流翻译引擎综合代理服务商,汇集众多企业客户,从而可以享受较低的渠道价格。</div>--><!--</div>-->
|
||||||
<div class="p2 content">
|
<div class="p2 content">
|
||||||
<div class="w1">介绍</div>
|
<div class="w1">介绍</div>
|
||||||
<!--<h3 data="介绍">翻译之家API</h3>-->
|
<!--<h3 data="介绍">聚合翻译API</h3>-->
|
||||||
<p>翻译之家为你提供主流翻译引擎机器翻译技术</p>
|
<p>聚合翻译为你提供主流翻译引擎机器翻译技术</p>
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
<div class="w1">为什么选择翻译之家?</div>
|
<div class="w1">为什么选择聚合翻译?</div>
|
||||||
<div class="w2">
|
<div class="w2">
|
||||||
我们是主流翻译引擎综合代理服务商,汇集众多企业客户,从而可以享受较低的渠道价格。
|
我们是主流翻译引擎综合代理服务商,汇集众多企业客户,从而可以享受较低的渠道价格。
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="翻译之家提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
content="聚合翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
||||||
/>
|
/>
|
||||||
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
||||||
<link rel="stylesheet" href="static/css/public.css" />
|
<link rel="stylesheet" href="static/css/public.css" />
|
||||||
@ -23,7 +23,7 @@
|
|||||||
<script src="static/js/lodash.min.js"></script>
|
<script src="static/js/lodash.min.js"></script>
|
||||||
<script src="static/js/layui.all.js"></script>
|
<script src="static/js/layui.all.js"></script>
|
||||||
<script src="static/js/common.js"></script>
|
<script src="static/js/common.js"></script>
|
||||||
<title>翻译之家</title>
|
<title>聚合翻译</title>
|
||||||
<script>
|
<script>
|
||||||
var _hmt = _hmt || [];
|
var _hmt = _hmt || [];
|
||||||
(function () {
|
(function () {
|
||||||
@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
||||||
<a href="userInfo.html" class="console">控制台</a>
|
<a href="userinfo.html" class="console">控制台</a>
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<div class="phone">{{userInfo.name}}</div>
|
<div class="phone">{{userInfo.name}}</div>
|
||||||
<i></i>
|
<i></i>
|
||||||
@ -131,7 +131,7 @@
|
|||||||
<div class="title">服务</div>
|
<div class="title">服务</div>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<div class="q">翻译之家是如何服务客户的?</div>
|
<div class="q">聚合翻译是如何服务客户的?</div>
|
||||||
<div class="a">
|
<div class="a">
|
||||||
我们是一个聚合翻译服务商,聚合主流的翻译公司接口,提供更便宜、多样化的翻译服务。
|
我们是一个聚合翻译服务商,聚合主流的翻译公司接口,提供更便宜、多样化的翻译服务。
|
||||||
</div>
|
</div>
|
||||||
@ -200,17 +200,17 @@
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<p style="color: #fff; font-size: 12px"><span>关于我们:</span></p>
|
<p style="color: #fff; font-size: 12px"><span>官方频道:@apiapl_news</span></p>
|
||||||
<p style="color: #fff; font-size: 12px">
|
<p style="color: #fff; font-size: 12px"><span>咨询客服:@apiapl</span></p>
|
||||||
<span></span>
|
<span></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right" style="white-space: nowrap">
|
<div class="right" style="white-space: nowrap">
|
||||||
<p></p>
|
<p></p>
|
||||||
<p><span>联系我们:</span></p>
|
|
||||||
<p><span>地址:</span></p>
|
<p><span>技术服务:@apiapl_sdk</span></p>
|
||||||
<p><span></span></p>
|
<p><span>联系邮箱:info@apiapl.com</span></p>
|
||||||
<p class=""><span>电话: </span></p>
|
<p class=""><span>联系电话:+18435173355 </span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
|
|||||||
46
index.html
@ -11,7 +11,7 @@
|
|||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="翻译之家提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
content="聚合翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
||||||
/>
|
/>
|
||||||
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
||||||
<link rel="stylesheet" href="static/css/public.css" />
|
<link rel="stylesheet" href="static/css/public.css" />
|
||||||
@ -23,7 +23,7 @@
|
|||||||
<script src="static/js/lodash.min.js"></script>
|
<script src="static/js/lodash.min.js"></script>
|
||||||
<script src="static/js/layui.all.js"></script>
|
<script src="static/js/layui.all.js"></script>
|
||||||
<script src="static/js/common.js"></script>
|
<script src="static/js/common.js"></script>
|
||||||
<title>翻译之家</title>
|
<title>聚合翻译</title>
|
||||||
<script>
|
<script>
|
||||||
var _hmt = _hmt || [];
|
var _hmt = _hmt || [];
|
||||||
(function () {
|
(function () {
|
||||||
@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
||||||
<a href="userInfo.html" class="console">控制台</a>
|
<a href="userinfo.html" class="console">控制台</a>
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<div class="phone">{{userInfo.name}}</div>
|
<div class="phone">{{userInfo.name}}</div>
|
||||||
<i></i>
|
<i></i>
|
||||||
@ -214,7 +214,7 @@
|
|||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">谷歌翻译-V2/V3</div>
|
<div class="item">谷歌翻译-V2/V3</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">60(微信咨询,领取折扣)</div>
|
<div class="item">60(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
5.5折(20美元)<img src="static/picture/p7.png" alt="" />
|
5.5折(20美元)<img src="static/picture/p7.png" alt="" />
|
||||||
@ -223,7 +223,7 @@
|
|||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">百度翻译-企业版本</div>
|
<div class="item">百度翻译-企业版本</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">25(微信咨询,领取折扣)</div>
|
<div class="item">25(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
5折(50元)<img src="static/picture/p7.png" alt="" />
|
5折(50元)<img src="static/picture/p7.png" alt="" />
|
||||||
@ -232,16 +232,16 @@
|
|||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">有道翻译</div>
|
<div class="item">有道翻译</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">25(微信咨询,领取折扣)</div>
|
<div class="item">25(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
5折(50元)<img src="static/picture/p7.png" alt="" />
|
5折<img src="static/picture/p7.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">微软翻译</div>
|
<div class="item">微软翻译</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">60(微信咨询,领取折扣)</div>
|
<div class="item">60(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
8.2折(10美元)<img src="static/picture/p7.png" alt="" />
|
8.2折(10美元)<img src="static/picture/p7.png" alt="" />
|
||||||
@ -250,16 +250,16 @@
|
|||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">火山翻译</div>
|
<div class="item">火山翻译</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">25(微信咨询,领取折扣)</div>
|
<div class="item">25(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
5折(50元)<img src="static/picture/p7.png" alt="" />
|
5折<img src="static/picture/p7.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">chatgpt翻译</div>
|
<div class="item">chatgpt翻译</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">50(微信咨询,领取折扣)</div>
|
<div class="item">50(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
5折(100元)<img src="static/picture/p7.png" alt="" />
|
5折(100元)<img src="static/picture/p7.png" alt="" />
|
||||||
@ -268,7 +268,7 @@
|
|||||||
<li class="row-info">
|
<li class="row-info">
|
||||||
<div class="item">yandex翻译</div>
|
<div class="item">yandex翻译</div>
|
||||||
<div class="item">按调用字符计费</div>
|
<div class="item">按调用字符计费</div>
|
||||||
<div class="item">25(微信咨询,领取折扣)</div>
|
<div class="item">25(电报咨询,领取折扣)</div>
|
||||||
<div class="item">5~1000(支持扩展)</div>
|
<div class="item">5~1000(支持扩展)</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
8.3折(30元)<img src="static/picture/p7.png" alt="" />
|
8.3折(30元)<img src="static/picture/p7.png" alt="" />
|
||||||
@ -481,11 +481,11 @@
|
|||||||
<div class="ctr">
|
<div class="ctr">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<img src="static/picture/p25.png" alt="" />
|
<img src="static/picture/p25.png" alt="" />
|
||||||
<div>微信咨询</div>
|
<div>电报咨询</div>
|
||||||
<div class="detail wechat">
|
<div class="detail wechat">
|
||||||
<h5>微信咨询</h5>
|
<h5>电报咨询</h5>
|
||||||
<img src="static/picture/p23.jpg" alt="" />
|
<img src="static/picture/p23.jpg" alt="" />
|
||||||
<p>手机扫码加我微信</p>
|
<p>手机扫码加我电报</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
@ -494,13 +494,13 @@
|
|||||||
<div>电话咨询</div>
|
<div>电话咨询</div>
|
||||||
<div class="detail">
|
<div class="detail">
|
||||||
<h5>电话咨询</h5>
|
<h5>电话咨询</h5>
|
||||||
<div class="phone">13327906119</div>
|
<div class="phone">+18435173355</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="service-modal"><div class="content"><div class="close"></div><div class="contact">联系我们</div><img class="qrcode-img" src="https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p23.jpg" alt=""><p>请添加专属营销顾问</p></div></div> -->
|
<!-- <div class="service-modal"><div class="content"><div class="close"></div><div class="contact">联系我们</div><img class="qrcode-img" src="/static/picture/p23.jpg" alt=""><p>请添加专属营销顾问</p></div></div> -->
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
@ -688,17 +688,17 @@
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<p style="color: #fff; font-size: 12px"><span>关于我们:</span></p>
|
<p style="color: #fff; font-size: 12px"><span>官方频道:@apiapl_news</span></p>
|
||||||
<p style="color: #fff; font-size: 12px">
|
<p style="color: #fff; font-size: 12px"><span>咨询客服:@apiapl</span></p>
|
||||||
<span></span>
|
<span></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right" style="white-space: nowrap">
|
<div class="right" style="white-space: nowrap">
|
||||||
<p></p>
|
<p></p>
|
||||||
<p><span>联系我们:</span></p>
|
|
||||||
<p><span>地址:</span></p>
|
<p><span>技术服务:@apiapl_sdk</span></p>
|
||||||
<p><span>邮箱:</span></p>
|
<p><span>联系邮箱:info@apiapl.com</span></p>
|
||||||
<p class=""><span>电话: </span></p>
|
<p class=""><span>联系电话:+18435173355 </span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
|
|||||||
764
login.html
@ -1,382 +1,382 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
<meta name="baidu-site-verification" content="codeva-bhaFvYlfgd" />
|
<meta name="baidu-site-verification" content="codeva-bhaFvYlfgd" />
|
||||||
<meta
|
<meta
|
||||||
name="keywords"
|
name="keywords"
|
||||||
content="deepl、deepl翻译、百度翻译、谷歌翻译、腾讯翻译君"
|
content="deepl、deepl翻译、百度翻译、谷歌翻译、腾讯翻译君"
|
||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="翻译之家提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
content="聚合翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
||||||
/>
|
/>
|
||||||
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
||||||
<link rel="stylesheet" href="static/css/public.css" />
|
<link rel="stylesheet" href="static/css/public.css" />
|
||||||
<link rel="stylesheet" href="static/css/layui.css" />
|
<link rel="stylesheet" href="static/css/layui.css" />
|
||||||
<script src="static/js/jquery-1.11.0.min.js"></script>
|
<script src="static/js/jquery-1.11.0.min.js"></script>
|
||||||
<script src="static/js/axios.min.js"></script>
|
<script src="static/js/axios.min.js"></script>
|
||||||
<script src="static/js/countUp.min.js"></script>
|
<script src="static/js/countUp.min.js"></script>
|
||||||
<script src="static/js/vue.js"></script>
|
<script src="static/js/vue.js"></script>
|
||||||
<script src="static/js/lodash.min.js"></script>
|
<script src="static/js/lodash.min.js"></script>
|
||||||
<script src="static/js/layui.all.js"></script>
|
<script src="static/js/layui.all.js"></script>
|
||||||
<script src="static/js/common.js"></script>
|
<script src="static/js/common.js"></script>
|
||||||
<title>翻译之家</title>
|
<title>聚合翻译</title>
|
||||||
<script>
|
<script>
|
||||||
var _hmt = _hmt || [];
|
var _hmt = _hmt || [];
|
||||||
(function () {
|
(function () {
|
||||||
var hm = document.createElement("script");
|
var hm = document.createElement("script");
|
||||||
hm.src = "https://hm.baidu.com/hm.js?c4e0dd6add63dd71fa52870120ca22cf";
|
hm.src = "https://hm.baidu.com/hm.js?c4e0dd6add63dd71fa52870120ca22cf";
|
||||||
var s = document.getElementsByTagName("script")[0];
|
var s = document.getElementsByTagName("script")[0];
|
||||||
s.parentNode.insertBefore(hm, s);
|
s.parentNode.insertBefore(hm, s);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body >
|
<body >
|
||||||
<div class="public-header normal" id="main">
|
<div class="public-header normal" id="main">
|
||||||
<div class="container clearfix">
|
<div class="container clearfix">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img class="logo default" src="static/picture/logo.png" alt="" /><img
|
<img class="logo default" src="static/picture/logo.png" alt="" /><img
|
||||||
class="logo1 default"
|
class="logo1 default"
|
||||||
src="static/picture/logo1.png"
|
src="static/picture/logo1.png"
|
||||||
alt=""
|
alt=""
|
||||||
/><img class="logo light" src="static/picture/logow.png" alt="" /><img
|
/><img class="logo light" src="static/picture/logow.png" alt="" /><img
|
||||||
class="logo1 light"
|
class="logo1 light"
|
||||||
src="static/picture/logo1w.png"
|
src="static/picture/logo1w.png"
|
||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
<div class="nav">
|
<div class="nav">
|
||||||
<a class="" href="index.html"><span>首页</span></a
|
<a class="" href="index.html"><span>首页</span></a
|
||||||
><a class="" href="onlineTranslation.html"><span>文本翻译</span></a
|
><a class="" href="onlineTranslation.html"><span>文本翻译</span></a
|
||||||
><a class="" href="voice.html"><span>语音翻译</span></a
|
><a class="" href="voice.html"><span>语音翻译</span></a
|
||||||
><a class="" href="api.html"><span>API文档</span></a
|
><a class="" href="api.html"><span>API文档</span></a
|
||||||
><a class="" href="commonProblems.html"><span>常见问题</span></a>
|
><a class="" href="commonProblems.html"><span>常见问题</span></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userInfo&&userInfo.id" class="right">
|
<div v-if="userInfo&&userInfo.id" class="right">
|
||||||
<a href="userInfo.html" class="console">控制台</a>
|
<a href="userinfo.html" class="console">控制台</a>
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<div class="phone">13809073722</div>
|
<div class="phone">13809073722</div>
|
||||||
<i></i>
|
<i></i>
|
||||||
<div class="log-out">退出</div>
|
<div class="log-out">退出</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="right"><a class="unlogin" href="login.html">登录</a></div>
|
<div v-else class="right"><a class="unlogin" href="login.html">登录</a></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg"></div>
|
<div class="bg"></div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
el: "#main",
|
el: "#main",
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
mounted() {},
|
mounted() {},
|
||||||
methods: {
|
methods: {
|
||||||
logOut() {
|
logOut() {
|
||||||
axios.get("/api/translate/logOut").then((response) => {
|
axios.get("/api/translate/logOut").then((response) => {
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<div class="page-login" v-if="type == 0">
|
<div class="page-login" v-if="type == 0">
|
||||||
<div class="w1200">
|
<div class="w1200">
|
||||||
<div class="left"></div>
|
<div class="left"></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<img src="static/picture/logo3x.png" alt="" />
|
<img src="static/picture/logo3x.png" alt="" />
|
||||||
<h3>登录</h3>
|
<h3>登录</h3>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">账号</div>
|
<div class="label">账号</div>
|
||||||
<!-- <span class="pre">+86</span> -->
|
<!-- <span class="pre">+86</span> -->
|
||||||
<input class="form-input" placeholder="请输入" v-model="tel"/>
|
<input class="form-input" placeholder="请输入" v-model="tel"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">密码</div>
|
<div class="label">密码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="请输入"
|
placeholder="请输入"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">验证码</div>
|
<div class="label">验证码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input captcha-input" v-model="code" placeholder="请输入验证码"></input>
|
class="form-input captcha-input" v-model="code" placeholder="请输入验证码"></input>
|
||||||
<div class="code-col captcha-container" @click="getCode" style="height: 100%;">
|
<div class="code-col captcha-container" @click="getCode" style="height: 100%;">
|
||||||
<img :src="captcha" class="captcha-img" />
|
<img :src="captcha" class="captcha-img" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="login" @click="login()">登录</div>
|
<div class="login" @click="login()">登录</div>
|
||||||
<!-- <div class="more">
|
<!-- <div class="more">
|
||||||
<a href="javascript:;" @click="type=1">注册</a>
|
<a href="javascript:;" @click="type=1">注册</a>
|
||||||
<a href="javascript:;" @click="type=2 ">找回密码</a>
|
<a href="javascript:;" @click="type=2 ">找回密码</a>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div
|
<div
|
||||||
class="rule"
|
class="rule"
|
||||||
style="
|
style="
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 13px;
|
padding-top: 13px;
|
||||||
color: #666;
|
color: #666;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
登录即代表您同意并遵守<a
|
登录即代表您同意并遵守<a
|
||||||
target="_blank"
|
target="_blank"
|
||||||
href="static/file/rule.pdf"
|
href="static/file/rule.pdf"
|
||||||
>《隐私协议》</a
|
>《隐私协议》</a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="page-login find-password" v-if="type == 1">
|
<div class="page-login find-password" v-if="type == 1">
|
||||||
<div class="w1200">
|
<div class="w1200">
|
||||||
<div class="left"></div>
|
<div class="left"></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<img src="static/picture/p20.png" alt="" />
|
<img src="static/picture/p20.png" alt="" />
|
||||||
<h3>注册</h3>
|
<h3>注册</h3>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">手机号</div>
|
<div class="label">手机号</div>
|
||||||
<span class="pre">+86</span
|
<span class="pre">+86</span
|
||||||
><input class="form-input" type="number" v-model="tel" />
|
><input class="form-input" type="number" v-model="tel" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item form-code">
|
<div class="form-item form-code">
|
||||||
<div class="label">验证码</div>
|
<div class="label">验证码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="number"
|
type="number"
|
||||||
placeholder="4位数验证码"
|
placeholder="4位数验证码"
|
||||||
v-model="code"
|
v-model="code"
|
||||||
/>
|
/>
|
||||||
<div class="code-col" @click="getCode">{{ codeText }}</div>
|
<div class="code-col" @click="getCode">{{ codeText }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">密码</div>
|
<div class="label">密码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="至少8位,字母或数字的组合"
|
placeholder="至少8位,字母或数字的组合"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">确认密码</div>
|
<div class="label">确认密码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="至少8位,字母或数字的组合"
|
placeholder="至少8位,字母或数字的组合"
|
||||||
v-model="surepassword"
|
v-model="surepassword"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="login" @click="register()">确定</div>
|
<div class="login" @click="register()">确定</div>
|
||||||
<div class="login-now">
|
<div class="login-now">
|
||||||
<a href="javascript:;" @click="type=0">登录</a>
|
<a href="javascript:;" @click="type=0">登录</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="page-login find-password" v-if="type == 2">
|
<div class="page-login find-password" v-if="type == 2">
|
||||||
<div class="w1200">
|
<div class="w1200">
|
||||||
<div class="left"></div>
|
<div class="left"></div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<img src="static/picture/p20.png" alt="" />
|
<img src="static/picture/p20.png" alt="" />
|
||||||
<h3>登录</h3>
|
<h3>登录</h3>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">手机号</div>
|
<div class="label">手机号</div>
|
||||||
<span class="pre">+86</span
|
<span class="pre">+86</span
|
||||||
><input class="form-input" type="number" v-model="tel" />
|
><input class="form-input" type="number" v-model="tel" />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item form-code">
|
<div class="form-item form-code">
|
||||||
<div class="label">验证码</div>
|
<div class="label">验证码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="number"
|
type="number"
|
||||||
placeholder="4位数验证码"
|
placeholder="4位数验证码"
|
||||||
v-model="code"
|
v-model="code"
|
||||||
/>
|
/>
|
||||||
<div class="code-col" @click="getCode">{{ codeText}}</div>
|
<div class="code-col" @click="getCode">{{ codeText}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">密码</div>
|
<div class="label">密码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="至少8位,字母或数字的组合"
|
placeholder="至少8位,字母或数字的组合"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<div class="label">确认密码</div>
|
<div class="label">确认密码</div>
|
||||||
<input
|
<input
|
||||||
class="form-input"
|
class="form-input"
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="至少8位,字母或数字的组合"
|
placeholder="至少8位,字母或数字的组合"
|
||||||
v-model="surepassword"
|
v-model="surepassword"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="login" @click="register()">确定</div>
|
<div class="login" @click="register()">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
tel: "",
|
tel: "",
|
||||||
password: "",
|
password: "",
|
||||||
code:"",
|
code:"",
|
||||||
uuid:"",
|
uuid:"",
|
||||||
type: 0,
|
type: 0,
|
||||||
isCanClick: true,
|
isCanClick: true,
|
||||||
count: 60,
|
count: 60,
|
||||||
timer: undefined,
|
timer: undefined,
|
||||||
codeText: "发送验证码",
|
codeText: "发送验证码",
|
||||||
code: "",
|
code: "",
|
||||||
surepassword: "",
|
surepassword: "",
|
||||||
captcha:"",
|
captcha:"",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
beforeCreate(){
|
beforeCreate(){
|
||||||
let token = localStorage.getItem("token");
|
let token = localStorage.getItem("token");
|
||||||
if(token){
|
if(token){
|
||||||
location.href="userinfo.html"
|
location.href="userinfo.html"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getCode();
|
this.getCode();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
login() {
|
login() {
|
||||||
var pattern = /^1[0-9]{10}$/;
|
var pattern = /^1[0-9]{10}$/;
|
||||||
if (this.password) {
|
if (this.password) {
|
||||||
axios
|
axios
|
||||||
.post("/login", {
|
.post("/login", {
|
||||||
username: this.tel,
|
username: this.tel,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
code:this.code,
|
code:this.code,
|
||||||
uuid:this.uuid,
|
uuid:this.uuid,
|
||||||
rememberMe: false,
|
rememberMe: false,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.data.code == 200) {
|
if (response.data.code == 200) {
|
||||||
localStorage.setItem("token", response.data.token);
|
localStorage.setItem("token", response.data.token);
|
||||||
location.href="userinfo.html"
|
location.href="userinfo.html"
|
||||||
} else {
|
} else {
|
||||||
layer.msg(response.data.msg);
|
layer.msg(response.data.msg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
layer.msg("密码不能为空");
|
layer.msg("密码不能为空");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getCode() {
|
getCode() {
|
||||||
const that = this;
|
const that = this;
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.get("/captcha")
|
.get("/captcha")
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.data.code == 200) {
|
if (response.data.code == 200) {
|
||||||
that.isCanClick = false;
|
that.isCanClick = false;
|
||||||
that.captcha=response.data.data;
|
that.captcha=response.data.data;
|
||||||
this.uuid=response.data.id;
|
this.uuid=response.data.id;
|
||||||
} else {
|
} else {
|
||||||
that.isCanClick = 1;
|
that.isCanClick = 1;
|
||||||
layer.msg(response.data.msg);
|
layer.msg(response.data.msg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
register() {
|
register() {
|
||||||
var pattern = /^1[0-9]{10}$/;
|
var pattern = /^1[0-9]{10}$/;
|
||||||
if (!pattern.test(this.tel)) {
|
if (!pattern.test(this.tel)) {
|
||||||
layer.msg("手机号码有误!");
|
layer.msg("手机号码有误!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!$.trim(this.password)) {
|
if (!$.trim(this.password)) {
|
||||||
layer.msg("密码不能为空");
|
layer.msg("密码不能为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.password != this.surepassword) {
|
if (this.password != this.surepassword) {
|
||||||
layer.msg("两次密码不一致,请重新输入");
|
layer.msg("两次密码不一致,请重新输入");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!this.code) {
|
if (!this.code) {
|
||||||
layer.msg("验证码不能为空");
|
layer.msg("验证码不能为空");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
axios
|
axios
|
||||||
.post("/api/translate/register", {
|
.post("/api/translate/register", {
|
||||||
tel: this.tel,
|
tel: this.tel,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
code: this.code,
|
code: this.code,
|
||||||
type: this.type,
|
type: this.type,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.data.code == 200) {
|
if (response.data.code == 200) {
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
layer.msg(response.data.msg);
|
layer.msg(response.data.msg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<div class="public-footer">
|
<div class="public-footer">
|
||||||
<div class="w1200">
|
<div class="w1200">
|
||||||
<div class="left"><img src="static/picture/logo.png" alt="" /></div>
|
<div class="left"><img src="static/picture/logo.png" alt="" /></div>
|
||||||
<div
|
<div
|
||||||
style="
|
style="
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
line-height: 23px;
|
line-height: 23px;
|
||||||
padding-left: 100px;
|
padding-left: 100px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<p style="color: #fff; font-size: 12px"><span>关于我们:</span></p>
|
<p style="color: #fff; font-size: 12px"><span>官方频道:@apiapl_news</span></p>
|
||||||
<p style="color: #fff; font-size: 12px">
|
<p style="color: #fff; font-size: 12px"><span>咨询客服:@apiapl</span></p>
|
||||||
<span></span>
|
<span></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right" style="white-space: nowrap">
|
<div class="right" style="white-space: nowrap">
|
||||||
<p></p>
|
<p></p>
|
||||||
<p><span>联系我们:</span></p>
|
|
||||||
<p><span>地址:</span></p>
|
<p><span>技术服务:@apiapl_sdk</span></p>
|
||||||
<p><span>邮箱:</span></p>
|
<p><span>联系邮箱:info@apiapl.com</span></p>
|
||||||
<p class=""><span>电话: </span></p>
|
<p class=""><span>联系电话:+18435173355 </span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
<a href="https://beian.miit.gov.cn/" target="blank"></a>
|
<a href="https://beian.miit.gov.cn/" target="blank"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<style>
|
<style>
|
||||||
.captcha-input{
|
.captcha-input{
|
||||||
width: 260px !important;
|
width: 260px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.captcha-container{
|
.captcha-container{
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
}
|
}
|
||||||
.captcha-img{
|
.captcha-img{
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,451 +1,451 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
|
||||||
<meta name="baidu-site-verification" content="codeva-bhaFvYlfgd" />
|
<meta name="baidu-site-verification" content="codeva-bhaFvYlfgd" />
|
||||||
<meta
|
<meta
|
||||||
name="keywords"
|
name="keywords"
|
||||||
content="deepl、deepl翻译、百度翻译、谷歌翻译、腾讯翻译君"
|
content="deepl、deepl翻译、百度翻译、谷歌翻译、腾讯翻译君"
|
||||||
/>
|
/>
|
||||||
<meta
|
<meta
|
||||||
name="description"
|
name="description"
|
||||||
content="翻译之家提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
content="聚合翻译提供即时免费的中文、英语、日语、韩语、法语、德语、俄语、西班牙语、葡萄牙语、越南语、印尼语、意大利语、荷兰语、泰语全文翻译等服务。"
|
||||||
/>
|
/>
|
||||||
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
<meta name="baidu-site-verification" content="codeva-mXz3BqI9VN" />
|
||||||
<link rel="stylesheet" href="static/css/public.css" />
|
<link rel="stylesheet" href="static/css/public.css" />
|
||||||
<link rel="stylesheet" href="static/css/layui.css" />
|
<link rel="stylesheet" href="static/css/layui.css" />
|
||||||
<script src="static/js/jquery-1.11.0.min.js"></script>
|
<script src="static/js/jquery-1.11.0.min.js"></script>
|
||||||
<script src="static/js/axios.min.js"></script>
|
<script src="static/js/axios.min.js"></script>
|
||||||
<script src="static/js/countUp.min.js"></script>
|
<script src="static/js/countUp.min.js"></script>
|
||||||
<script src="static/js/vue.js"></script>
|
<script src="static/js/vue.js"></script>
|
||||||
<script src="static/js/lodash.min.js"></script>
|
<script src="static/js/lodash.min.js"></script>
|
||||||
<script src="static/js/layui.all.js"></script>
|
<script src="static/js/layui.all.js"></script>
|
||||||
<script src="static/js/common.js"></script>
|
<script src="static/js/common.js"></script>
|
||||||
<title>翻译之家</title>
|
<title>聚合翻译</title>
|
||||||
<script>
|
<script>
|
||||||
var _hmt = _hmt || [];
|
var _hmt = _hmt || [];
|
||||||
(function () {
|
(function () {
|
||||||
var hm = document.createElement("script");
|
var hm = document.createElement("script");
|
||||||
hm.src = "https://hm.baidu.com/hm.js?c4e0dd6add63dd71fa52870120ca22cf";
|
hm.src = "https://hm.baidu.com/hm.js?c4e0dd6add63dd71fa52870120ca22cf";
|
||||||
var s = document.getElementsByTagName("script")[0];
|
var s = document.getElementsByTagName("script")[0];
|
||||||
s.parentNode.insertBefore(hm, s);
|
s.parentNode.insertBefore(hm, s);
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="public-header normal" id="main">
|
<div class="public-header normal" id="main">
|
||||||
<div class="container clearfix">
|
<div class="container clearfix">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img class="logo default" src="static/picture/logo.png" alt="" /><img
|
<img class="logo default" src="static/picture/logo.png" alt="" /><img
|
||||||
class="logo1 default"
|
class="logo1 default"
|
||||||
src="static/picture/logo1.png"
|
src="static/picture/logo1.png"
|
||||||
alt=""
|
alt=""
|
||||||
/><img class="logo light" src="static/picture/logow.png" alt="" /><img
|
/><img class="logo light" src="static/picture/logow.png" alt="" /><img
|
||||||
class="logo1 light"
|
class="logo1 light"
|
||||||
src="static/picture/logo1w.png"
|
src="static/picture/logo1w.png"
|
||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
<div class="nav">
|
<div class="nav">
|
||||||
<a class="" href="index.html"><span>首页</span></a
|
<a class="" href="index.html"><span>首页</span></a
|
||||||
><a class="active" href=""><span>文本翻译</span></a
|
><a class="active" href=""><span>文本翻译</span></a
|
||||||
><a class="" href="voice.html"><span>语音翻译</span></a
|
><a class="" href="voice.html"><span>语音翻译</span></a
|
||||||
><a class="" href="api.html"><span>API文档</span></a
|
><a class="" href="api.html"><span>API文档</span></a
|
||||||
><a class="" href="commonProblems.html"><span>常见问题</span></a>
|
><a class="" href="commonProblems.html"><span>常见问题</span></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
<div v-if="userInfo!=undefined&&userInfo.userId>0" class="right">
|
||||||
<a href="userInfo.html" class="console">控制台</a>
|
<a href="userinfo.html" class="console">控制台</a>
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<div class="phone">{{userInfo.name}}</div>
|
<div class="phone">{{userInfo.name}}</div>
|
||||||
<i></i>
|
<i></i>
|
||||||
<div class="log-out" @click="logOut">退出</div>
|
<div class="log-out" @click="logOut">退出</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="right">
|
<div v-else class="right">
|
||||||
<a class="unlogin" href="login.html">登录</a>
|
<a class="unlogin" href="login.html">登录</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg"></div>
|
<div class="bg"></div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var vm = new Vue({
|
var vm = new Vue({
|
||||||
el: "#main",
|
el: "#main",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
userInfo: {},
|
userInfo: {},
|
||||||
token: "",
|
token: "",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {},
|
created() {},
|
||||||
mounted() {
|
mounted() {
|
||||||
let token = localStorage.getItem("token");
|
let token = localStorage.getItem("token");
|
||||||
if (token) {
|
if (token) {
|
||||||
this.token = token;
|
this.token = token;
|
||||||
this.getUserInfo(token);
|
this.getUserInfo(token);
|
||||||
} else {
|
} else {
|
||||||
// location.href = "login.html";
|
// location.href = "login.html";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
logOut() {
|
logOut() {
|
||||||
axios
|
axios
|
||||||
.post("/logout", {
|
.post("/logout", {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${this.token}`,
|
Authorization: `Bearer ${this.token}`,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
localStorage.removeItem("token");
|
localStorage.removeItem("token");
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
getUserInfo(token) {
|
getUserInfo(token) {
|
||||||
let that = this;
|
let that = this;
|
||||||
axios
|
axios
|
||||||
.get("/getinfo", {
|
.get("/getinfo", {
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${this.token}`,
|
Authorization: `Bearer ${this.token}`,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.data.code === 200) {
|
if (response.data.code === 200) {
|
||||||
this.userInfo = response.data.data;
|
this.userInfo = response.data.data;
|
||||||
console.log("userinfo", this.userInfo);
|
console.log("userinfo", this.userInfo);
|
||||||
} else {
|
} else {
|
||||||
localStorage.removeItem("token");
|
localStorage.removeItem("token");
|
||||||
location.href = "login.html";
|
location.href = "login.html";
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<div class="page-translation" id="app">
|
<div class="page-translation" id="app">
|
||||||
<div class="w1200">
|
<div class="w1200">
|
||||||
<div class="translation-engine">
|
<div class="translation-engine">
|
||||||
<div
|
<div
|
||||||
v-for="item in engineType"
|
v-for="item in engineType"
|
||||||
:key="item.key"
|
:key="item.key"
|
||||||
class="item"
|
class="item"
|
||||||
:class="{ on: engine.key == item.key }"
|
:class="{ on: engine.key == item.key }"
|
||||||
@click="onSelectEngine(item)"
|
@click="onSelectEngine(item)"
|
||||||
>
|
>
|
||||||
<img :src="item.icon" alt="" />
|
<img :src="item.icon" alt="" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="translation-row">
|
<div class="translation-row">
|
||||||
<div class="translation-language" @mouseleave="languageShow = false">
|
<div class="translation-language" @mouseleave="languageShow = false">
|
||||||
<div
|
<div
|
||||||
class="source"
|
class="source"
|
||||||
@mouseenter="() => onShowLanguage('100px', true, 'sourceLanguage')"
|
@mouseenter="() => onShowLanguage('100px', true, 'sourceLanguage')"
|
||||||
>
|
>
|
||||||
{{ sourceLanguage.name }}
|
{{ sourceLanguage.name }}
|
||||||
<div class="icon select-icon"></div>
|
<div class="icon select-icon"></div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="target"
|
class="target"
|
||||||
@mouseenter="() => onShowLanguage('620px', true, 'targetLanguage')"
|
@mouseenter="() => onShowLanguage('620px', true, 'targetLanguage')"
|
||||||
>
|
>
|
||||||
<div class="icon switch-icon" @click="onSwitch"></div>
|
<div class="icon switch-icon" @click="onSwitch"></div>
|
||||||
{{ targetLanguage.name }}
|
{{ targetLanguage.name }}
|
||||||
<div class="icon select-icon"></div>
|
<div class="icon select-icon"></div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="language-row"
|
class="language-row"
|
||||||
:class="{ show: languageShow }"
|
:class="{ show: languageShow }"
|
||||||
:style="{ left: languageRowLeft }"
|
:style="{ left: languageRowLeft }"
|
||||||
>
|
>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<i class="icon"></i
|
<i class="icon"></i
|
||||||
><input
|
><input
|
||||||
type="text"
|
type="text"
|
||||||
class="search-input"
|
class="search-input"
|
||||||
v-model="serachKeywords"
|
v-model="serachKeywords"
|
||||||
placeholder="搜索你想要的"
|
placeholder="搜索你想要的"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div
|
<div
|
||||||
v-for="(k, v) in languageCurrent"
|
v-for="(k, v) in languageCurrent"
|
||||||
:key="v"
|
:key="v"
|
||||||
:value="v"
|
:value="v"
|
||||||
class="col"
|
class="col"
|
||||||
@click="onSelectLanguage(v)"
|
@click="onSelectLanguage(v)"
|
||||||
:class="{ on: sourceLanguage.key == v || targetLanguage.key == v }"
|
:class="{ on: sourceLanguage.key == v || targetLanguage.key == v }"
|
||||||
>
|
>
|
||||||
<span>{{ k }}</span>
|
<span>{{ k }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="translation-text">
|
<div class="translation-text">
|
||||||
<div class="source">
|
<div class="source">
|
||||||
<textarea
|
<textarea
|
||||||
cols="30"
|
cols="30"
|
||||||
rows="10"
|
rows="10"
|
||||||
v-model="sourceText"
|
v-model="sourceText"
|
||||||
placeholder="输入文字,即可翻译"
|
placeholder="输入文字,即可翻译"
|
||||||
></textarea>
|
></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="target">
|
<div class="target">
|
||||||
<textarea
|
<textarea
|
||||||
disabled
|
disabled
|
||||||
cols="30"
|
cols="30"
|
||||||
rows="10"
|
rows="10"
|
||||||
v-model="targetText"
|
v-model="targetText"
|
||||||
></textarea>
|
></textarea>
|
||||||
<div class="loading" v-if="isLoading">
|
<div class="loading" v-if="isLoading">
|
||||||
<img class="icon" src="static/picture/p17.png" alt="" />
|
<img class="icon" src="static/picture/p17.png" alt="" />
|
||||||
<div>Loading...</div>
|
<div>Loading...</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="targetText" class="copy" @click="copy">复制</div>
|
<div v-if="targetText" class="copy" @click="copy">复制</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script src="static/js/lodash.min.js"></script>
|
<script src="static/js/lodash.min.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
const CancelToken = axios.CancelToken;
|
const CancelToken = axios.CancelToken;
|
||||||
let source = CancelToken.source();
|
let source = CancelToken.source();
|
||||||
new Vue({
|
new Vue({
|
||||||
el: "#app",
|
el: "#app",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
engine: {},
|
engine: {},
|
||||||
engineType: [
|
engineType: [
|
||||||
{
|
{
|
||||||
key: "deepl",
|
key: "deepl",
|
||||||
value: 0,
|
value: 0,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p2.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p2.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "google",
|
key: "google",
|
||||||
value: 1,
|
value: 1,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p3.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p3.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "baidu",
|
key: "baidu",
|
||||||
value: 2,
|
value: 2,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p4.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/p4.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "youdao",
|
key: "youdao",
|
||||||
value: 3,
|
value: 3,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/youdao.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/youdao.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "bing",
|
key: "bing",
|
||||||
value: 4,
|
value: 4,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/bing.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/bing.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "huoshan",
|
key: "huoshan",
|
||||||
value: 5,
|
value: 5,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/huoshan.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/huoshan.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "chatgpt",
|
key: "chatgpt",
|
||||||
value: 6,
|
value: 6,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/openai.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/openai.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "yandex",
|
key: "yandex",
|
||||||
value: 7,
|
value: 7,
|
||||||
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/yandex.png",
|
icon: "https://codeai.oss-cn-hangzhou.aliyuncs.com/img/yandex.png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
sourceLanguage: {
|
sourceLanguage: {
|
||||||
key: "auto",
|
key: "auto",
|
||||||
name: "自动检测",
|
name: "自动检测",
|
||||||
},
|
},
|
||||||
targetLanguage: {
|
targetLanguage: {
|
||||||
key: "ZH",
|
key: "ZH",
|
||||||
name: "中文(简体)",
|
name: "中文(简体)",
|
||||||
},
|
},
|
||||||
sourceText: "",
|
sourceText: "",
|
||||||
targetText: "",
|
targetText: "",
|
||||||
serachKeywords: "",
|
serachKeywords: "",
|
||||||
languageShow: false,
|
languageShow: false,
|
||||||
languageRowLeft: "100px",
|
languageRowLeft: "100px",
|
||||||
languageTotalData: {},
|
languageTotalData: {},
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.engine = this.engineType[0];
|
this.engine = this.engineType[0];
|
||||||
this.getLanguage();
|
this.getLanguage();
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
let token = localStorage.getItem("token");
|
let token = localStorage.getItem("token");
|
||||||
if (token) {
|
if (token) {
|
||||||
this.token = token;
|
this.token = token;
|
||||||
this.getUserInfo(token);
|
this.getUserInfo(token);
|
||||||
} else {
|
} else {
|
||||||
// location.href = "login.html";
|
// location.href = "login.html";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
sourceText(v) {
|
sourceText(v) {
|
||||||
if (v) {
|
if (v) {
|
||||||
// _.debounce(this.translate, 500)
|
// _.debounce(this.translate, 500)
|
||||||
this.translate();
|
this.translate();
|
||||||
} else {
|
} else {
|
||||||
source.cancel("取消请求");
|
source.cancel("取消请求");
|
||||||
this.targetText = "";
|
this.targetText = "";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
languageCurrent() {
|
languageCurrent() {
|
||||||
const current = this.languageTotalData[this.engine.key];
|
const current = this.languageTotalData[this.engine.key];
|
||||||
const copyCurrent = {};
|
const copyCurrent = {};
|
||||||
if (this.serachKeywords) {
|
if (this.serachKeywords) {
|
||||||
Object.keys(current).forEach((key) => {
|
Object.keys(current).forEach((key) => {
|
||||||
// console.log('current[key]', current[key])
|
// console.log('current[key]', current[key])
|
||||||
if (current[key].indexOf(this.serachKeywords) > -1) {
|
if (current[key].indexOf(this.serachKeywords) > -1) {
|
||||||
copyCurrent[key] = current[key];
|
copyCurrent[key] = current[key];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return copyCurrent;
|
return copyCurrent;
|
||||||
}
|
}
|
||||||
return this.languageTotalData[this.engine.key];
|
return this.languageTotalData[this.engine.key];
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
copy() {
|
copy() {
|
||||||
// 模拟 输入框
|
// 模拟 输入框
|
||||||
var cInput = document.createElement("input");
|
var cInput = document.createElement("input");
|
||||||
cInput.value = this.targetText;
|
cInput.value = this.targetText;
|
||||||
document.body.appendChild(cInput);
|
document.body.appendChild(cInput);
|
||||||
cInput.select(); // 选取文本框内容
|
cInput.select(); // 选取文本框内容
|
||||||
|
|
||||||
// 执行浏览器复制命令
|
// 执行浏览器复制命令
|
||||||
// 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签)
|
// 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签)
|
||||||
// Input要在正常的编辑状态下原生复制方法才会生效
|
// Input要在正常的编辑状态下原生复制方法才会生效
|
||||||
|
|
||||||
document.execCommand("copy");
|
document.execCommand("copy");
|
||||||
layer.msg("复制成功");
|
layer.msg("复制成功");
|
||||||
// 复制成功后再将构造的标签 移除
|
// 复制成功后再将构造的标签 移除
|
||||||
document.body.removeChild(cInput);
|
document.body.removeChild(cInput);
|
||||||
},
|
},
|
||||||
onShowLanguage(left, boolean, key) {
|
onShowLanguage(left, boolean, key) {
|
||||||
this.languageRowLeft = left ? left : "100px";
|
this.languageRowLeft = left ? left : "100px";
|
||||||
this.languageShow = boolean;
|
this.languageShow = boolean;
|
||||||
this.currentKey = key;
|
this.currentKey = key;
|
||||||
},
|
},
|
||||||
onSelectEngine(e) {
|
onSelectEngine(e) {
|
||||||
this.engine = e;
|
this.engine = e;
|
||||||
const firstEntry = Object.entries(this.languageCurrent)[0];
|
const firstEntry = Object.entries(this.languageCurrent)[0];
|
||||||
this.targetLanguage = {
|
this.targetLanguage = {
|
||||||
key: firstEntry[0],
|
key: firstEntry[0],
|
||||||
name: this.languageCurrent[firstEntry[0]],
|
name: this.languageCurrent[firstEntry[0]],
|
||||||
};
|
};
|
||||||
this.translate();
|
this.translate();
|
||||||
},
|
},
|
||||||
getLanguage() {
|
getLanguage() {
|
||||||
axios.get("/api/translate/getLanguages").then((res) => {
|
axios.get("/api/translate/getLanguages").then((res) => {
|
||||||
if (res.data.code == 1) {
|
if (res.data.code == 1) {
|
||||||
this.languageTotalData = res.data.data;
|
this.languageTotalData = res.data.data;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
translate: _.debounce(function () {
|
translate: _.debounce(function () {
|
||||||
source.cancel("取消请求");
|
source.cancel("取消请求");
|
||||||
source = axios.CancelToken.source();
|
source = axios.CancelToken.source();
|
||||||
const that = this;
|
const that = this;
|
||||||
if (!this.sourceText) {
|
if (!this.sourceText) {
|
||||||
that.targetText = "";
|
that.targetText = "";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
axios
|
axios
|
||||||
.post(
|
.post(
|
||||||
"/api/translate/index",
|
"/api/translate/index",
|
||||||
{
|
{
|
||||||
keywords: this.sourceText,
|
keywords: this.sourceText,
|
||||||
targetLanguage: this.targetLanguage.key,
|
targetLanguage: this.targetLanguage.key,
|
||||||
type: this.engine.value, // 0 :deepl, 1:谷歌 2:百度
|
type: this.engine.value, // 0 :deepl, 1:谷歌 2:百度
|
||||||
},
|
},
|
||||||
{ cancelToken: source.token }
|
{ cancelToken: source.token }
|
||||||
)
|
)
|
||||||
.then(function (res) {
|
.then(function (res) {
|
||||||
console.log(res.data.data.text);
|
console.log(res.data.data.text);
|
||||||
if (res.data.code == 1) {
|
if (res.data.code == 1) {
|
||||||
that.targetText = res.data.data.text;
|
that.targetText = res.data.data.text;
|
||||||
if (!this.sourceText) {
|
if (!this.sourceText) {
|
||||||
this.targetText = "";
|
this.targetText = "";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
that.targetText = "";
|
that.targetText = "";
|
||||||
layer.msg(res.data.info);
|
layer.msg(res.data.info);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(function (err) {
|
.catch(function (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
});
|
});
|
||||||
}, 800),
|
}, 800),
|
||||||
onSelectLanguage(e) {
|
onSelectLanguage(e) {
|
||||||
this[this.currentKey] = {
|
this[this.currentKey] = {
|
||||||
key: e,
|
key: e,
|
||||||
name: this.languageCurrent[e],
|
name: this.languageCurrent[e],
|
||||||
};
|
};
|
||||||
this.languageShow = false;
|
this.languageShow = false;
|
||||||
this.translate();
|
this.translate();
|
||||||
},
|
},
|
||||||
onSwitch() {
|
onSwitch() {
|
||||||
const copySource = JSON.parse(JSON.stringify(this.sourceLanguage));
|
const copySource = JSON.parse(JSON.stringify(this.sourceLanguage));
|
||||||
const copyTarget = JSON.parse(JSON.stringify(this.targetLanguage));
|
const copyTarget = JSON.parse(JSON.stringify(this.targetLanguage));
|
||||||
this.targetLanguage = copySource;
|
this.targetLanguage = copySource;
|
||||||
this.sourceLanguage = copyTarget;
|
this.sourceLanguage = copyTarget;
|
||||||
},
|
},
|
||||||
onInput(e) {
|
onInput(e) {
|
||||||
if (this.sourceText) {
|
if (this.sourceText) {
|
||||||
// _.debounce(this.translate, 500)
|
// _.debounce(this.translate, 500)
|
||||||
this.translate();
|
this.translate();
|
||||||
} else {
|
} else {
|
||||||
this.targetText = "";
|
this.targetText = "";
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<div class="public-footer">
|
<div class="public-footer">
|
||||||
<div class="w1200">
|
<div class="w1200">
|
||||||
<div class="left"><img src="static/picture/logo.png" alt="" /></div>
|
<div class="left"><img src="static/picture/logo.png" alt="" /></div>
|
||||||
<div
|
<div
|
||||||
style="
|
style="
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
line-height: 23px;
|
line-height: 23px;
|
||||||
padding-left: 100px;
|
padding-left: 100px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<p style="color: #fff; font-size: 12px"><span>关于我们:</span></p>
|
<p style="color: #fff; font-size: 12px"><span>官方频道:@apiapl_news</span></p>
|
||||||
<p style="color: #fff; font-size: 12px">
|
<p style="color: #fff; font-size: 12px"><span>咨询客服:@apiapl</span></p>
|
||||||
<span></span>
|
<span></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="right" style="white-space: nowrap">
|
<div class="right" style="white-space: nowrap">
|
||||||
<p></p>
|
<p></p>
|
||||||
<p><span>联系我们:</span></p>
|
|
||||||
<p><span>地址:</span></p>
|
<p><span>技术服务:@apiapl_sdk</span></p>
|
||||||
<p><span></span></p>
|
<p><span>联系邮箱:info@apiapl.com</span></p>
|
||||||
<p class=""><span>电话: </span></p>
|
<p class=""><span>联系电话:+18435173355 </span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
<a href="https://beian.miit.gov.cn/" target="blank"
|
<a href="https://beian.miit.gov.cn/" target="blank"
|
||||||
></a
|
></a
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1700,6 +1700,39 @@
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.service-modal .content-normal{
|
||||||
|
background-color: white;
|
||||||
|
border-radius: 10px;
|
||||||
|
height: 442px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 444px;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 45px 15px 15px;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-modal .content-normal .content-item {
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 3px;
|
||||||
|
/* border: solid .5px #6c75e1; */
|
||||||
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-modal .content-normal .content-item:hover{
|
||||||
|
transform: translateY(-5px); /* 向上浮动一点 */
|
||||||
|
box-shadow: 0 4px 12px rgb(65 63 63 / 10%);
|
||||||
|
transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service-modal .content-normal .content-item:not(:first-child){
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.service-modal .content {
|
.service-modal .content {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -1732,7 +1765,7 @@
|
|||||||
line-height: 25px;
|
line-height: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service-modal .content .close {
|
.service-modal .content .close,.service-modal .content-normal .close {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 16px;
|
top: 16px;
|
||||||
right: 16px;
|
right: 16px;
|
||||||
@ -3003,7 +3036,7 @@
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-overlay {
|
.modal-overlay,.modal-overlay-record {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
|
|||||||
BIN
static/image/clock.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
@ -1,2 +1,2 @@
|
|||||||
|
|
||||||
axios.defaults.baseURL = 'http://localhost:8085/api/v1';
|
axios.defaults.baseURL = 'http://localhost:8085/api/v1';
|
||||||
10
static/js/countdown.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/*!
|
||||||
|
* vue-countdown v1.1.5
|
||||||
|
* https://fengyuanchen.github.io/vue-countdown
|
||||||
|
*
|
||||||
|
* Copyright 2018-present Chen Fengyuan
|
||||||
|
* Released under the MIT license
|
||||||
|
*
|
||||||
|
* Date: 2020-02-25T01:19:32.769Z
|
||||||
|
*/
|
||||||
|
!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t=t||self).VueCountdown=i()}(this,function(){"use strict";var t=1e3,i=6e4,s=36e5,e="visibilitychange";return{name:"countdown",data:function(){return{counting:!1,endTime:0,totalMilliseconds:0}},props:{autoStart:{type:Boolean,default:!0},emitEvents:{type:Boolean,default:!0},interval:{type:Number,default:1e3,validator:function(t){return 0<=t}},now:{type:Function,default:function(){return Date.now()}},tag:{type:String,default:"span"},time:{type:Number,default:0,validator:function(t){return 0<=t}},transform:{type:Function,default:function(t){return t}}},computed:{days:function(){return Math.floor(this.totalMilliseconds/864e5)},hours:function(){return Math.floor(this.totalMilliseconds%864e5/s)},minutes:function(){return Math.floor(this.totalMilliseconds%s/i)},seconds:function(){return Math.floor(this.totalMilliseconds%i/t)},milliseconds:function(){return Math.floor(this.totalMilliseconds%t)},totalDays:function(){return this.days},totalHours:function(){return Math.floor(this.totalMilliseconds/s)},totalMinutes:function(){return Math.floor(this.totalMilliseconds/i)},totalSeconds:function(){return Math.floor(this.totalMilliseconds/t)}},render:function(t){return t(this.tag,this.$scopedSlots.default?[this.$scopedSlots.default(this.transform({days:this.days,hours:this.hours,minutes:this.minutes,seconds:this.seconds,milliseconds:this.milliseconds,totalDays:this.totalDays,totalHours:this.totalHours,totalMinutes:this.totalMinutes,totalSeconds:this.totalSeconds,totalMilliseconds:this.totalMilliseconds}))]:this.$slots.default)},watch:{$props:{deep:!0,immediate:!0,handler:function(){this.totalMilliseconds=this.time,this.endTime=this.now()+this.time,this.autoStart&&this.start()}}},methods:{start:function(){this.counting||(this.counting=!0,this.emitEvents&&this.$emit("start"),"visible"===document.visibilityState&&this.continue())},continue:function(){var e=this;if(this.counting){var n=Math.min(this.totalMilliseconds,this.interval);if(0<n)if(window.requestAnimationFrame){var o,a;this.requestId=requestAnimationFrame(function t(i){a=a||i;var s=i-(o=o||i);n<=s||n<=s+(i-a)/2?e.progress():e.requestId=requestAnimationFrame(t),a=i})}else this.timeoutId=setTimeout(function(){e.progress()},n);else this.end()}},pause:function(){window.requestAnimationFrame?cancelAnimationFrame(this.requestId):clearTimeout(this.timeoutId)},progress:function(){this.counting&&(this.totalMilliseconds-=this.interval,this.emitEvents&&0<this.totalMilliseconds&&this.$emit("progress",{days:this.days,hours:this.hours,minutes:this.minutes,seconds:this.seconds,milliseconds:this.milliseconds,totalDays:this.totalDays,totalHours:this.totalHours,totalMinutes:this.totalMinutes,totalSeconds:this.totalSeconds,totalMilliseconds:this.totalMilliseconds}),this.continue())},abort:function(){this.counting&&(this.pause(),this.counting=!1,this.emitEvents&&this.$emit("abort"))},end:function(){this.counting&&(this.pause(),this.totalMilliseconds=0,this.counting=!1,this.emitEvents&&this.$emit("end"))},update:function(){this.counting&&(this.totalMilliseconds=Math.max(0,this.endTime-this.now()))},handleVisibilityChange:function(){switch(document.visibilityState){case"visible":this.update(),this.continue();break;case"hidden":this.pause()}}},mounted:function(){document.addEventListener(e,this.handleVisibilityChange)},beforeDestroy:function(){document.removeEventListener(e,this.handleVisibilityChange),this.pause()}}});
|
||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 42 KiB |