Browse Source

初始化

layui
liaoxinyu 2 years ago
commit
9960c48a69
  1. 23
      .gitignore
  2. 24
      README.md
  3. 3
      babel.config.js
  4. 19
      jsconfig.json
  5. 8798
      package-lock.json
  6. 58
      package.json
  7. BIN
      public/favicon.ico
  8. 24
      public/index.html
  9. 1
      public/layui/css/layui.css
  10. 1
      public/layui/css/modules/code.css
  11. 1
      public/layui/css/modules/laydate/default/laydate.css
  12. BIN
      public/layui/css/modules/layer/default/icon-ext.png
  13. BIN
      public/layui/css/modules/layer/default/icon.png
  14. 1
      public/layui/css/modules/layer/default/layer.css
  15. BIN
      public/layui/css/modules/layer/default/loading-0.gif
  16. BIN
      public/layui/css/modules/layer/default/loading-1.gif
  17. BIN
      public/layui/css/modules/layer/default/loading-2.gif
  18. BIN
      public/layui/font/iconfont.eot
  19. 554
      public/layui/font/iconfont.svg
  20. BIN
      public/layui/font/iconfont.ttf
  21. BIN
      public/layui/font/iconfont.woff
  22. BIN
      public/layui/font/iconfont.woff2
  23. 5
      public/layui/layui.js
  24. BIN
      public/static/kline/font/iconfont.woff2
  25. 102
      public/static/kline/index.html
  26. 306
      public/static/kline/src/cache.js
  27. 68
      public/static/kline/src/common.js
  28. 2
      public/static/kline/src/css/modules/layer/default/layer.css
  29. 985
      public/static/kline/src/iconfont.css
  30. 1
      public/static/kline/src/iconfont.js
  31. 160
      public/static/kline/src/index.css
  32. 170
      public/static/kline/src/index.js
  33. 2
      public/static/kline/src/jquery-3.4.1.min.js
  34. 233
      public/static/kline/src/kline.css
  35. 327
      public/static/kline/src/klineCharts.js
  36. 7
      public/static/kline/src/klinecharts.min.js
  37. 18
      public/static/kline/src/lang.js
  38. 2
      public/static/kline/src/lay/modules/element.js
  39. 2
      public/static/kline/src/lay/modules/form.js
  40. BIN
      public/static/kline/src/lay/modules/iconfont.woff2
  41. BIN
      public/static/kline/src/lay/modules/iconfont.woff2 2
  42. 2
      public/static/kline/src/lay/modules/layer.js
  43. 2
      public/static/kline/src/layer.css
  44. 2
      public/static/kline/src/layui.css
  45. 2
      public/static/kline/src/layui.js
  46. 70
      public/static/kline/src/public(1).css
  47. 174
      public/static/kline/src/public.css
  48. 762
      public/static/kline/src/soulTable.css
  49. 32
      src/App.vue
  50. BIN
      src/assets/logo.png
  51. 48
      src/components/HelloWorld.vue
  52. 12
      src/main.js
  53. 26
      src/router/index.js
  54. 12
      src/store/index.js
  55. 5
      src/views/AboutView.vue
  56. 126
      src/views/HomeView.vue
  57. 27
      vue.config.js

23
.gitignore

@ -0,0 +1,23 @@
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

24
README.md

@ -0,0 +1,24 @@
# vue
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).

3
babel.config.js

@ -0,0 +1,3 @@
module.exports = {
presets: ["@vue/cli-plugin-babel/preset"],
};

19
jsconfig.json

@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}

8798
package-lock.json

File diff suppressed because it is too large

58
package.json

@ -0,0 +1,58 @@
{
"name": "vue",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.19.2",
"core-js": "^3.8.3",
"element-ui": "^2.15.10",
"jquery": "^3.7.1",
"layui-src": "^2.6.8",
"less": "^3.10.3",
"vue": "^2.6.14",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.0.3",
"prettier": "^2.4.1",
"vue-template-compiler": "^2.6.14",
"less": "^3.10.3",
"less-loader": "^5.0.0"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended",
"plugin:prettier/recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}

BIN
public/favicon.ico

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

24
public/index.html

@ -0,0 +1,24 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="stylesheet" href="./layui/css/layui.css" />
<!-- <script src="../static/kline/src/klinecharts.min.js"></script> -->
<script src="<%= BASE_URL %>static/kline/src/jquery-3.4.1.min.js"></script>
<script src="<%= BASE_URL %>static/kline/src/klinecharts.min.js"></script>
<script src="<%= BASE_URL %>static/kline/src/klinecharts.js"></script>
<script src="<%= BASE_URL %>static/kline/src/lang.js"></script>
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
<script src="./layui/layui.js"></script>
</body>
</html>

1
public/layui/css/layui.css

File diff suppressed because one or more lines are too long

1
public/layui/css/modules/code.css

@ -0,0 +1 @@
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:40px;line-height:40px;border-bottom:1px solid #eee}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 10px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view .layui-code-ol li:first-child{padding-top:10px}.layui-code-view .layui-code-ol li:last-child{padding-bottom:10px}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}.layui-code-demo .layui-code{visibility:visible!important;margin:-15px;border-top:none;border-right:none;border-bottom:none}.layui-code-demo .layui-tab-content{padding:15px;border-top:none}

1
public/layui/css/modules/laydate/default/laydate.css

File diff suppressed because one or more lines are too long

BIN
public/layui/css/modules/layer/default/icon-ext.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
public/layui/css/modules/layer/default/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

1
public/layui/css/modules/layer/default/layer.css

File diff suppressed because one or more lines are too long

BIN
public/layui/css/modules/layer/default/loading-0.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
public/layui/css/modules/layer/default/loading-1.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

BIN
public/layui/css/modules/layer/default/loading-2.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
public/layui/font/iconfont.eot

Binary file not shown.

554
public/layui/font/iconfont.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 299 KiB

BIN
public/layui/font/iconfont.ttf

Binary file not shown.

BIN
public/layui/font/iconfont.woff

Binary file not shown.

BIN
public/layui/font/iconfont.woff2

Binary file not shown.

5
public/layui/layui.js

File diff suppressed because one or more lines are too long

BIN
public/static/kline/font/iconfont.woff2

Binary file not shown.

102
public/static/kline/index.html

@ -0,0 +1,102 @@
<!DOCTYPE html>
<!-- saved from url=(0048)https://kline.rsncoin.com/index/index/index/id/5 -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>KLINES OF DFICOINS</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<!-- <link rel="icon" href="https://kline.rsncoin.com/favicon.ico">-->
<link rel="stylesheet" href="./src/layui.css">
<link rel="stylesheet" href="./src/public.css">
<link rel="stylesheet" href="./src/iconfont.css">
<link rel="stylesheet" href="./src/index.css">
<link rel="stylesheet" href="./src/public(1).css">
<link rel="stylesheet" href="./src/soulTable.css">
<script src="./src/jquery-3.4.1.min.js"></script>
<script src="./src/json3.min.js"></script>
<script type="text/javascript" src="./src/layui.js"></script>
<script type="text/javascript" src="./src/cache.js"></script>
<script type="text/javascript" src="./src/index.js"></script>
<script src="./src/iconfont.js"></script>
<link id="layuicss-layer" rel="stylesheet" href="./src/layer.css" media="all">
<link rel="stylesheet" href="./src/kline.css"></link>
</head>
<body class="main_body">
<div class="layui-layout layui-layout-admin">
<!-- 左侧导航 -->
<div class="layui-side layui-bg-black" style="top: 0 !important;">
<p class="market_list border-bottom-grey" style="color: #1AA094">交易市场</p>
<a href="index.html"><p class="market_list border-bottom-grey">PYTNUSDT</p></a>
<a href="oige.html"><p class="market_list border-bottom-grey">OIGEUSDT</p></a>
<a href="gql.html"><p class="market_list border-bottom-grey">GQLUSDT</p></a>
<a href="rpn.html"><p class="market_list border-bottom-grey">RPNUSDT</p></a>
</div>
<!-- 右侧内容 -->
<div class="layui-body" style="top: 0 !important;bottom:0">
<blockquote class="layui-elem-quote title">
PYTNUSDT
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="1"
style="margin-left:20px;">1分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="5">5分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn active" type="button"
data-interval="15">15分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="30">
30分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="60">1小时
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="240">
4小时
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="D">
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button" data-interval="W">
</button>
</blockquote>
<div id="kc-container">
</div>
</div>
<!-- 移动导航 -->
<div class="site-tree-mobile"><i class="layui-icon"></i></div>
<div class="site-mobile-shade"></div>
<script src="./src/common.js"></script>
</div>
<script type="text/javascript" src="./src/lang.js"></script>
<script type="text/javascript" src="./src/klinecharts.min.js"></script>
<script src="./src/klineCharts.js"></script>
<script>
var loading_index = null;
layui.use('layer', function () {
layer = layui.layer;
kcStart({
containerId: 'kc-container',
symbol: 'PYTN',
coinScale: parseInt('5'), // 计价币种精度
volumeScale: parseInt('5'), // 成交量精度保留
interval: '15',
timezone: "America/Toronto",
language: 'zh_TW'
})
})
</script>
<!-- <div class="layui-layer-move"></div>
<div class="ileft" title="按[ESC]切换展示和隐藏IP,双击复制IP, 双击[F4]去项目主页" id="chrome-website-ip" style="display: none;">本机地址
<div id="chrome-website-ip-value">127.0.0.1</div>
</div> -->
</body>
</html>

306
public/static/kline/src/cache.js

@ -0,0 +1,306 @@
var cacheStr = window.sessionStorage.getItem("cache"),
oneLoginStr = window.sessionStorage.getItem("oneLogin");
layui.use(['form','jquery',"layer"],function() {
var form = layui.form,
$ = layui.jquery,
layer = parent.layer === undefined ? layui.layer : top.layer;
//判断是否web端打开
if(!/http(s*):\/\//.test(location.href)){
layer.alert("请先将项目部署到 localhost 下再进行访问【建议通过tomcat、webstorm、hb等方式运行,不建议通过iis方式运行】,否则部分数据将无法显示");
}else{ //判断是否处于锁屏状态【如果关闭以后则未关闭浏览器之前不再显示】
if(window.sessionStorage.getItem("lockcms") != "true" && window.sessionStorage.getItem("showNotice") != "true"){
//showNotice();
}
}
//判断是否设置过头像,如果设置过则修改顶部、左侧和个人资料中的头像,否则使用默认头像
if(window.sessionStorage.getItem('userFace') && $(".userAvatar").length > 0){
$("#userFace").attr("src",window.sessionStorage.getItem('userFace'));
$(".userAvatar").attr("src",$(".userAvatar").attr("src").split("images/")[0] + "images/" + window.sessionStorage.getItem('userFace').split("images/")[1]);
}else{
$("#userFace").attr("src","../../images/face.jpg");
}
//公告层
function showNotice(){
layer.open({
type: 1,
title: "系统公告",
area: '300px',
shade: 0.8,
id: 'LAY_layuipro',
btn: ['火速围观'],
moveType: 1,
content: '<div style="padding:15px 20px; text-align:justify; line-height: 22px; text-indent:2em;border-bottom:1px solid #e2e2e2;"><p class="layui-red">请使用模版前请务必仔细阅读首页右下角的《更新日志》,避免使用中遇到一些简单的问题造成困扰。</p></pclass></p><p>1.0发布以后发现很多朋友将代码上传到各种素材网站,当然这样帮我宣传我谢谢大家,但是有部分朋友上传到素材网站后将下载分值设置的相对较高,需要朋友们充钱才能下载。本人发现后通过和站长、网站管理员联系以后将分值调整为不需要充值才能下载或者直接免费下载。在此郑重提示各位:<span class="layui-red">本模版已进行作品版权证明,不管以何种形式获取的源码,请勿进行出售或者上传到任何素材网站,否则将追究相应的责任。</span></p></div>',
success: function(layero){
var btn = layero.find('.layui-layer-btn');
btn.css('text-align', 'center');
btn.on("click",function(){
tipsShow();
});
},
cancel: function(index, layero){
tipsShow();
}
});
}
function tipsShow(){
window.sessionStorage.setItem("showNotice","true");
if($(window).width() > 432){ //如果页面宽度不足以显示顶部“系统公告”按钮,则不提示
layer.tips('系统公告躲在了这里', '#userInfo', {
tips: 3,
time : 1000
});
}
}
$(".showNotice").on("click",function(){
showNotice();
})
//锁屏
function lockPage(){
layer.open({
title : false,
type : 1,
content : '<div class="admin-header-lock" id="lock-box">'+
'<div class="admin-header-lock-img"><img src="images/face.jpg" class="userAvatar"/></div>'+
'<div class="admin-header-lock-name" id="lockUserName">驊驊龔頾</div>'+
'<div class="input_btn">'+
'<input type="password" class="admin-header-lock-input layui-input" autocomplete="off" placeholder="请输入密码解锁.." name="lockPwd" id="lockPwd" />'+
'<button class="layui-btn" id="unlock">解锁</button>'+
'</div>'+
'<p>请输入“123456”,否则不会解锁成功哦!!!</p>'+
'</div>',
closeBtn : 0,
shade : 0.9,
success : function(){
//判断是否设置过头像,如果设置过则修改顶部、左侧和个人资料中的头像,否则使用默认头像
if(window.sessionStorage.getItem('userFace') && $(".userAvatar").length > 0){
$(".userAvatar").attr("src",$(".userAvatar").attr("src").split("images/")[0] + "images/" + window.sessionStorage.getItem('userFace').split("images/")[1]);
}
}
})
$(".admin-header-lock-input").focus();
}
$(".lockcms").on("click",function(){
window.sessionStorage.setItem("lockcms",true);
lockPage();
})
// 判断是否显示锁屏
if(window.sessionStorage.getItem("lockcms") == "true"){
lockPage();
}
// 解锁
$("body").on("click","#unlock",function(){
if($(this).siblings(".admin-header-lock-input").val() == ''){
layer.msg("请输入解锁密码!");
$(this).siblings(".admin-header-lock-input").focus();
}else{
if($(this).siblings(".admin-header-lock-input").val() == "123456"){
window.sessionStorage.setItem("lockcms",false);
$(this).siblings(".admin-header-lock-input").val('');
layer.closeAll("page");
}else{
layer.msg("密码错误,请重新输入!");
$(this).siblings(".admin-header-lock-input").val('').focus();
}
}
});
$(document).on('keydown', function(event) {
var event = event || window.event;
if(event.keyCode == 13) {
$("#unlock").click();
}
});
//退出
$(".signOut").click(function(){
window.sessionStorage.removeItem("menu");
menu = [];
window.sessionStorage.removeItem("curmenu");
})
//功能设定
$(".functionSetting").click(function(){
layer.open({
title: "功能设定",
area: ["380px", "280px"],
type: "1",
content : '<div class="functionSrtting_box">'+
'<form class="layui-form">'+
'<div class="layui-form-item">'+
'<label class="layui-form-label">开启Tab缓存</label>'+
'<div class="layui-input-block">'+
'<input type="checkbox" name="cache" lay-skin="switch" lay-text="开|关">'+
'<div class="layui-word-aux">开启后刷新页面不关闭打开的Tab页</div>'+
'</div>'+
'</div>'+
'<div class="layui-form-item">'+
'<label class="layui-form-label">Tab切换刷新</label>'+
'<div class="layui-input-block">'+
'<input type="checkbox" name="changeRefresh" lay-skin="switch" lay-text="开|关">'+
'<div class="layui-word-aux">开启后切换窗口刷新当前页面</div>'+
'</div>'+
'</div>'+
'<div class="layui-form-item">'+
'<label class="layui-form-label">单一登陆</label>'+
'<div class="layui-input-block">'+
'<input type="checkbox" name="oneLogin" lay-filter="multipleLogin" lay-skin="switch" lay-text="是|否">'+
'<div class="layui-word-aux">开启后不可同时多个地方登录</div>'+
'</div>'+
'</div>'+
'<div class="layui-form-item skinBtn">'+
'<a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="" lay-filter="settingSuccess">设定完成</a>'+
'<a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-primary" lay-submit="" lay-filter="noSetting">朕再想想</a>'+
'</div>'+
'</form>'+
'</div>',
success : function(index, layero){
//如果之前设置过,则设置它的值
$(".functionSrtting_box input[name=cache]").prop("checked",cacheStr=="true" ? true : false);
$(".functionSrtting_box input[name=changeRefresh]").prop("checked",changeRefreshStr=="true" ? true : false);
$(".functionSrtting_box input[name=oneLogin]").prop("checked",oneLoginStr=="true" ? true : false);
//设定
form.on("submit(settingSuccess)",function(data){
window.sessionStorage.setItem("cache",data.field.cache=="on" ? "true" : "false");
window.sessionStorage.setItem("changeRefresh",data.field.changeRefresh=="on" ? "true" : "false");
window.sessionStorage.setItem("oneLogin",data.field.oneLogin=="on" ? "true" : "false");
window.sessionStorage.removeItem("menu");
window.sessionStorage.removeItem("curmenu");
location.reload();
return false;
});
//取消设定
form.on("submit(noSetting)",function(){
layer.closeAll("page");
});
//单一登陆提示
form.on('switch(multipleLogin)', function(data){
layer.tips('温馨提示:此功能需要开发配合,所以没有功能演示,敬请谅解', data.othis,{tips: 1})
});
form.render(); //表单渲染
}
})
})
//判断是否修改过系统基本设置,去显示底部版权信息
if(window.sessionStorage.getItem("systemParameter")){
systemParameter = JSON.parse(window.sessionStorage.getItem("systemParameter"));
$(".footer p span").text(systemParameter.powerby);
}
//更换皮肤
function skins(){
var skin = window.sessionStorage.getItem("skin");
if(skin){ //如果更换过皮肤
if(window.sessionStorage.getItem("skinValue") != "自定义"){
$("body").addClass(window.sessionStorage.getItem("skin"));
}else{
$(".layui-layout-admin .layui-header").css("background-color",skin.split(',')[0]);
$(".layui-bg-black").css("background-color",skin.split(',')[1]);
$(".hideMenu").css("background-color",skin.split(',')[2]);
}
}
}
skins();
$(".changeSkin").click(function(){
layer.open({
title : "更换皮肤",
area : ["310px","280px"],
type : "1",
content : '<div class="skins_box">'+
'<form class="layui-form">'+
'<div class="layui-form-item">'+
'<input type="radio" name="skin" value="默认" title="默认" lay-filter="default" checked="">'+
'<input type="radio" name="skin" value="橙色" title="橙色" lay-filter="orange">'+
'<input type="radio" name="skin" value="蓝色" title="蓝色" lay-filter="blue">'+
'<input type="radio" name="skin" value="自定义" title="自定义" lay-filter="custom">'+
'<div class="skinCustom">'+
'<input type="text" class="layui-input topColor" name="topSkin" placeholder="顶部颜色" />'+
'<input type="text" class="layui-input leftColor" name="leftSkin" placeholder="左侧颜色" />'+
'<input type="text" class="layui-input menuColor" name="btnSkin" placeholder="顶部菜单按钮" />'+
'</div>'+
'</div>'+
'<div class="layui-form-item skinBtn">'+
'<a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="" lay-filter="changeSkin">确定更换</a>'+
'<a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-primary" lay-submit="" lay-filter="noChangeSkin">朕再想想</a>'+
'</div>'+
'</form>'+
'</div>',
success : function(index, layero){
var skin = window.sessionStorage.getItem("skin");
if(window.sessionStorage.getItem("skinValue")){
$(".skins_box input[value="+window.sessionStorage.getItem("skinValue")+"]").attr("checked","checked");
};
if($(".skins_box input[value=自定义]").attr("checked")){
$(".skinCustom").css("visibility","inherit");
$(".topColor").val(skin.split(',')[0]);
$(".leftColor").val(skin.split(',')[1]);
$(".menuColor").val(skin.split(',')[2]);
};
form.render();
$(".skins_box").removeClass("layui-hide");
$(".skins_box .layui-form-radio").on("click",function(){
var skinColor;
if($(this).find("div").text() == "橙色"){
skinColor = "orange";
}else if($(this).find("div").text() == "蓝色"){
skinColor = "blue";
}else if($(this).find("div").text() == "默认"){
skinColor = "";
}
if($(this).find("div").text() != "自定义"){
$(".topColor,.leftColor,.menuColor").val('');
$("body").removeAttr("class").addClass("main_body "+skinColor+"");
$(".skinCustom").removeAttr("style");
$(".layui-bg-black,.hideMenu,.layui-layout-admin .layui-header").removeAttr("style");
}else{
$(".skinCustom").css("visibility","inherit");
}
})
var skinStr,skinColor;
$(".topColor").blur(function(){
$(".layui-layout-admin .layui-header").css("background-color",$(this).val()+" !important");
})
$(".leftColor").blur(function(){
$(".layui-bg-black").css("background-color",$(this).val()+" !important");
})
$(".menuColor").blur(function(){
$(".hideMenu").css("background-color",$(this).val()+" !important");
})
form.on("submit(changeSkin)",function(data){
if(data.field.skin != "自定义"){
if(data.field.skin == "橙色"){
skinColor = "orange";
}else if(data.field.skin == "蓝色"){
skinColor = "blue";
}else if(data.field.skin == "默认"){
skinColor = "";
}
window.sessionStorage.setItem("skin",skinColor);
}else{
skinStr = $(".topColor").val()+','+$(".leftColor").val()+','+$(".menuColor").val();
window.sessionStorage.setItem("skin",skinStr);
$("body").removeAttr("class").addClass("main_body");
}
window.sessionStorage.setItem("skinValue",data.field.skin);
layer.closeAll("page");
});
form.on("submit(noChangeSkin)",function(){
$("body").removeAttr("class").addClass("main_body "+window.sessionStorage.getItem("skin")+"");
$(".layui-bg-black,.hideMenu,.layui-layout-admin .layui-header").removeAttr("style");
skins();
layer.closeAll("page");
});
},
cancel : function(){
$("body").removeAttr("class").addClass("main_body "+window.sessionStorage.getItem("skin")+"");
$(".layui-bg-black,.hideMenu,.layui-layout-admin .layui-header").removeAttr("style");
skins();
}
})
})
})

68
public/static/kline/src/common.js

@ -0,0 +1,68 @@
$('body').on('click', '.layer-close, .layer-close1, .layer-close2', function(){
console.log('asd');
layer.close(layer_index);
})
function get_image_url(img, path, default_str){
if(img == '' || img == null || img == undefined) return default_str || '';
img = $.trim(img);
img_t = img.toLowerCase();
if(img_t.indexOf('http') === 0){
return img;
}
return (path || '') + img;
}
function checkValue(field, value){
if(field == 'mobile'){
var reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
if(reg.test(value)) {
return true;
}else{return false;}
}
else if(field == 'number'){
var reg = /^[0-9]+\.?[0-9]*$/;
if(reg.test(value)) {
return true;
}else{return false;}
}
else if(field == 'idcard'){
var reg = /^[0-9]{18}$/;
if(reg.test(value)) {
return true;
}else{return false;}
}
}
function timestampToTime(timestamp, format, date_s) {
if(timestamp == undefined || timestamp == null || timestamp == '' || timestamp == 0) return '';
if(format == undefined || format == null) format = 'all';
var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
Y = date.getFullYear();
M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
D = change(date.getDate());
h = change(date.getHours());
m = change(date.getMinutes());
s = change(date.getSeconds());
date_s = date_s || '-';
if(format == 'Y'){
return Y;
}
else if(format == 'full'){
return Y + date_s + M + date_s + D + ' ' + h + ':' + m;
}
else if(format == 'all'){
return Y + date_s + M + date_s + D + ' ' + h + ':' + m + ':' + s;
}
else if(format == 'date'){
return Y + date_s + M + date_s + D;
}
else return M + date_s + D;// + h + m + s;
}
function change(t) {
if (t < 10) {
return "0" + t;
} else {
return t;
}
}

2
public/static/kline/src/css/modules/layer/default/layer.css

File diff suppressed because one or more lines are too long

985
public/static/kline/src/iconfont.css

File diff suppressed because one or more lines are too long

1
public/static/kline/src/iconfont.js

File diff suppressed because one or more lines are too long

160
public/static/kline/src/index.css

@ -0,0 +1,160 @@
/*公共样式*/
.header .layui-nav-child{ z-index:99999; top:60px; left: auto; right: 0;}
.seraph{ font-size:16px !important;}
.main_body{ min-width:320px; }
.layui-nav .layui-nav-item a{ cursor:pointer;}
.layui-nav .layui-nav-item>a{ color:rgba(255,255,255,1); max-height:60px;}
.layui-layer-tab .layui-layer-title span{ padding:0 !important;}
/*iframe{ position:absolute; height:100%; width:100%; border:none;}*/
.top_menu.layui-nav .layui-nav-child dd.layui-this a,.closeBox.layui-nav .layui-nav-child dd.layui-this a,.closeBox .layui-nav-child dd.layui-this,.top_menu .layui-nav-child dd.layui-this{ background:none; color:#333;}
.layui-nav .layui-nav-child a:hover,.layui-nav .layui-nav-child dd.layui-this a:hover{background-color:#5FB878;color:#fff;}
/*模拟加载层图标样式*/
.layui-layer-dialog .layui-layer-content .layui-layer-ico16{ background-size:100% 100% !important; }
/*样式改变的过渡*/
.layui-body,.layui-footer,.layui-layout-admin .layui-side,.logo,.topLevelMenus li.layui-nav-item,.topLevelMenus li.layui-nav-item:hover{ transition: all 0.3s ease-in-out;-webkit-transition: all 0.3s ease-in-out;-o-transition: all 0.3s ease-in-out;-moz-transition: all 0.3s ease-in-out;-ms-transition: all 0.3s ease-in-out; }
/*隐藏*/
*[mobile],.component .layui-select-title i.layui-edge{ display:none;}
/*打开页面动画*/
.layui-tab-item.layui-show{ animation:moveTop 1s; -webkit-animation:moveTop 1s; animation-fill-mode:both; -webkit-animation-fill-mode:both; position:relative; height:100%; -webkit-overflow-scrolling: touch; overflow:auto; }
@keyframes moveTop{
0% {opacity: 0;-webkit-transform: translateY(20px);-ms-transform: translateY(20px);transform: translateY(20px);}
100% {opacity: 1;-webkit-transform: translateY(0);-ms-transform: translateY(0);transform: translateY(0);}
}
@-o-keyframes moveTop{
0% {opacity: 0;-webkit-transform: translateY(20px);-ms-transform: translateY(20px);transform: translateY(20px);}
100% {opacity: 1;-webkit-transform: translateY(0);-ms-transform: translateY(0);transform: translateY(0);}
}
@-moz-keyframes moveTop{
0% {opacity: 0;-webkit-transform: translateY(20px);-ms-transform: translateY(20px);transform: translateY(20px);}
100% {opacity: 1;-webkit-transform: translateY(0);-ms-transform: translateY(0);transform: translateY(0);}
}
@-webkit-keyframes moveTop{
0% {opacity: 0;-webkit-transform: translateY(20px);-ms-transform: translateY(20px);transform: translateY(20px);}
100% {opacity: 1;-webkit-transform: translateY(0);-ms-transform: translateY(0);transform: translateY(0);}
}
/*锁屏*/
.admin-header-lock{width: 320px; height: 170px; padding: 20px; position: relative; text-align: center;}
.admin-header-lock-img{width:70px; height:70px; margin: 0 auto;}
.admin-header-lock-img img{width:70px; height:70px; border-radius: 100%; box-shadow:0 0 30px #44576b;}
.admin-header-lock-name{color: #009688;margin: 8px 0 15px 0;}
.input_btn{ overflow: hidden; margin-bottom: 10px; }
.admin-header-lock-input{width: 170px; color: #fff;background-color: #009688; float: left; margin:0 10px 0 40px; border:none;}
.admin-header-lock-input::-webkit-input-placeholder {color:#fff;}
.admin-header-lock-input::-moz-placeholder {color:#fff;}
.admin-header-lock-input:-ms-input-placeholder {color:#fff;}
.admin-header-lock-input:-moz-placeholder {color:#fff;}
#unlock{ float: left; }
#lock-box p{ color:#e60000; }
/*顶部*/
.header{ z-index:1500;}
.logo{ color: #fff; float: left;margin: -1px 15px 0 -15px; text-align: center; width:200px;}
.logo img{width:100%;height:50px;}
.hideMenu{ float:left; width:20px; height:20px; margin-top:15px; font-size:17px; line-height:20px; text-align:center; padding:5px 5px; color:#fff; background-color:#1AA094; }
.hideMenu:hover{ color:#fff; }
.layui-nav cite{ margin-left: 5px;}
/*顶部右侧*/
.topLevelMenus{float:left;}
.topLevelMenus li.layui-nav-item:hover{ background-color:rgba(221,221,221,0.2);}
.layui-nav .layui-this:after{ bottom:-5px!important;}
.header .layui-nav-bar{top:60px !important;}
.topLevelMenus .layui-nav-item.layui-this{ background-color:rgba(0,0,0,0.5);}
.top_menu.layui-nav .layui-this:after{ width:0px; }
.top_menu .layui-nav-bar,.mobileTopLevelMenus .layui-nav-bar{background-color:rgba(0,0,0,0.7);}
#userInfo{min-width: 100px;}
/*左侧导航*/
.layui-nav{background-color: inherit !important;}
.showMenu.layui-layout-admin .layui-side{ left:-200px; }
.showMenu .layui-body,.showMenu .layui-footer{ left:0; }
/*左侧用户头像*/
.top_menu{ background-color:inherit !important; position:absolute; right:0;top:0; }
.layui-layout-admin .layui-side{ left:0; overflow:hidden;}
.user-photo{width: 200px; height: 90px;}
/*.user-photo a.img{ display: block; width:80px; height:80px; margin: 0 auto 10px;}*/
.user-photo a.img img{ display: block; border: none; width: 100%; height: 100%; border-radius: 50%; -webkit-border-radius: 50%; -moz-border-radius: 50%; border: 4px solid #44576b; box-sizing:border-box;}
.user-photo p{ display: block; width: 100%; height: 50px; color: #ffffff; text-align: center; font-size: 12px; white-space: nowrap;line-height: 50px; overflow: hidden;}
/*左侧导航重定义*/
.layui-nav-item.layui-nav-itemed{ background-color:#2B2E37 !important;}
.layui-nav-itemed:before{ width:5px; height:100%; background-color:#009688; position:absolute; content:''; left:0; top:0;}
.layui-nav-itemed .layui-nav-child a{ padding-left:40px;}
/*左侧搜索框*/
.component{ width:180px; height:30px; margin:0 auto 5px; position:relative;}
.component .layui-input{ height:30px; line-height: 30px; font-size:12px; border:none; transition: all 0.3s; background:rgba(255,255,255,0.05); }
.component .layui-input:focus{ background:#fff; color:#000; }
.component .layui-form-select dl{ top:33px; background:#fff; }
.component .layui-icon{ position: absolute; right:8px; top:8px; color:#000; }
.component dl dd{ color:#000 !important;}
.component dl dd.layui-this{ color:#fff !important;}
.component dl dd.layui-select-tips{ color:#999 !important;}
/*layui-body*/
.layui-body{overflow-y:scroll; border-top:5px solid #1AA094;border-left:2px solid #1AA094; background:#fff;padding: 10px;}
#top_tabs_box{ padding-right:138px; height:40px; border-bottom:1px solid #e2e2e2; }
#top_tabs{ position: absolute; border-bottom:none;}
/*.layui-tab-title .layui-this{ background-color:#1AA094; color:#fff; }*/
.layui-tab-title .layui-this:after{ border:none; }
.layui-tab-title li cite{ font-style: normal; padding-left:5px; }
.clildFrame.layui-tab-content{ top:41px; position:absolute; bottom:0; width:100%; padding:0;}
/*多窗口页面操作下拉*/
.closeBox{ position:absolute; right:0; background-color:#fff !important; color:#000; border-left:1px solid #e2e2e2; border-bottom:1px solid #e2e2e2; }
.closeBox .layui-nav-item{ line-height:40px; }
.closeBox .layui-nav-item>a,.closeBox .layui-nav-item>a:hover{ color:#000; }
.closeBox .layui-nav-child{ top:42px; left:-12px; }
.closeBox .layui-nav-bar{ display:none; }
.closeBox a i.caozuo{ font-size: 20px; position:absolute; top:1px; left:0; }
.closeBox a span.layui-nav-more{ border-color:#333 transparent transparent;}
.closeBox a span.layui-nav-more.layui-nav-mored{ border-color:transparent transparent #333;}
/*功能设定*/
.functionSrtting_box{ padding-top:15px;}
.functionSrtting_box .layui-form-label{ width:81px;}
.functionSrtting_box .layui-word-aux{ position:absolute;left:60px; top:9px; font-size: 12px;}
/*换肤*/
.skins_box{ padding:10px 34px 0; }
.skinBtn{ text-align:center; }
/*橙色*/
.orange .layui-layout-admin .layui-header{ background-color:orange !important; }
.orange .layui-bg-black{ background-color:#e47214 !important; }
/*蓝色*/
.blue .layui-layout-admin .layui-header{ background-color:#3396d8 !important; }
.blue .layui-bg-black,.blue .hideMenu{ background-color:#146aa2 !important; }
/*自定义*/
.skinCustom{ visibility:hidden; }
.skinCustom input{ width:48%; margin:5px 2% 5px 0; float:left; }
.orange .layui-nav-tree .layui-nav-child a,.blue .layui-nav-tree .layui-nav-child a{ color:#fff; }
.orange .top_menu.layui-nav .layui-nav-more,.blue .top_menu.layui-nav .layui-nav-more{border-color:#fff transparent transparent !important;}
.orange .top_menu.layui-nav-itemed .layui-nav-more,.orange .top_menu.layui-nav .layui-nav-mored,.blue .top_menu.layui-nav-itemed .layui-nav-more,.blue .top_menu.layui-nav .layui-nav-mored{border-color:transparent transparent #fff !important;}
/*底部*/
.footer{ text-align: center; line-height:44px;border-left: 2px solid #1AA094; z-index:999;}
/*响应式样式*/
@media screen and (max-width:1080px){
.mobileTopLevelMenus[mobile]{display:inline-block;}
.site-mobile .site-tree-mobile,.topLevelMenus[pc]{display:none !important;}
}
@media screen and (max-width: 720px){
.hideMenu{ display: none !important; }
.mobileTopLevelMenus[mobile]{ padding:0;}
.top_menu>li[pc]{ display: none !important; }
/*左侧导航*/
.layui-layout-admin .layui-side{ left:-260px; }
.site-mobile .layui-side{ left: 0; z-index:1100; }
.site-tree-mobile {display: block!important; position: fixed; z-index: 100000; bottom: 15px; left: 15px; width:40px; height:40px; line-height:40px; border-radius: 2px; text-align: center; background-color: rgba(0,0,0,.7); color: #fff;}
.site-mobile .site-mobile-shade { content: ''; position: fixed; top: 0; bottom: 0; left: 0; right: 0; background-color: rgba(0,0,0,.8); z-index: 999;}
.layui-body,.layui-layout-admin .layui-footer{ left:-2px; }
}
@media screen and (max-width:480px){
.logo{ width:120px; font-size: 18px;}
#userInfo>a{ padding:0 10px;}
.mobileTopLevelMenus[mobile] li>a{ padding:0 17px 0 15px;}
.logo,.layui-nav.top_menu{ padding:0 5px;}
.adminName,.top_menu dd[pc]{ display: none !important; }
*[mobile],.top_menu .layui-nav-item.showNotice[pc]{ display:inline-block !important; }
}
/*修改顶部高度*/
.header .layui-nav-child,.layui-body,.layui-layout-admin .layui-side,.header .layui-nav-bar{ top:50px !important;}
.header .layui-nav .layui-nav-item,.header .layui-nav .layui-nav-item>a,.header,.logo{ line-height:50px !important; max-height:50px !important;}
.mobileTopLevelMenus{ float:left;}
.hideMenu{ margin-top: 10px;}

170
public/static/kline/src/index.js

@ -0,0 +1,170 @@
var $,tab,dataStr,layer;
/*layui.config({
base : "/cms/js/"
}).extend({
"bodyTab" : "bodyTab"
})*/
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form,
element = layui.element;
$ = layui.$;
layer = parent.layer === undefined ? layui.layer : top.layer;
/*tab = layui.bodyTab({
openTabNum : "50", //最大可打开窗口数量
url : "/cms/json/navs.json" //获取菜单json地址
});*/
//通过顶部菜单获取左侧二三级菜单 注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
/*function getData(json){
$.getJSON(tab.tabConfig.url,function(data){
if(json == "contentManagement"){
dataStr = data.contentManagement;
//重新渲染左侧菜单
tab.render();
}else if(json == "memberCenter"){
dataStr = data.memberCenter;
//重新渲染左侧菜单
tab.render();
}else if(json == "systemeSttings"){
dataStr = data.systemeSttings;
//重新渲染左侧菜单
tab.render();
}else if(json == "seraphApi"){
dataStr = data.seraphApi;
//重新渲染左侧菜单
tab.render();
}
})
}*/
//页面加载时判断左侧菜单是否显示
//通过顶部菜单获取左侧菜单
$(".topLevelMenus li,.mobileTopLevelMenus dd").click(function(){
if($(this).parents(".mobileTopLevelMenus").length != "0"){
$(".topLevelMenus li").eq($(this).index()).addClass("layui-this").siblings().removeClass("layui-this");
}else{
$(".mobileTopLevelMenus dd").eq($(this).index()).addClass("layui-this").siblings().removeClass("layui-this");
}
$(".layui-layout-admin").removeClass("showMenu");
$("body").addClass("site-mobile");
getData($(this).data("menu"));
//渲染顶部窗口
tab.tabMove();
})
//隐藏左侧导航
$(".hideMenu").click(function(){
// if($(".topLevelMenus li.layui-this a").data("url")){
// layer.msg("此栏目状态下左侧菜单不可展开"); //主要为了避免左侧显示的内容与顶部菜单不匹配
// return false;
// }
$(".layui-layout-admin").toggleClass("showMenu");
//渲染顶部窗口
tab.tabMove();
})
//通过顶部菜单获取左侧二三级菜单 注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
//getData("contentManagement");
//手机设备的简单适配
$('.site-tree-mobile').on('click', function(){
$('body').addClass('site-mobile');
});
$('.site-mobile-shade').on('click', function(){
$('body').removeClass('site-mobile');
});
// 添加新窗口
$("body").on("click",".layui-nav .layui-nav-item a:not('.mobileTopLevelMenus .layui-nav-item a')",function(){
//如果不存在子级
if($(this).siblings().length == 0){
addTab($(this));
$('body').removeClass('site-mobile'); //移动端点击菜单关闭菜单层
}
$(this).parent("li").siblings().removeClass("layui-nav-itemed");
})
//清除缓存
$(".clearCache").click(function(){
window.sessionStorage.clear();
window.localStorage.clear();
var index = layer.msg('清除缓存中,请稍候',{icon: 16,time:false,shade:0.8});
setTimeout(function(){
layer.close(index);
layer.msg("缓存清除成功!");
},1000);
})
cacheStr = "true";//自定义添加的
//刷新后还原打开的窗口
if(cacheStr == "true") {
if (window.sessionStorage.getItem("menu") != null) {
menu = JSON.parse(window.sessionStorage.getItem("menu"));
curmenu = window.sessionStorage.getItem("curmenu");
var openTitle = '';
for (var i = 0; i < menu.length; i++) {
openTitle = '';
if (menu[i].icon) {
if (menu[i].icon.split("-")[0] == 'icon') {
openTitle += '<i class="seraph ' + menu[i].icon + '"></i>';
} else {
openTitle += '<i class="layui-icon">' + menu[i].icon + '</i>';
}
}
openTitle += '<cite>' + menu[i].title + '</cite>';
openTitle += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + menu[i].layId + '">&#x1006;</i>';
element.tabAdd("bodyTab", {
title: openTitle,
content: "<iframe src='" + menu[i].href + "' data-id='" + menu[i].layId + "'></frame>",
id: menu[i].layId
})
//定位到刷新前的窗口
if (curmenu != "undefined") {
if (curmenu == '' || curmenu == "null") { //定位到后台首页
element.tabChange("bodyTab", '');
} else if (JSON.parse(curmenu).title == menu[i].title) { //定位到刷新前的页面
element.tabChange("bodyTab", menu[i].layId);
}
} else {
element.tabChange("bodyTab", menu[menu.length - 1].layId);
}
}
//渲染顶部窗口
//tab.tabMove();
}
}else{
window.sessionStorage.removeItem("menu");
window.sessionStorage.removeItem("curmenu");
}
})
//打开新窗口
function addTab(_this){
//tab.tabAdd(_this);
//$('#main-iframe').attr('src', _this.attr('data-url'));
if(_this.attr('data-url') == undefined || _this.attr('data-url') == '' || _this.attr('data-url') == null) return ;
window.location.href = _this.attr('data-url');
}
//捐赠弹窗
function donation(){
layer.tab({
area : ['260px', '367px'],
tab : [{
title : "微信",
content : "<div style='padding:30px;overflow:hidden;background:#d2d0d0;'><img src='images/wechat.jpg'></div>"
},{
title : "支付宝",
content : "<div style='padding:30px;overflow:hidden;background:#d2d0d0;'><img src='images/alipay.jpg'></div>"
}]
})
}
//图片管理弹窗
function showImg(){
$.getJSON('/cms/json/images.json', function(json){
var res = json;
layer.photos({
photos: res,
anim: 5
});
});
}

2
public/static/kline/src/jquery-3.4.1.min.js

File diff suppressed because one or more lines are too long

233
public/static/kline/src/kline.css

File diff suppressed because one or more lines are too long

327
public/static/kline/src/klineCharts.js

@ -0,0 +1,327 @@
var tvBlackBgColor = '#f5f5f5' // 黑色背景色
var tvIntervalList = ['1', '5', '15', '30', '60', '240', 'D', 'W'] // 所有周期
var tvIntradayMultipliers = ['1', '5', '15', '30', '60', '240'] // 日内周期
var realtimeFlag = false;
var kcCurrentData = {};
var lastBarTime = parseInt(Date.now() / 1000);
var loadMoreFlag = false;
/**
* 一个对象往上面挂[id]: callback
* id为键对应一个请求历史数据的请求
* callback是该请求历史数据返回的回调函数
* 且回调函数会延时清理自身过期id callback
* {
* 1 function(){}
* 2 function(){}
* }
*/
var kcHistoryKeyId = 1 // 自增id,本地维护
var kcHistoryCallbackMap = {}
var kcSocket = null // websocket 实例
var kcSubscribeId = 3601 // 自增id, 本地维护
var kcChart = null;
// 获取当前交易对 如BTC/USDT
function getSymbol() {
return kcCurrentData.symbol || (kcCurrentData.coinSymbol + '/' + kcCurrentData.baseSymbol)
}
// 设置可见K线范围
function setKLineVisibleRange(lastBarTime_t, barsCount) {
var count = barsCount || 300 // 显示几条k线
var interval = kcCurrentData.interval
var to = parseInt(lastBarTime_t) // 历史数据的最后一条柱子的时间
var toNum = 20 // 多显示几条k线距离
var seconds = getSecondsByInterval(interval); // 秒数
var options = {
from: to - (seconds * count),
to: to, // 可见的结束时间,因为结束时间可能不是当前时间,为了与右边价格刻度有一点距离所以加toNum条柱子的时间
interval: seconds
}
return options;
}
// 周期转换为秒
function getSecondsByInterval(interval) {
// 周期 ['1', '5', '15', '30', '60', '240', 'D', 'W']
interval = interval || kcCurrentData.interval;
var map = {
'1': 60,
'5': 60 * 5,
'15': 60 * 15,
'30': 60 * 30,
'60': 60 * 60,
'240': 60 * 240,
'D': 60 * 60 * 24,
'W': 60 * 60 * 24 * 7
}
return map[interval + '']
}
function loadMoreKline(data, is_first, key){
if(key == kcHistoryKeyId) {
is_first = is_first || false;
if (is_first) {
kcChart.clearData();
}
if (data != null || data != '' || data != undefined) {
var dataArr = [];
var dataArr_index = 0;
$.each(data, function (index, item) {
try {
if (typeof item == 'string') {
item = JSON.parse(item);
}
dataArr[dataArr_index] = {
timestamp: Number(item[0] * 1000),
open: Number(item[1]),
high: Number(item[3]),
low: Number(item[4]),
close: Number(item[2]),
volume: Number(item[5])
};
// if(kcCurrentData.interval == 'D' || kcCurrentData.interval == 'W') dataArr[dataArr_index].timestamp += 57600000;
dataArr_index++;
} catch (e) {
}
})
console.log(dataArr);
kcHistoryKeyId++;
if (dataArr.length <= 0) {
kcChart.applyMoreData(dataArr, false);
} else {
lastBarTime = (dataArr[0].timestamp / 1000) - getSecondsByInterval();
console.log(lastBarTime);
kcChart.applyMoreData(dataArr, true);
}
}
}
}
// $('.interval_btn').on('click', function(){
// console.log('11111');
// if(kcChart != null || kcChart != undefined){
// var _this = $(this);
// kcCurrentData.interval = _this.attr('data-interval');
// // 请求历史数据
// kcHistoryKeyId = 1;
// var rang = setKLineVisibleRange(parseInt(Date.now() / 1000));
// $.ajax({
// url: "https://dfmg.dficoins.com/api/getkkline",
// type: 'get',
// async: false,
// data: {
// symbol: getSymbol(),
// interval: getSecondsByInterval(kcCurrentData.interval),
// times: kcHistoryKeyId,
// from: rang.from,
// to: rang.to + (365 * 86400)
// },
// beforeSend: function(){
// loading_index = layer.load(1, {
// shade: [0.1, '#fff'] //0.1透明度的白色背景
// });
// },
// success:function (result) { //成功回调
// console.log(result);
// if(result.status){
// loadMoreKline(result.data, true, result.code);
// $('.interval_btn').removeClass('active');
// _this.addClass('active');
// }else{
// }
// layer.close(loading_index);
// },
// error: function(xhr){
// layer.close(loading_index);
// }
// });
// }
// })
// 初始化tv
function initKlineChart() {
kcChart = klinecharts.init(kcCurrentData.containerId);
kcChart.setTimezone(kcCurrentData.timezone);
kcChart.setOffsetRightSpace(20);
// 创建一个主图指标
kcChart.createTechnicalIndicator({ name: 'VOL', calcParams: [10], styles: { margin: { top: 0.2, bottom: 2 } } })
kcChart.createTechnicalIndicator({
name: 'MA',
shortName: 'MA',
calcParams: [10, 20, 30],
dragEnabled: true,
plots: [
{ key: 'ma1', title: 'MA10: ', type: 'line' },
{ key: 'ma2', title: 'MA20: ', type: 'line' },
{ key: 'ma3', title: 'MA30: ', type: 'line' }
],
// 当计算参数改变时,希望提示的和参数一样,即title的值需要改变
regeneratePlots: (params) => {
return params.map((p, i) => {
return { key: `ma${i + 1}`, title: `MA${p}: `, type: 'line' }
})
},
// 计算结果
calcTechnicalIndicator: (kLineDataList, { params, plots }) => {
// 注意:返回数据个数需要和kLineDataList的数据个数一致,如果无值,用{}代替即可。
// 计算参数最好取回调参数params,如果不是,后续计算参数发生变化的时候,这里计算不能及时响应
const closeSums = []
return kLineDataList.map((kLineData, i) => {
const ma = {}
const close = kLineData.close
params.forEach((param, j) => {
closeSums[j] = (closeSums[j] || 0) + close
if (i >= param - 1) {
ma[plots[j].key] = closeSums[j] / param
closeSums[j] -= dataList[i - (param - 1)].close
}
})
// 如果有值的情况下,这里每一项的数据格式应该是 { ma1: xxx, ma2: xxx }
// 每个key需要和plots中的子项key对应的值一致
return ma
})
}
}, true, {
id: 'candle_pane',
dragEnabled: true
});
kcChart.setPriceVolumePrecision(kcCurrentData.coinScale, kcCurrentData.volumeScale);
kcChart.loadMore(function () {
setTimeout(function(){
if(loadMoreFlag) {
loadMoreFlag = false;
var rang = setKLineVisibleRange(lastBarTime);
$.ajax({
url: "https://dfmg.dficoins.com/api/getkkline",
type: 'get',
async: false,
data: {
symbol: getSymbol(),
interval: getSecondsByInterval(kcCurrentData.interval),
times: kcHistoryKeyId,
from: rang.from,
to: rang.to
},
success: function (result) { //成功回调
console.log(result);
if (result.status) {
loadMoreKline(result.data, false, result.code);
loadMoreFlag = true;
} else {
}
}
});
}
}, kcHistoryKeyId == 1 ? 500 : 10);
})
kcChart.setStyleOptions({
// 蜡烛图
candle: {
// 提示
tooltip: {
// 'always' | 'follow_cross' | 'none'
showRule: 'always',
// 'standard' | 'rect'
showType: 'rect',
labels: [
langData[kcCurrentData.language].time,
langData[kcCurrentData.language].open,
langData[kcCurrentData.language].close,
langData[kcCurrentData.language].high,
langData[kcCurrentData.language].low,
langData[kcCurrentData.language].volume
],
values: null,
defaultValue: '--',
rect: {
paddingLeft: 0,
paddingRight: 0,
paddingTop: 0,
paddingBottom: 6,
offsetLeft: 8,
offsetTop: 20,
offsetRight: 8,
borderRadius: 4,
borderSize: 1,
borderColor: '#3f4254',
backgroundColor: 'rgba(17, 17, 17, .3)'
},
text: {
size: 12,
family: 'Helvetica Neue',
weight: 'normal',
color: '#fff',
marginLeft: 8,
marginTop: 6,
marginRight: 8,
marginBottom: 0
}
}
}
});
var rang = setKLineVisibleRange(lastBarTime);
$.ajax({
url: "https://dfmg.dficoins.com/api/getkkline",
type: 'get',
async: false,
data: {
symbol: getSymbol(),
interval: getSecondsByInterval(kcCurrentData.interval),
times: kcHistoryKeyId,
from: rang.from,
to: rang.to + (365 * 86400)
},
beforeSend: function(){
loading_index = layer.load(1, {
shade: [0.1, '#fff'] //0.1透明度的白色背景
});
},
success:function (result) { //成功回调
console.log(result);
if(result.status){
loadMoreKline(result.data, true, result.code);
loadMoreFlag = true;
$('.interval_btn').removeClass('active');
$('.interval_btn[data-interval="' + result.msg + '"]').addClass('active');
}else{
layer.msg(result.msg, {icon: 2});
}
layer.close(loading_index);
},
error: function(xhr){
layer.close(loading_index);
}
});
}
// 先引入这个JS文件,然后在websocket连接成功后,调用这个方法,启动TradingView
/**
* 启动
* @param {Object} _ws 已经连接成功的Websocket对象
* @param {Object} _config Tv配置项计价币种和交易币种必须要传入
*/
function kcStart(_config){
// 重要:k线图配置的重要数据,当前k线维护的一份数据,k线切换时,改变周期时都要变对应的值
kcCurrentData = {
containerId: _config.containerId,
baseSymbol: _config.baseSymbol, // 计价币种
coinSymbol: _config.coinSymbol, // 交易币种
symbol: _config.symbol || '--',
coinScale: _config.coinScale || 2, // 计价币种精度
volumeScale: _config.volumeScale || 2, // 成交量精度保留
interval: _config.interval || '15', // 15分钟
bgColor: _config.bgColor || tvBlackBgColor, // 当前选择背景色
language: _config.language || 'en',
timezone: _config.timezone || 'Asia/Shanghai'
}
initKlineChart()
}

7
public/static/kline/src/klinecharts.min.js

File diff suppressed because one or more lines are too long

18
public/static/kline/src/lang.js

@ -0,0 +1,18 @@
var langData = {
zh_TW: {
time: '',
open: '開',
close: '收',
high: '高',
low: '低',
volume: '成交量'
},
en: {
time: '',
open: 'open',
close: 'close',
high: 'high',
low: 'low',
volume: 'volume'
}
};

2
public/static/kline/src/lay/modules/element.js

File diff suppressed because one or more lines are too long

2
public/static/kline/src/lay/modules/form.js

File diff suppressed because one or more lines are too long

BIN
public/static/kline/src/lay/modules/iconfont.woff2

Binary file not shown.

BIN
public/static/kline/src/lay/modules/iconfont.woff2 2

Binary file not shown.

2
public/static/kline/src/lay/modules/layer.js

File diff suppressed because one or more lines are too long

2
public/static/kline/src/layer.css

File diff suppressed because one or more lines are too long

2
public/static/kline/src/layui.css

File diff suppressed because one or more lines are too long

2
public/static/kline/src/layui.js

File diff suppressed because one or more lines are too long

70
public/static/kline/src/public(1).css

@ -0,0 +1,70 @@
p{margin:0;}
.border-circular{ border-radius: 100%; }
.border-circularpx{ border-radius: 100px; }
.p-grey, .span-grey{ color: grey; }
.p-white, .span-white{ color: white; }
.p-black, .span-black{ color: black; }
.div-border{ border:1px solid #cfcfcf; }
.border-top-grey{ border-top: 0.5px solid rgba(128,128,128,0.3); }
.border-bottom-grey{ border-bottom: 0.5px solid rgba(128,128,128,0.3); }
.border-right-grey{ border-right: 0.5px solid rgba(128,128,128,0.3); }
.border-left-grey{ border-left: 0.5px solid rgba(128,128,128,0.3); }
.pcolor1, .span-color1{color: #FF5722;}
.pcolor2, .span-color2{color: #009688;}
.pcolor3, .span-color3{color: #FBDECC;}
.pcolor4, .span-color4{color: #a38983;}
.pcolor5, .span-color5{color: #FD7835;}
.pcolor6, .span-color6{color: #664303;}
.p100, .span-100{font-size: 100%;}
.p110, .span-110{font-size: 110%;}
.p120, .span-120{font-size: 120%;}
.p90, .span-90{font-size: 90%;}
.p80, .span-80{font-size: 80%;}
.p70, .span-70{font-size: 70%;}
.p60, .span-60{font-size: 60%;}
.p140, .span-140{ font-size: 140%; }
.p150, .span-150{ font-size: 150%; }
.p170, .span-170{ font-size: 170%; }
.p200, .span-200{ font-size: 200%; }
.span-required{color:red;}
.input-w1{width:300px;}
.bgd-color-grey{background-color: rgb(241,241,241);}
.bgd-color-white{background-color: white;}
.bgd-color3{background-color: #FBDECC;}
.bgd-color4{background-color: #FD7835;}
.bgd-color5{background-color: #fff3c8;}
input[type=file] { display: none; }
.a0{color:white;cursor: pointer;}
.a0:hover{color:white;}
.a1{color:#009688;cursor: pointer;}
.a1:hover{color:#009688;}
.a2{color:#1E9FFF;cursor: pointer;}
.a2:hover{color:#1E9FFF;}
tr{width:100%;}
/*input[disabled]{background-color: rgba(136, 136, 136, 0.4);}*/
.h-over{height:auto;overflow: hidden;}
/*tp_trace*/
#think_page_trace_open{z-index:1;}
/**/
.iconfont{cursor: pointer;}
.default-badge{border: 1.5px solid #5FB878;color:#5FB878;border-radius: 5px;padding:2px 3px;}
.notify-flag{width:10px;height:10px;background-color: #FF5722;position: absolute;top:10px;right:15px;z-index:1501;
-webkit-animation-duration: 1.3s;
animation-duration: 1.3s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both}
.es-list { max-height: 200px !important; z-index:1001;background-color: white;overflow-y:auto; display: none;position: absolute;margin-top:3px;border: 1px solid #C9C9C9; }
.es-list li{padding: 10px;border-bottom: 0.5px solid rgba(128,128,128,0.3);}
/* 隐藏时间范围选择器中的选择时间时的滚动条 */
.laydate-time-list li ol::-webkit-scrollbar{display: none;}
.select2-container--default.select2-container--open{ z-index:2002; }
.select2-input{ width:100%;height:38px; }
.layui-table-view .layui-table-box .layui-table thead tr .layui-table-cell span { font-weight: bold; } /* laytable 标题行样式 */
.mui-popup.mui-popup-in{-moz-box-shadow:3px 3px 12px #333333; -webkit-box-shadow:3px 3px 12px #333333; box-shadow:3px 3px 12px #333333;}
.p-block-input{line-height: 36px;}

174
public/static/kline/src/public.css

@ -0,0 +1,174 @@
/*公共样式*/
.childrenBody{ padding:10px;}
.layui-table-view{ margin:0 !important;}
.magb0{margin-bottom:0 !important;}
.magt0{ margin-top:0 !important;}
.magt3{ margin-top:3px !important;}
.magt10{ margin-top:10px !important;}
.magb15{ margin-bottom:15px !important;}
.magt30{ margin-top:30px !important;}
.layui-left{text-align:left;}
.layui-block{ width:100% !important;}
.layui-center{text-align:center;}
.layui-right{text-align:right;}
.layui-elem-quote.title{ padding:10px 15px; margin-bottom:0;}
.layui-bg-white{ background-color:#fff !important;}
.border{ border:1px solid #e6e6e6 !important; padding:10px; border-top:none;}
.main_btn .layui-btn{ margin:2px 5px 2px 0;}
.layui-timeline-axis{ left:-4px;}
.layui-elem-quote{ word-break: break-all;}
.icons li,.icons li:hover,.loginBody .seraph,.loginBody .seraph:hover,.loginBody .layui-form-item.layui-input-focus label,.loginBody .layui-form-item label,.loginBody .layui-form-item.layui-input-focus input,.loginBody .layui-form-item input{transition: all 0.3s ease-in-out;-webkit-transition: all 0.3s ease-in-out;}
.icons li:hover i,.icons li i{transition: font-size 0.3s ease-in-out;-webkit-transition: font-size 0.3s ease-in-out;}
.loginBody .layui-input-focus .layui-input::-webkit-input-placeholder{transition: color 0.2s linear 0.2s;-webkit-transition: color 0.2s linear 0.2s;}
.loginBody .layui-input-focus .layui-input::-moz-placeholder{transition: color 0.2s linear 0.2s;}
.loginBody .layui-input-focus .layui-input:-ms-input-placeholder{transition: color 0.2s linear 0.2s;}
.loginBody .layui-input-focus .layui-input::placeholder{transition: color 0.2s linear 0.2s;-webkit-transition: color 0.2s linear 0.2s;}
/*后台首页*/
.panel_box{ margin-bottom:5px;}
.panel{ text-align:center; height:90px;}
.panel_box a{display:block; border-radius:5px; overflow:hidden; height:80px; background-color:#f2f2f2 !important; }
.panel_icon{ width:40%; display: inline-block; line-height:80px; float:left; position:relative; height:100%;}
.panel_icon i{ font-size:40px !important; color:#fff; display: inline-block;}
.panel_word{ width:60%; display: inline-block; float:right; margin:13px 0 14px; }
.panel_word span{ font-size:25px; display:block; height:34px; }
.panel .loginTime{ font-size:15px; color:#1E9FFF; line-height:17px;}
.panel em{ font-style:normal;}
.history_box{ min-height:500px; height:500px; overflow-y:scroll; padding:10px !important;}
.history_box .layui-timeline .layui-timeline-item:last-child{ padding-bottom:0;}
@media screen and (max-width:1200px) {
.history_box { height: auto !important; overflow-y: inherit; }
}
/*修改密码*/
.pwdTips{ min-height:auto; margin:40px 0 15px 110px;}
/*个人资料*/
form input.layui-input[disabled]{ background:#f2f2f2; color:#595963!important; }
.user_right{ text-align: center; }
.user_right p{ margin:10px 0 25px; font-size: 12px; text-align: center; color: #FF5722;}
.user_right img#userFace{ width:200px; height:200px; margin-top:20px; cursor:pointer; box-shadow:0 0 50px #44576b; }
.userAddress.layui-form-item .layui-input-inline{ width:23%; }
.userAddress.layui-form-item .layui-input-inline:last-child{ margin-right:0; }
/*下拉多选*/
.layui-form-item select[multiple]+.layui-form-select dd{ padding:0;}
.layui-form-item select[multiple]+.layui-form-select .layui-form-checkbox[lay-skin=primary]{ margin:0 !important; display:block; line-height:36px !important; position:relative; padding-left:26px;}
.layui-form-item select[multiple]+.layui-form-select .layui-form-checkbox[lay-skin=primary] span{line-height:36px !important; float:none;}
.layui-form-item select[multiple]+.layui-form-select .layui-form-checkbox[lay-skin=primary] i{ position:absolute; left:10px; top:0; margin-top:9px;}
.multiSelect{ line-height:normal; height:auto; padding:4px 10px; overflow:hidden;min-height:38px; margin-top:-38px; left:0; z-index:99;position:relative;background:none;}
.multiSelect a{ padding:2px 5px; background:#908e8e; border-radius:2px; color:#fff; display:block; line-height:20px; height:20px; margin:2px 5px 2px 0; float:left;}
.multiSelect a span{ float:left;}
.multiSelect a i{ float:left; display:block; margin:2px 0 0 2px; border-radius:2px; width:8px; height:8px; background:url(../images/close.png) no-repeat center; background-size:65%; padding:4px;}
.multiSelect a i:hover{ background-color:#545556;}
/*404页面*/
.noFind{ text-align:center; padding-top:2%;}
.noFind i{ line-height:1em; font-size:12em !important; color: #393D50; display:block;}
.ufo{ text-align:center; height:100%; position:relative;}
.noFind .page_icon,.noFind .ufo_icon{ opacity:1; position:absolute; left:50%; transform:translateX(-50%); -ms-transform:translateX(-50%); -moz-transform:translateX(-50%); -webkit-transform:translateX(-50%); -o-transform:translateX(-50%);}
.noFind .page_icon{ top:300px; animation:pageGo 0.3s ease-in 0.3s forwards; -webkit-animation:pageGo 0.3s ease-in 0.3s forwards; -o-animation:pageGo 0.3s ease-in 0.3s forwards; -moz-animation:pageGo 0.3s ease-in 0.3s forwards;}
.noFind .ufo_icon{ top:100px; animation:ufo 1s ease-in 0.6s forwards; -webkit-animation:ufo 1s ease-in 0.6s forwards; -o-animation:ufo 1s ease-in 0.6s forwards; -moz-animation:ufo 1s ease-in 0.6s forwards;}
.page404{ margin-top:10%; opacity:0; font-size:0; animation:page404 0.5s ease-in 1.7s forwards; -webkit-animation:page404 0.5s ease-in 1.7s forwards; -o-animation:page404 0.5s ease-in 1.7s forwards; -moz-animation:page404 0.5s ease-in 1.7s forwards;}
.page404 p{ font-size: 20px; font-weight: 300; color: #999;}
/*页面被吸走*/
@keyframes pageGo{from{font-size: 12em; top:300px;} to{font-size:0; opacity:0; top: 100px;}}
@-moz-keyframes pageGo{from{font-size: 12em; top:300px;} to{font-size:0; opacity:0; top:100px}}
@-webkit-keyframes pageGo{from{font-size: 12em; top:300px;} to{font-size:0; opacity:0; top:100px}}
@-o-keyframes pageGo{from{font-size: 12em; top:300px;} to{font-size:0; opacity:0; top:100px}}
/*ufo飞走*/
@keyframes ufo{0%{font-size: 14em; top:100px;} 20%{font-size: 12em; top:50px;} 100%{font-size:0; opacity:0; top:-100px; left:80%;}}
@-moz-keyframes ufo{0%{font-size: 14em; top:100px;} 20%{font-size: 12em; top:50px;} 100%{font-size:0; opacity:0; top:-100px; left:80%;}}
@-webkit-keyframes ufo{0%{font-size: 14em; top:100px;} 20%{font-size: 12em; top:50px;} 100%{font-size:0; opacity:0; top:-100px; left:80%;}}
@-o-keyframes ufo{0%{font-size: 14em; top:100px;} 20%{font-size: 12em; top:50px;} 100%{font-size:0; opacity:0; top:-100px; left:80%;}}
/*404显示*/
@keyframes page404{from{opacity:0; font-size:2em;} to{opacity:1;font-size:2em;}}
@-moz-keyframes page404{from{opacity:0; font-size:2em;} to{opacity:1;font-size:2em;}}
@-webkit-keyframes page404{from{opacity:0; font-size:2em;} to{opacity:1;font-size:2em;}}
@-o-keyframes page404{from{opacity:0; font-size:2em;} to{opacity:1;font-size:2em;}}
/*图标管理*/
.iconsLength{ margin:0 5px;}
.icons li{ margin:5px 0; text-align:center; height:120px; cursor:pointer;}
.icons li i{ display:block; font-size:35px; margin:10px 0; line-height:60px; height:60px;}
.icons li:hover{ background:rgba(13,10,49,.9); border-radius:5px; color:#fff;}
.icons li:hover i{ font-size:50px;}
#copyText{ width:0;height:0; opacity:0; position:absolute; left:-9999px; top:-9999px;}
/*开发文档*/
h2.method{ font-size:18px; line-height:45px; padding-left:5px;}
/*登录*/
.loginHtml,.loginBody{ height:100%;}
/*.loginBody{ background:url("../images/login_bg.jpg") no-repeat center center;}*/
.loginBody form.layui-form{ padding:0 20px; width:300px; height:auto; position:absolute; left:50%; top:50%; margin:-150px 0 0 -150px; -webkit-box-sizing:border-box;-moz-box-sizing:border-box; -o-box-sizing:border-box; box-sizing:border-box; background:#fff;-webkit-border-radius:5px; -moz-border-radius:5px; border-radius:5px; box-shadow:0 0 50px #009688;}
.login_face{ margin:-55px auto 20px; width:100px; height:100px; -webkit-border-radius:50%; -moz-border-radius:50%; border-radius:50%; border:5px solid #fff; overflow:hidden;box-shadow:0 0 30px #009688;}
.login_face img{ width:100%;}
.loginBody .layui-form-item{ position:relative;}
.loginBody .layui-form-item label{ position:absolute; color:#757575; left:10px; top:9px; line-height:20px; background:#fff; padding:0 5px; font-size:14px; cursor:text;}
.loginBody .layui-form-item.layui-input-focus label{ top:-10px; font-size:12px; color:#ff6700;}
.loginBody .layui-form-item.layui-input-active label{ top:-10px; font-size:12px;}
.loginBody .layui-input::-webkit-input-placeholder{color:#fff;}
.loginBody .layui-input::-moz-placeholder{color:#fff;}
.loginBody .layui-input:-ms-input-placeholder{color:#fff;}
.loginBody .layui-input::placeholder{color:#fff;}
.loginBody .layui-form-item.layui-input-focus input{ border-color:#ff6700 !important;}
.loginBody .layui-input-focus .layui-input::-webkit-input-placeholder{color:#757575;}
.loginBody .layui-input-focus .layui-input::-moz-placeholder{color:#757575;}
.loginBody .layui-input-focus .layui-input:-ms-input-placeholder{color:#757575;}
.loginBody .layui-input-focus .layui-input::placeholder{color:#757575;}
.loginBody .seraph{ font-size:30px; text-align:center;}
.loginBody .seraph.icon-qq:hover{ color:#0288d1;}
.loginBody .seraph.icon-wechat:hover{ color:#00d20d;}
.loginBody .seraph.icon-sina:hover{ color:#d32f2f;}
.imgCode{ position:relative;}
#imgCode img{ position:absolute; top:1px; right:1px; cursor:pointer;}
/*用户等级*/
.layui-table-view .layui-table span.seraph{ font-size:25px !important;}
.vip1{ color:#994a2b;}
.vip2{ color:#899396;}
.vip3{ color:#bd6a08;}
.vip4{ color:#a3b8c4;}
.vip5{ color:#63c3ea;}
.vip6{ color:#b563ed;}
.vip7{ color:#ff9831;}
.vip8{ color:#A757A8;}
.vip9{ color:#0ff;}
.vip10{ color:#f00;}
/*新闻添加*/
.layui-elem-quote .layui-inline{ margin:3px 0;}
.category .layui-form-checkbox{ margin:5px 0;}
.border .layui-form-item{ margin-bottom:10px;}
.border .layui-form-label{ width:50px;}
.border .layui-form-label i{ position:absolute; top:10px; left:3px;}
.border .layui-input-block{ margin-left:80px;}
.thumbBox{ height:151px; overflow:hidden; border:1px solid #e6e6e6; border-radius:2px; cursor:pointer; position:relative; text-align:center; line-height:153px;}
.thumbImg{ max-width:100%; max-height:100%; border:none;}
.thumbBox:after{ position:absolute; width:100%; height:100%;line-height:153px; z-index:-1; text-align:center; font-size:20px; content:"缩略图"; left:0; top:0; color:#9F9F9F;}
/*图片管理*/
#Images li{ width:19%; margin:0.5% 0.5%; float: left; overflow:hidden;}
#Images li img{ width:100%; cursor:pointer; }
#Images li .operate{ display: block; height: 40px; width:100%; background:#f4f5f9; }
#Images li .operate .check{ float:left; margin-left:11px; height:18px; padding:11px 0; width:74%; position:relative;}
#Images li .operate .check .layui-form-checkbox[lay-skin=primary]{ width:100%;}
#Images li .operate .check .layui-form-checkbox[lay-skin=primary] span{ padding:0 5px 0 25px; width:100%; box-sizing:border-box;}
#Images li .operate .check .layui-form-checkbox[lay-skin=primary] i{position:absolute; left:0; top:0;}
#Images li .operate .img_del{ float:right; margin:9px 11px 0 0; font-size: 22px !important; cursor:pointer; }
#Images li .operate .img_del:hover{ color:#f00; }
@media screen and (max-width:1050px){#Images li{ width:24%;}}
@media screen and (max-width: 750px){#Images li{ width:49%;}}
@media screen and (max-width:432px){#Images li{ width:99%;}}
/*系统日志*/
.layui-btn-green{ background-color:#5FB878 !important;}
/*友情链接*/
.linkLogo{ width:80px; height:40px; overflow:hidden; border:1px solid #e6e6e6; border-radius:2px; cursor:pointer; margin:0 auto; position:relative; text-align:center; line-height:42px;}
.linkLogoImg{ max-width:90%; max-height:90%;}
.linkLogo:after{ position:absolute; width:100%; height:100%;line-height:42px; z-index:-1; text-align:center; font-size:12px; content:"上传LOGO"; left:0; top:0; color:#9F9F9F;}
.linksAdd .layui-form-label{ width:60px; padding-left:0;}
.linksAdd .layui-input-block{ margin-left:75px;}
.linksAdd .layui-input-block input{ padding:0 5px;}
/*响应式*/
@media screen and (max-width:450px) {
#userFaceBtn{ height: 30px;line-height: 30px; padding: 0 10px; font-size: 12px;}
.user_right img#userFace{ width:100px; height:100px; margin-top:0;}
.layui-col-xs12 .layui-form-label{ width:60px; padding-left:0;}
.layui-col-xs12 .layui-input-block,.layui-col-xs12 .layui-input-inline{ margin-left:75px;}
.layui-col-xs12 .layui-input-inline{ left:0 !important; width:auto !important;}
.noFind{ padding-top:0;}
*[pc]{ display:none;}
}
input[type=file] {
display: none;
}

762
public/static/kline/src/soulTable.css

@ -0,0 +1,762 @@
/** 自定义字体 **/
/** 这里使用在线字体,如果需要离线包,请看 font/README.md **/
@font-face {
font-family: 'soul-icon'; /* project id 677836 */
src: url('//at.alicdn.com/t/font_677836_jwq362m0tt.eot');
src: url('//at.alicdn.com/t/font_677836_jwq362m0tt.eot?#iefix') format('embedded-opentype'),
url('//at.alicdn.com/t/font_677836_jwq362m0tt.woff2') format('woff2'),
url('//at.alicdn.com/t/font_677836_jwq362m0tt.woff') format('woff'),
url('//at.alicdn.com/t/font_677836_jwq362m0tt.ttf') format('truetype'),
url('//at.alicdn.com/t/font_677836_jwq362m0tt.svg#iconfont') format('svg');
}
.soul-icon {
font-family:"soul-icon" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.soul-icon-filter:before { content: "\e60b"; }
.soul-icon-filter-asc:before { content: "\e768"; }
.soul-icon-filter-desc:before { content: "\e767"; }
.soul-icon-asc:before { content: "\e6af"; }
.soul-icon-desc:before { content: "\e6ae"; }
.soul-icon-all-check:before { content: "\e670"; }
.soul-icon-invert-check:before { content: "\e614"; }
.soul-icon-fold:before { content: "\e760"; }
.soul-icon-unfold:before { content: "\e611"; }
.soul-icon-delete:before { content: "\e600"; }
.soul-icon-download:before { content: "\e601"; }
.soul-icon-drop-list:before { content: "\e6a3"; }
.soul-icon-query:before { content: "\e66d"; }
/* 全选*/
.soul-icon-quanxuan:before { content: "\e623"; }
.soul-icon-qingkong:before { content: "\e63e"; }
.soul-icon-fanxuan:before { content: "\e614"; }
/*最大化*/
.soul-icon-min:before { content: "\e656"; }
.soul-icon-max:before { content: "\e61b"; }
/* 配色方案*/
.layui-red {
color: #FF5722
}
.layui-orange {
color: #FFB800
}
.layui-green {
color: #009688
}
.layui-cyan {
color: #2F4056
}
.layui-blue {
color: #1E9FFF
}
.layui-black {
color: #393D49
}
.layui-gray {
color: #eee
}
.layui-firebrick {
color: firebrick;
}
.layui-deeppink {
color: deeppink;
}
.layui-blueviolet {
color: blueviolet;
}
.soul-condition [class*="layui-col-"] {
margin-top: 10px;
}
/* 表格排序样式*/
.soul-edge {
display: inline-block;
width: 0;
height: 0;
border-width: 6px;
border-style: dashed;
border-color: transparent;
overflow: hidden
}
.soul-table-sort {
width: 10px;
height: 20px;
margin-left: 5px;
cursor: pointer !important;
position: relative;
display: inline-block;
}
.soul-table-sort .soul-edge {
position: absolute;
left: 5px;
border-width: 5px
}
.soul-table-sort .soul-table-sort-asc {
top: 10px;
border-top: none;
border-bottom-style: solid;
border-bottom-color: #b2b2b2
}
.soul-table-sort .soul-table-sort-asc:hover {
border-bottom-color: #666
}
.soul-table-sort .soul-table-sort-desc {
bottom: -2px;
border-bottom: none;
border-top-style: solid;
border-top-color: #b2b2b2
}
.soul-table-sort .soul-table-sort-desc:hover {
border-top-color: #666
}
.soul-table-sort[soul-sort=asc] .soul-table-sort-asc {
border-bottom-color: #000
}
.soul-table-sort[soul-sort=desc] .soul-table-sort-desc {
border-top-color: #000
}
.multiOption {
display: inline-block;
padding: 0 5px;
cursor: pointer;
color: #999;
}
/*表格筛选*/
.soul-table-filter {
line-height: 20px;
color: #b2b2b2;
cursor: pointer;
margin-left: 5px;
}
.soul-table-filter .soul-icon-filter-asc,.soul-table-filter .soul-icon-filter-desc {
display: none;
}
.soul-table-filter[lay-sort="asc"] .soul-icon-filter-asc{
display: block;
color: #000000;
}
.soul-table-filter[lay-sort="asc"] .soul-icon-filter,.soul-table-filter[lay-sort="asc"] .soul-icon-filter-desc{
display: none;
}
.soul-table-filter[lay-sort="desc"] .soul-icon-filter-desc{
display: block;
color: #000000;
}
.soul-table-filter[lay-sort="desc"] .soul-icon-filter,.soul-table-filter[lay-sort="desc"] .soul-icon-filter-asc{
display: none;
}
.soul-table-filter[soul-filter="true"] i {
color: #009688!important;
}
[id^=main-list], [id^=soul-columns], [id^=soul-dropList], [id^=soul-condition], [id^=soul-bf-prefix], [id^=soul-bf-column], [id^=soul-bf-type], [id^=soul-bf-cond2] {
display: inline-block;
position: absolute;
z-index: 2147483647;
background-color: white;
max-height: 200px;
min-width: 160px;
max-width: 300px;
overflow-y: auto;
border: 1px solid #e6e6e6;
border-radius: 5px;
box-shadow: 2px 2px 4px -2px rgba(0,0,0,.2);
}
[id^=main-list] {
max-height: initial;
}
[id^=soul-condition] {
overflow-y: visible;
max-height: initial;
min-width: 285px;
padding: 5px;
}
.staticDate{ margin-left: -271px; }
[id^=soul-condition] .layui-laydate-header {
padding: 4px 70px 5px
}
[id^=soul-condition] hr{
margin: 5px 0;
}
[id^=soul-condition].soul-bf{
min-width: 150px;
}
[id^=soul-filter-list] ul li {
padding: 3px 10px;
cursor: pointer;
}
[id^=soul-filter-list] ul li:hover {
background-color: deepskyblue;
}
[id^=soul-filter-list] i.layui-icon {
display: inline-block;
width: 16px;
}
[id^=soul-dropList] ul {
border: 0;
max-height: 116px;
overflow-y: auto;
}
[id^=soul-dropList] ul li, [id^=soul-filter-list] [id^=soul-columns]>li{
padding: 2px 10px;
}
[id^=soul-dropList] .check {
padding: 5px 10px;
}
.filter-search {
padding: 5px 10px 0 10px;
}
[id^=soul-condition] .layui-inline {
width: 100px;
}
[id^=soul-condition] table.condition-table tr>td {
padding: 0 3px;
}
[id^=soul-condition] table.condition-table tr>td:first-child {
min-width: 60px;
}
[id^=soul-condition] .layui-form-switch {
background-color: #1E9FFF;
border: 1px solid #1E9FFF;
width: 35px;
margin-top: 0px;
}
[id^=soul-condition] .layui-form-switch.layui-form-onswitch {
background-color: #5FB878;
border: 1px solid #5FB878;
}
[id^=soul-condition] .layui-form-switch em {
color: #fff!important;
}
[id^=soul-condition] .layui-form-switch i {
background-color: #fff;
}
[data-type^=date][class$=Condition] {
width: 273px;
}
/*表格筛选*/
[id^=soul-condition]>div{
width: 270px;
}
.soul-condition-title {
text-align: center;
font-weight: bolder;
}
/*底部筛选*/
.soul-bottom-contion {
height: 31px;
/*line-height: 29px;*/
border-top: solid 1px #e6e6e6;
}
.soul-bottom-contion .condition-items {
display: inline-block;
width: calc(100vw - 100px);
height: 30px;
float: left;
overflow: hidden;
white-space: nowrap;
}
.soul-bottom-contion .condition-item>div {
display: inline-block;
height: 28px;
line-height: 28px;
cursor: pointer;
}
.soul-bottom-contion .condition-items .condition-item>div[class^='item-']:hover{
text-decoration: underline;
}
.soul-bottom-contion .condition-items .condition-item{
padding: 0 10px;
margin: 0 2px;
font-weight: bold;
border: solid 1px darkslateblue;
border-radius: 10px;
display: inline-block;
height: 28px;
position: relative;
}
.soul-bottom-contion .editCondtion {
height: 30px;
float: right;
}
.soul-bottom-contion .item-value {
min-width: 20px;
display: inline-block;
}
.soul-bottom-contion .editCondtion a {
border: hidden;
border-left: solid 1px #e6e6e6;
height: 28px;
line-height: 29px;
}
.soul-bottom-contion .condition-items .condition-item .condition-item-close {
position: absolute;
cursor: pointer;
margin-top: -8px;
}
.soul-bottom-contion .condition-items>.condition-item>.condition-item-close {
margin-top: -2px;
}
.soul-bottom-contion .condition-items .condition-item .condition-item-close:hover{
color: red
}
.soul-bottom-contion .condition-items .condition-item .condition-item-close:before {
background: white;
border-radius: 10px;
}
.soul-edit-out {
padding: 10px;
}
[id^=soul-bf] li {
padding: 0px 10px;
height: 22px;
line-height: 22px;
color: #000;
cursor: pointer;
}
[id^=soul-bf] li.soul-bf-selected {
background-color: deepskyblue;
}
[id^=soul-bf] li:hover {
background-color: deepskyblue;
}
.soul-edit-out .tempValue {
height: 25px;
}
.soul-bf-condition-value {
display: inline;
width: 100px;
}
/*子表格*/
.layui-table tbody tr.noHover:hover {
background-color: white;
}
/*编辑筛选*/
.soul-edit-out .layui-form-radio {
margin: 0;
}
.soul-edit-out ul li > div {
display: inline-block;
margin-right: 10px;
height: 25px;
vertical-align: top;
cursor: pointer;
}
.soul-edit-out ul.group {
padding-left: 50px;
}
.soul-edit-out ul.group.line {
border-left: 1px dashed grey;
}
.soul-edit-out ul li {
line-height: 25px;
}
.soul-edit-out table {
display: inline-block;
}
.soul-edit-out table td[data-type='top'] {
width: 12px;
height: 12px;
border-left: dashed 1px grey;
border-bottom: dashed 1px grey;
}
.soul-edit-out table td[data-type='bottom'] {
width: 12px;
height: 12px;
border-left: dashed 1px grey;
}
.soul-edit-out li.last>div>table td[data-type='bottom'] {
border-left: none;
}
.soul-edit-out .layui-form-switch {
background-color: #1E9FFF;
border: 1px solid #1E9FFF;
width: 35px;
margin-top: 0px;
}
.soul-edit-out .layui-form-switch em {
color: #fff!important;
}
.soul-edit-out .layui-form-switch i {
background-color: #fff;
}
.soul-edit-out .layui-form-switch.layui-form-onswitch {
background-color: #5FB878;
border: 1px solid #5FB878;
}
.soul-edit-out .delete-item {
display: none;
}
.soul-edit-out li:hover>.delete-item {
display: inline-block;
}
/* 拖拽相关 */
#column-remove {
position: absolute;
z-index: 2147483647;
}
.layui-table-box.no-left-border td.isDrag, .layui-table-box.no-left-border th.isDrag {
border-left: inherit!important;
}
.soul-drag-bar {
position: absolute;
top: 100px;
z-index: 200;
left: 50%;
font-weight: 900;
color: white;
box-shadow: 0 1px 20px rgba(0,0,0,.15);
text-align: center;
transform: translateX(100vw);
/*transition: transform .3s;*/
}
.soul-drag-bar.active {
transform: translateX(-98px);
}
.soul-drag-bar > div {
display: inline-block;
padding: 10px;
cursor: crosshair;
width: 62px;
background-color: rgb(0, 150, 136, 0.5);
}
.soul-drag-bar > div.active, .soul-drag-bar[data-type='left']>div[data-type='left'], .soul-drag-bar[data-type='right']>div[data-type='right'], .soul-drag-bar[data-type='none']>div[data-type='none'] {
background-color: rgb(0, 150, 136);
}
/* 动画 */
.animated {
-webkit-animation-duration: 1s;
-moz-animation-duration: 1s;
-o-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
-moz-animation-fill-mode: both;
-o-animation-fill-mode: both;
animation-fill-mode: both;
}
@-moz-keyframes fadeInLeft {
0% {
opacity: 0;
-moz-transform: translateX(-20px);
}
100% {
opacity: 1;
-moz-transform: translateX(0);
}
}
@-o-keyframes fadeInLeft {
0% {
opacity: 0;
-o-transform: translateX(-20px);
}
100% {
opacity: 1;
-o-transform: translateX(0);
}
}
@keyframes fadeInLeft {
0% {
opacity: 0;
transform: translateX(-20px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
.animated.fadeInLeft {
-webkit-animation-name: fadeInLeft;
-moz-animation-name: fadeInLeft;
-o-animation-name: fadeInLeft;
animation-name: fadeInLeft;
}
@-webkit-keyframes fadeOutLeft {
0% {
opacity: 1;
-webkit-transform: translateX(0);
}
100% {
opacity: 0;
-webkit-transform: translateX(-20px);
}
}
@-moz-keyframes fadeOutLeft {
0% {
opacity: 1;
-moz-transform: translateX(0);
}
100% {
opacity: 0;
-moz-transform: translateX(-20px);
}
}
@-o-keyframes fadeOutLeft {
0% {
opacity: 1;
-o-transform: translateX(0);
}
100% {
opacity: 0;
-o-transform: translateX(-20px);
}
}
@keyframes fadeOutLeft {
0% {
opacity: 1;
transform: translateX(0);
}
100% {
opacity: 0;
transform: translateX(-20px);
}
}
.animated.fadeOutLeft {
-webkit-animation-name: fadeOutLeft;
-moz-animation-name: fadeOutLeft;
-o-animation-name: fadeOutLeft;
animation-name: fadeOutLeft;
}
@-webkit-keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
}
}
@-moz-keyframes fadeInRight {
0% {
opacity: 0;
-moz-transform: translateX(20px);
}
100% {
opacity: 1;
-moz-transform: translateX(0);
}
}
@-o-keyframes fadeInRight {
0% {
opacity: 0;
-o-transform: translateX(20px);
}
100% {
opacity: 1;
-o-transform: translateX(0);
}
}
@keyframes fadeInRight {
0% {
opacity: 0;
transform: translateX(20px);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
.animated.fadeInRight {
-webkit-animation-name: fadeInRight;
-moz-animation-name: fadeInRight;
-o-animation-name: fadeInRight;
animation-name: fadeInRight;
}
@-webkit-keyframes fadeInUp {
0% {
opacity: 0;
-webkit-transform: translateY(20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
}
}
@-moz-keyframes fadeInUp {
0% {
opacity: 0;
-moz-transform: translateY(20px);
}
100% {
opacity: 1;
-moz-transform: translateY(0);
}
}
@-o-keyframes fadeInUp {
0% {
opacity: 0;
-o-transform: translateY(20px);
}
100% {
opacity: 1;
-o-transform: translateY(0);
}
}
@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.animated.fadeInUp {
-webkit-animation-name: fadeInUp;
-moz-animation-name: fadeInUp;
-o-animation-name: fadeInUp;
animation-name: fadeInUp;
}
@-webkit-keyframes fadeOutDown {
0% {
opacity: 1;
-webkit-transform: translateY(0);
}
100% {
opacity: 0;
-webkit-transform: translateY(20px);
}
}
@-moz-keyframes fadeOutDown {
0% {
opacity: 1;
-moz-transform: translateY(0);
}
100% {
opacity: 0;
-moz-transform: translateY(20px);
}
}
@-o-keyframes fadeOutDown {
0% {
opacity: 1;
-o-transform: translateY(0);
}
100% {
opacity: 0;
-o-transform: translateY(20px);
}
}
@keyframes fadeOutDown {
0% {
opacity: 1;
transform: translateY(0);
}
100% {
opacity: 0;
transform: translateY(20px);
}
}
.animated.fadeOutDown {
-webkit-animation-name: fadeOutDown;
-moz-animation-name: fadeOutDown;
-o-animation-name: fadeOutDown;
animation-name: fadeOutDown;
}
.soul-table-contextmenu {
position: absolute;
z-index: 200;
list-style: none;
margin: 0;
padding: 0;
border: 1px solid #ebeef5;
box-shadow: 2px 2px 4px -2px rgba(0,0,0,.2);
background: white;
}
.soul-table-contextmenu li {
line-height: 26px;
padding: 0 30px;
cursor: pointer;
word-break: keep-all;
}
.soul-table-contextmenu li:hover {
background: #c5c5c5;
}
.soul-table-contextmenu li i.prefixIcon{
position: absolute;
left: 8px;
}
.soul-table-contextmenu li i.endIcon{
position: absolute;
right: 8px;
}
/*拖拽相关*/
.layui-table-sort-invalid {
width: 10px;
height: 20px;
margin-left: 5px;
cursor: pointer!important;
}
.layui-table-sort-invalid .layui-table-sort-asc {
top: 3px;
border-top: none;
border-bottom-style: solid;
border-bottom-color: #b2b2b2;
}
.layui-table-sort-invalid .layui-edge {
position: absolute;
left: 5px;
border-width: 5px;
}
.layui-table-sort-invalid .layui-table-sort-desc {
bottom: 5px;
border-bottom: none;
border-top-style: solid;
border-top-color: #b2b2b2;
}
.layui-table-sort-invalid .layui-edge {
position: absolute;
left: 5px;
border-width: 5px;
}

32
src/App.vue

@ -0,0 +1,32 @@
<template>
<div id="app">
<!-- <nav>
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</nav> -->
<router-view />
</div>
</template>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
nav {
padding: 30px;
}
nav a {
font-weight: bold;
color: #2c3e50;
}
nav a.router-link-exact-active {
color: #42b983;
}
</style>

BIN
src/assets/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

48
src/components/HelloWorld.vue

@ -0,0 +1,48 @@
<template>
<div>
<div id="kc-container"></div>
</div>
</template>
<script>
// import $ from 'jquery';
// import kline from '../../static/kline/src/klineCharts.js';
export default {
name: "HelloWorld",
props: ["name"],
data() {
return {
loadingIndex: null
}
},
watch:{
name(){
initKlineChart()
console.log('111');
// if(name){
// console.log('111');
// this.init()
// }
}
},
mounted() {
this.init()
},
methods: {
init() {
kcStart({
containerId: 'kc-container',
symbol: this.name,
coinScale: parseInt('5'), //
volumeScale: parseInt('5'), //
interval: '15',
timezone: "America/Toronto",
language: 'zh_TW'
})
}
},
};
</script>
<style scoped>
</style>

12
src/main.js

@ -0,0 +1,12 @@
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
Vue.config.productionTip = false;
new Vue({
router,
store,
render: (h) => h(App),
}).$mount("#app");

26
src/router/index.js

@ -0,0 +1,26 @@
import Vue from "vue";
import VueRouter from "vue-router";
import HomeView from "../views/HomeView.vue";
Vue.use(VueRouter);
const routes = [
{
path: "/",
name: "home",
component: HomeView,
},
{
path: "/about",
name: "about",
component: () => import("../views/AboutView.vue"),
},
];
const router = new VueRouter({
mode: "history",
base: process.env.BASE_URL,
routes,
});
export default router;

12
src/store/index.js

@ -0,0 +1,12 @@
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
export default new Vuex.Store({
state: {},
getters: {},
mutations: {},
actions: {},
modules: {},
});

5
src/views/AboutView.vue

@ -0,0 +1,5 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>

126
src/views/HomeView.vue

@ -0,0 +1,126 @@
<template>
<div class="home">
<div class="layui-layout layui-layout-admin">
<!-- 左侧导航 -->
<div class="layui-side layui-bg-black" style="top: 0 !important;">
<p class="market_list border-bottom-grey" style="color: #1AA094">交易市场</p>
<!-- <a href="index.html"><p class="market_list border-bottom-grey">PYTNUSDT</p></a>
<a href="oige.html"><p class="market_list border-bottom-grey">OIGEUSDT</p></a>
<a href="gql.html"><p class="market_list border-bottom-grey">GQLUSDT</p></a>
<a href="rpn.html"><p class="market_list border-bottom-grey">RPNUSDT</p></a> -->
<p class="market_list border-bottom-grey" @click="handleClick('PYTN')" :style="{'color': title=='PYTN'?'red':'white'}">PYTNUSDT</p>
<p class="market_list border-bottom-grey" @click="handleClick('OIGE')" :style="{'color': title=='OIGE'?'red':'white'}">OIGEUSDT</p>
<p class="market_list border-bottom-grey" @click="handleClick('GQL')" :style="{'color': title=='GQL'?'red':'white'}">GQLUSDT</p>
<p class="market_list border-bottom-grey" @click="handleClick('RPN')" :style="{'color': title=='RPN'?'red':'white'}">RPNUSDT</p>
</div>
<!-- 右侧内容 -->
<div class="layui-body" style="top: 0 !important;bottom:0">
<blockquote class="layui-elem-quote title">
{{title+'USDT'}}
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="1" style="margin-left:20px;">1分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="5">5分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn active" type="button"
data-interval="15">15分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="30">
30分钟
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="60">1小时
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="240">
4小时
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="D">
</button>
<button class="layui-btn layui-btn-primary layui-btn-sm interval_btn" type="button"
data-interval="W">
</button>
</blockquote>
<HelloWorld :name='title'></HelloWorld>
</div>
</div>
</div>
</template>
<script>
import $ from 'jquery';
// import 'layui-src/src/layui.js';
// import 'layui-src/src/css/layui.css';
import HelloWorld from '@/components/HelloWorld.vue';
// import '../../static/kline/src/klineCharts.js';
export default {
name: "HomeView",
components: {
HelloWorld
},
data() {
return {
title:"PYTN"
};
},
mounted() {
$('.interval_btn').on('click', function(){
if(kcChart != null || kcChart != undefined){
var _this = $(this);
kcCurrentData.interval = _this.attr('data-interval');
//
kcHistoryKeyId = 1;
var rang = setKLineVisibleRange(parseInt(Date.now() / 1000));
$.ajax({
url: "https://dfmg.dficoins.com/api/getkkline",
type: 'get',
async: false,
data: {
symbol: getSymbol(),
interval: getSecondsByInterval(kcCurrentData.interval),
times: kcHistoryKeyId,
from: rang.from,
to: rang.to + (365 * 86400)
},
beforeSend: function(){
loading_index = layer.load(1, {
shade: [0.1, '#fff'] //0.1
});
},
success:function (result) { //
console.log(result);
if(result.status){
loadMoreKline(result.data, true, result.code);
$('.interval_btn').removeClass('active');
_this.addClass('active');
}else{
}
layer.close(loading_index);
},
error: function(xhr){
layer.close(loading_index);
}
});
}
})
},
methods: {
handleClick(name){
this.title = name
}
}
};
</script>
<style scoped>
@import '../../public/static/kline/src/index.css';
@import '../../public/static/kline/src/kline.css';
/* @import '../../static/kline/src/public.css'; */
/* @import '../../static/kline/src/iconfont.css'; */
@import '../../public/static/kline/src/public(1).css';
@import '../../public/static/kline/src/soulTable.css';
</style>

27
vue.config.js

@ -0,0 +1,27 @@
const { defineConfig } = require("@vue/cli-service");
var webpack = require('webpack')
module.exports = defineConfig({
transpileDependencies: true,
lintOnSave:false,
// devServer: {
// proxy: {
// "/api": {
// target: 'http://xxxxxxxxxxx.com',//代理地址 凡是使用/api
// changeOrigin: true,//允许跨域请求
// secure: false,
// pathRewrite: { //重写路径 替换请求地址中的指定路径
// ['^/api']: '/' //将请求地址中的api替换为空
// }
// }
// }
// }
configureWebpack: {
plugins: [
new webpack.ProvidePlugin({
$:"jquery",
jQuery:"jquery",
"windows.jQuery":"jquery"
})
]
}
});
Loading…
Cancel
Save