first commit
@@ -0,0 +1,9 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
Options +FollowSymlinks -Multiviews
|
||||
RewriteEngine On
|
||||
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
# RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
|
||||
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
|
||||
</IfModule>
|
||||
@@ -0,0 +1 @@
|
||||
0R0p-0IhSrZMKiookruKlRGMKn8GkDZTPQx4b4UK6Lo.AYcoB9mjvyHsMDRQrxEJvsZaIEtDHEkl0Hqed5s-LUI
|
||||
@@ -0,0 +1,26 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||
<title>404</title>
|
||||
<style>
|
||||
body{
|
||||
background-color:#444;
|
||||
font-size:14px;
|
||||
}
|
||||
h3{
|
||||
font-size:60px;
|
||||
color:#eee;
|
||||
text-align:center;
|
||||
padding-top:30px;
|
||||
font-weight:normal;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h3>404锛屾偍璇锋眰鐨勬枃浠朵笉瀛樺湪!</h3>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,177 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>后台管理</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
|
||||
<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="stylesheet" href="layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="css/global.css?t=1531663423583-6" media="all">
|
||||
<style type="text/css">ins.adsbygoogle{display:none!important;display:none}</style></head>
|
||||
<body>
|
||||
<div class="layui-layout layui-layout-admin">
|
||||
<div class="layui-header header header-demo" summer>
|
||||
<div class="layui-main">
|
||||
<span style="color: white;font-size: 30px;font-weight:100;line-height: 58px;font-family:Microsoft JhengHei">后台管理</span>
|
||||
|
||||
<ul class="layui-nav layui-layout-right">
|
||||
<li class="layui-nav-item">
|
||||
<a href="javascript:;">
|
||||
|
||||
管理员
|
||||
</a>
|
||||
<dl class="layui-nav-child">
|
||||
<dd><a href="index.html">退出</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
<!-- <li class="layui-nav-item"><a href="">退出</a></li> -->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 让IE8/9支持媒体查询,从而兼容栅格 -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
|
||||
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<div class="layui-side layui-bg-black">
|
||||
<div class="layui-side-scroll">
|
||||
|
||||
<ul class="layui-nav layui-nav-tree site-demo-nav" id="v_menu">
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-body layui-tab-content site-demo site-demo-body">
|
||||
<div class="layui-tab-item layui-show">
|
||||
<div class="layui-main">
|
||||
<div id="LAY_preview">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="site-tree-mobile layui-hide" style="opacity: 0.4;">
|
||||
<i class="layui-icon"></i>
|
||||
</div>
|
||||
<div class="site-mobile-shade"></div>
|
||||
<script src="layui/layui.js?t=1531663423583" charset="utf-8"></script>
|
||||
<script>
|
||||
window.global = {
|
||||
pageType: 'demo'
|
||||
,preview: function(){
|
||||
var preview = document.getElementById('LAY_preview');
|
||||
return preview ? preview.innerHTML : '';
|
||||
}()
|
||||
};
|
||||
layui.config({
|
||||
base: 'js/'
|
||||
,version: '1531663423583'
|
||||
}).use('global');
|
||||
</script>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
|
||||
layui.use(['layer','element'], function(){
|
||||
var $ = layui.$
|
||||
,setIframe = function(){
|
||||
var height = $(window).height() - 370;
|
||||
$('#demoAdmin').height(height);
|
||||
};
|
||||
|
||||
setIframe();
|
||||
$(window).on('resize', setIframe);
|
||||
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
<script src="https://lib.baomitu.com/jquery/3.3.1/jquery.min.js"></script>
|
||||
<script src="js/llqrcode.js" type="text/javascript" charset="utf-8"></script>
|
||||
<script type="text/javascript">
|
||||
function getObjectURL(file) {
|
||||
var url = null;
|
||||
if (window.createObjectURL != undefined) {
|
||||
url = window.createObjectURL(file);
|
||||
} else if (window.URL != undefined) {
|
||||
url = window.URL.createObjectURL(file);
|
||||
} else if (window.webkitURL != undefined) {
|
||||
url = window.webkitURL.createObjectURL(file);
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
$("#LAY_preview").load("main.html")
|
||||
|
||||
$.post("getMenu",function (data) {
|
||||
if (data == null || data == "" || data.code==-1) {
|
||||
window.location.href = "index.html";
|
||||
}
|
||||
setTimeout(function () {
|
||||
$.post("admin/index/checkUpdate",function (data) {
|
||||
if (data.code==1) {
|
||||
|
||||
layer.confirm(data.msg, {
|
||||
btn: ['去看看','算啦'],
|
||||
title:"有更新啦"
|
||||
}, function(){
|
||||
window.location.href = data.data;
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
},2000);
|
||||
|
||||
|
||||
console.log(data);
|
||||
var out_menu = "";
|
||||
for (var i = 0;i<data.length;i++){
|
||||
if (data[i].type=="menu"){
|
||||
out_menu+='<li class="layui-nav-item layui-nav-itemed">';
|
||||
out_menu+='<a class="" href="javascript:;">'+data[i].name+'</a>';
|
||||
out_menu+='<dl class="layui-nav-child">';
|
||||
|
||||
for (var ii = 0;ii<data[i].node.length;ii++){
|
||||
out_menu+='<dd><a onclick="$(\'#LAY_preview\').load(\''+data[i].node[ii].url+'\');">'+data[i].node[ii].name+'</a></dd>';
|
||||
}
|
||||
out_menu+='</dl>';
|
||||
out_menu+='</li>';
|
||||
} else{
|
||||
out_menu+='<li class="layui-nav-item"><a onclick="$(\'#LAY_preview\').load(\''+data[i].url+'\');">'+data[i].name+'</a></li>';
|
||||
}
|
||||
}
|
||||
console.log(out_menu);
|
||||
$("#v_menu").append(out_menu);
|
||||
if (layui.element)
|
||||
layui.element.render();
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,163 @@
|
||||
|
||||
<style>
|
||||
.layui-table-cell {
|
||||
height: auto;
|
||||
}
|
||||
.layui-table img {
|
||||
max-width: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn layui-btn-normal" id="testList">选择微信有金额的二维码</button>
|
||||
<button type="button" class="layui-btn" onclick="saveqr()">保存二维码</button>
|
||||
|
||||
<table class="layui-hide" id="test" lay-filter="wxqrlist"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</script>
|
||||
<script>
|
||||
var imgs = {},mytable;
|
||||
var duilie = 0;
|
||||
layui.use('upload', function() {
|
||||
var $ = layui.jquery
|
||||
, upload = layui.upload;
|
||||
|
||||
mytable = layui.table.render({
|
||||
elem: '#test'
|
||||
,data:imgs
|
||||
,cols: [[
|
||||
{type:'numbers',title: '序号'}
|
||||
|
||||
,{field:'', width:230, title: '二维码', templet:function (data) {
|
||||
return "<img src='"+data.b64+"'/>"
|
||||
}
|
||||
}
|
||||
,{field:'url', minWidth:150, title: '内容'}
|
||||
,{field:'money',width:100, title: '金额',edit:"text"}
|
||||
,{title: '操作', minWidth: 80, align:'center', toolbar: '#barDemo'}
|
||||
|
||||
]],
|
||||
page:true
|
||||
});
|
||||
//监听工具条
|
||||
layui.table.on('tool(wxqrlist)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('真的删除行么', function(index){
|
||||
obj.del();
|
||||
imgs = layui.table.cache.test;
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
//多文件列表示例
|
||||
var demoListView = $('#demoList')
|
||||
,uploadListIns = upload.render({
|
||||
elem: '#testList'
|
||||
,url: '/upload/'
|
||||
,accept: 'file'
|
||||
,multiple: true
|
||||
,auto: false
|
||||
,bindAction: '#testListAction'
|
||||
,choose: function(obj){
|
||||
imgs = [];
|
||||
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
|
||||
layer.msg("等待所有二维码识别完毕后手动输入金额,输入完成后点击保存二维码")
|
||||
// layer.msg('处理中', {
|
||||
// icon: 16
|
||||
// ,shade: 0.01
|
||||
// ,time:0
|
||||
// });
|
||||
|
||||
//读取本地文件
|
||||
obj.preview(function(index, file, result){
|
||||
// $.post("qr-code/test.php","base64="+encodeURIComponent(result.split(",")[1]),function (data) {
|
||||
// console.log(data)
|
||||
// if (!data.data) {
|
||||
// data = JSON.parse(data);
|
||||
// }
|
||||
// imgs.push({"index":imgs.length,"money":"","b64":result,"url":data.data});
|
||||
// mytable.reload({
|
||||
// data: imgs
|
||||
// });
|
||||
// });
|
||||
//console.log(index)
|
||||
|
||||
qrcode.decode(getObjectURL(file),result);
|
||||
qrcode.callback = function(imgMsg,img64) {
|
||||
console.log(imgMsg);
|
||||
|
||||
if (imgMsg==""){
|
||||
$.post("qr-code/test.php","base64="+encodeURIComponent(img64.split(",")[1]),function (data) {
|
||||
console.log(data)
|
||||
if (!data.data) {
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
|
||||
imgs.push({"index":imgs.length,"money":"","b64":img64,"url":data.data});
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
});
|
||||
} else{
|
||||
imgs.push({"index":imgs.length,"money":"","b64":img64,"url":imgMsg});
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
function saveqr() {
|
||||
var data = layui.table.cache.test;
|
||||
for (var i = 0;i<data.length;i++){
|
||||
if (data[i].money =="" || checkRate(data[i].money == false)){
|
||||
layer.msg("序号为"+(i+1)+"的二维码金额有误,请检查");
|
||||
return;
|
||||
}
|
||||
}
|
||||
up(data,0);
|
||||
}
|
||||
function up(obj,index) {
|
||||
if (obj.length==index){
|
||||
layer.msg("操作成功!");
|
||||
imgs = []
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
return;
|
||||
}
|
||||
$.post("admin/index/addPayQrcode","type=1&pay_url="+encodeURIComponent(obj[index].url)+"&price="+obj[index].money,function (data) {
|
||||
up(obj,index+1)
|
||||
});
|
||||
}
|
||||
|
||||
function checkRate(input) {
|
||||
|
||||
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
|
||||
|
||||
|
||||
|
||||
if (!re.test(input)) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,153 @@
|
||||
|
||||
<style>
|
||||
.layui-table-cell {
|
||||
height: auto;
|
||||
}
|
||||
.layui-table img {
|
||||
max-width: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn layui-btn-normal" id="testList">选择支付宝有金额的二维码</button>
|
||||
<button type="button" class="layui-btn" onclick="saveqr()">保存二维码</button>
|
||||
|
||||
<table class="layui-hide" id="test" lay-filter="wxqrlist"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</script>
|
||||
<script>
|
||||
var imgs = {},mytable;
|
||||
layui.use('upload', function() {
|
||||
var $ = layui.jquery
|
||||
, upload = layui.upload;
|
||||
|
||||
mytable = layui.table.render({
|
||||
elem: '#test'
|
||||
,data:imgs
|
||||
,cols: [[
|
||||
{type:'numbers',title: '序号'}
|
||||
|
||||
,{field:'', width:230, title: '二维码', templet:function (data) {
|
||||
return "<img src='"+data.b64+"'/>"
|
||||
}
|
||||
}
|
||||
,{field:'url', minWidth:150, title: '内容'}
|
||||
,{field:'money',width:100, title: '金额',edit:"text"}
|
||||
,{title: '操作', minWidth: 80, align:'center', toolbar: '#barDemo'}
|
||||
|
||||
]],
|
||||
page:true
|
||||
});
|
||||
//监听工具条
|
||||
layui.table.on('tool(wxqrlist)', function(obj){
|
||||
var data = obj.data;
|
||||
if(obj.event === 'del'){
|
||||
layer.confirm('真的删除行么', function(index){
|
||||
obj.del();
|
||||
imgs = layui.table.cache.test;
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
layer.close(index);
|
||||
});
|
||||
}
|
||||
});
|
||||
//多文件列表示例
|
||||
var demoListView = $('#demoList')
|
||||
,uploadListIns = upload.render({
|
||||
elem: '#testList'
|
||||
,url: '/upload/'
|
||||
,accept: 'file'
|
||||
,multiple: true
|
||||
,auto: false
|
||||
,bindAction: '#testListAction'
|
||||
,choose: function(obj){
|
||||
imgs = [];
|
||||
var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
|
||||
layer.msg("等待所有二维码识别完毕后手动输入金额,输入完成后点击保存二维码")
|
||||
//读取本地文件
|
||||
obj.preview(function(index, file, result){
|
||||
/*
|
||||
$.post("qr-code/test.php","base64="+encodeURIComponent(result.split(",")[1]),function (data) {
|
||||
console.log(data)
|
||||
if (!data.data) {
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
|
||||
imgs.push({"index":imgs.length,"money":"","b64":result,"url":data.data});
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
});
|
||||
*/
|
||||
qrcode.decode(getObjectURL(file),result);
|
||||
qrcode.callback = function(imgMsg,img64) {
|
||||
if (imgMsg==""){
|
||||
$.post("qr-code/test.php","base64="+encodeURIComponent(img64.split(",")[1]),function (data) {
|
||||
console.log(data)
|
||||
if (!data.data) {
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
imgs.push({"index":imgs.length,"money":"","b64":img64,"url":data.data});
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
});
|
||||
} else{
|
||||
imgs.push({"index":imgs.length,"money":"","b64":img64,"url":imgMsg});
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function saveqr() {
|
||||
var data = layui.table.cache.test;
|
||||
for (var i = 0;i<data.length;i++){
|
||||
if (data[i].money =="" || checkRate(data[i].money == false)){
|
||||
layer.msg("序号为"+(i+1)+"的二维码金额有误,请检查");
|
||||
return;
|
||||
}
|
||||
}
|
||||
up(data,0);
|
||||
}
|
||||
function up(obj,index) {
|
||||
if (obj.length==index){
|
||||
layer.msg("操作成功!");
|
||||
imgs = []
|
||||
mytable.reload({
|
||||
data: imgs
|
||||
});
|
||||
return;
|
||||
}
|
||||
$.post("admin/index/addPayQrcode","type=2&pay_url="+encodeURIComponent(obj[index].url)+"&price="+obj[index].money,function (data) {
|
||||
up(obj,index+1)
|
||||
});
|
||||
}
|
||||
|
||||
function checkRate(input) {
|
||||
|
||||
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
|
||||
|
||||
|
||||
|
||||
if (!re.test(input)) {
|
||||
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,96 @@
|
||||
<div class="layui-form" action="">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">监控端状态</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="jkstate" value="" lay-verify="required" placeholder="监控端状态" autocomplete="off" readonly class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">最后心跳</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="lastheart" lay-verify="required" placeholder="最后心跳时间" autocomplete="off" readonly class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">最后收款</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="lastpay" lay-verify="required" placeholder="最后收款时间" autocomplete="off" readonly class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">配置数据</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="input" lay-verify="required" placeholder="手动配置数据" autocomplete="off" readonly class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">配置二维码</label>
|
||||
<div class="layui-input-block">
|
||||
<img id="pzqrcode">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item" style="text-align: right">
|
||||
<button class="layui-btn" onclick="window.open('../v.apk')">下载监控端</button>
|
||||
<button class="layui-btn" onclick="window.open('https://github.com/szvone/vmqApk/releases')">最新版监控端下载</button>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!--<div class="layui-form-item layui-form-text">-->
|
||||
<!--<label class="layui-form-label">设置进入网站的提示</label>-->
|
||||
<!--<div class="layui-input-block">-->
|
||||
<!--<textarea placeholder="请输入公告内容" id="xz" class="layui-textarea"></textarea>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-form-item">-->
|
||||
<!--<button class="layui-btn" onclick="editxz()">保存</button>-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function formatDate(now) {
|
||||
if (now==0) {
|
||||
return "无";
|
||||
}
|
||||
now = new Date(now*1000);
|
||||
return now.getFullYear()
|
||||
+ "-" + (now.getMonth()>8?(now.getMonth()+1):"0"+(now.getMonth()+1))
|
||||
+ "-" + (now.getDate()>9?now.getDate():"0"+now.getDate())
|
||||
+ " " + (now.getHours()>9?now.getHours():"0"+now.getHours())
|
||||
+ ":" + (now.getMinutes()>9?now.getMinutes():"0"+now.getMinutes())
|
||||
+ ":" + (now.getSeconds()>9?now.getSeconds():"0"+now.getSeconds());
|
||||
|
||||
}
|
||||
layui.use(['form','layer'], function(){
|
||||
var table = layui.table,form = layui.form;
|
||||
|
||||
form.render();
|
||||
|
||||
});
|
||||
|
||||
|
||||
$.post("admin/index/getSettings",function (data) {
|
||||
console.log(data);
|
||||
if (data.code==1){
|
||||
if (data.data.jkstate == -1){
|
||||
$("#jkstate").val("监控端未绑定,请您扫码绑定");
|
||||
}else if (data.data.jkstate == 0){
|
||||
$("#jkstate").val("监控端已掉线,请您检查App是否正常运行");
|
||||
}else if (data.data.jkstate == 1){
|
||||
$("#jkstate").val("运行正常");
|
||||
}
|
||||
|
||||
$("#lastheart").val(formatDate(data.data.lastheart));
|
||||
$("#lastpay").val(formatDate(data.data.lastpay));
|
||||
|
||||
var img = window.location.host+"/"+data.data.key;
|
||||
|
||||
$("#input").val(img);
|
||||
$("#pzqrcode").attr("src","enQrcode?url="+img);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@@ -0,0 +1,274 @@
|
||||
<div class="layui-form layui-form-pane" action="">
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">支付方式</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="type" lay-verify="required" lay-filter="type">
|
||||
<option value="">不限制</option>
|
||||
<option value="1">微信</option>
|
||||
<option value="2">支付宝</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="state" lay-verify="required" lay-filter="state">
|
||||
<option value="">不限制</option>
|
||||
<option value="-1">过期</option>
|
||||
<option value="0">待支付</option>
|
||||
<option value="1">完成</option>
|
||||
<option value="2">通知失败</option>
|
||||
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolbarDemo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="delGq">删除所有过期订单</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-danger" lay-event="delLast">删除七天前订单</button>
|
||||
|
||||
</div>
|
||||
</script>
|
||||
<table id="demo" lay-filter="test"></table>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="bd">补单</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="info">详情</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
function formatDate(now) {
|
||||
if (now=="0"){
|
||||
return "无";
|
||||
}
|
||||
|
||||
now = new Date(now*1000);
|
||||
return now.getFullYear()
|
||||
+ "-" + (now.getMonth()>8?(now.getMonth()+1):"0"+(now.getMonth()+1))
|
||||
+ "-" + (now.getDate()>9?now.getDate():"0"+now.getDate())
|
||||
+ " " + (now.getHours()>9?now.getHours():"0"+now.getHours())
|
||||
+ ":" + (now.getMinutes()>9?now.getMinutes():"0"+now.getMinutes())
|
||||
+ ":" + (now.getSeconds()>9?now.getSeconds():"0"+now.getSeconds());
|
||||
|
||||
}
|
||||
var myTable,table,form;
|
||||
layui.use(['form','table','laydate'], function(){
|
||||
table = layui.table;
|
||||
form = layui.form;
|
||||
|
||||
//第一个实例
|
||||
myTable = table.render({
|
||||
elem: '#demo'
|
||||
,height: 'full-160'
|
||||
,url: 'admin/index/getOrders'
|
||||
,toolbar: '#toolbarDemo'
|
||||
,where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
,cols: [[ //表头
|
||||
{field: 'create_date', title: '创建时间',minWidth:160,templet: function(d){
|
||||
return formatDate(d.create_date);
|
||||
}
|
||||
},
|
||||
{field: 'pay_id', title: '商户编号',minWidth:180},
|
||||
{field: 'order_id', title: '云端订单编号',minWidth:180},
|
||||
{field: 'type', title: '支付方式',minWidth:100,templet: function(d){
|
||||
if (d.type=="1"){
|
||||
return '微信';
|
||||
}else if (d.type=="2"){
|
||||
return '支付宝';
|
||||
}
|
||||
}
|
||||
},
|
||||
{field: 'price', title: '订单金额',minWidth:100, align:'center'},
|
||||
{field: 'really_price', title: '实际金额',minWidth:100, align:'center'},
|
||||
|
||||
|
||||
{field: 'state', title: '状态',minWidth:80,templet: function(d){
|
||||
if (d.state=="2"){
|
||||
return '<span style="color: orange">通知失败</span>';
|
||||
}else if (d.state=="1"){
|
||||
return '<span style="color: green">完成</span>';
|
||||
}else if (d.state=="0"){
|
||||
return '<span style="color: orange">待支付</span>';
|
||||
}else if (d.state=="-1"){
|
||||
return '<span style="color: red">过期</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{title: '操作', minWidth: 120, align:'center', toolbar: '#barDemo'}
|
||||
|
||||
]]
|
||||
,page:true
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
|
||||
var data = obj.data //获得当前行数据
|
||||
,layEvent = obj.event; //获得 lay-event 对应的值
|
||||
if(layEvent === 'info'){
|
||||
var out = "<p>创建时间:"+formatDate(data.create_date)+"</p>";
|
||||
out += "<p>支付时间:"+formatDate(data.pay_date)+"</p>";
|
||||
out += "<p>关闭时间:"+formatDate(data.close_date)+"</p>";
|
||||
out += "<p>自定义参数:"+data.param+"</p>";
|
||||
layer.alert(out);
|
||||
|
||||
}else if(layEvent === 'bd'){
|
||||
layer.confirm('确定要补单吗?该操作将会将该订单标记为已支付,并向您的服务器发送订单完成通知', function(index){
|
||||
layer.msg('操作中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
});
|
||||
|
||||
$.post("admin/index/setBd","id="+data.id,function (data) {
|
||||
if (data.code==1){
|
||||
layer.msg("操作成功!");
|
||||
myTable.reload({
|
||||
where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
});
|
||||
}else if(data.code==-2){
|
||||
layer.confirm('补单失败,异步通知返回错误,是否查看通知返回数据?', {
|
||||
btn: ['查看','取消'] //按钮
|
||||
}, function(){
|
||||
alert(data.data);
|
||||
}, function(){
|
||||
|
||||
});
|
||||
}else{
|
||||
layer.msg(data.msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
console.log(data.id);
|
||||
});
|
||||
}else if(layEvent === 'del'){
|
||||
layer.confirm('确定要删除订单吗?', function(index){
|
||||
layer.msg('操作中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
});
|
||||
|
||||
$.post("admin/index/delOrder","id="+data.id,function (data) {
|
||||
if (data.code==1){
|
||||
layer.msg("操作成功!");
|
||||
myTable.reload({
|
||||
where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(data.msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
console.log(data.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
form.on('select(state)', function(data){
|
||||
myTable.reload({
|
||||
where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
form.on('select(type)', function(data){
|
||||
myTable.reload({
|
||||
where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
//头工具栏事件
|
||||
table.on('toolbar(test)', function(obj){
|
||||
var checkStatus = table.checkStatus(obj.config.id);
|
||||
switch(obj.event){
|
||||
case 'delGq':
|
||||
layer.confirm('确定要删除所有过期订单吗?', function(index){
|
||||
layer.msg('操作中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
});
|
||||
|
||||
$.post("admin/index/delGqOrder",function (data) {
|
||||
if (data.code==1){
|
||||
layer.msg("操作成功!");
|
||||
myTable.reload({
|
||||
where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(data.msg);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
break;
|
||||
case 'delLast':
|
||||
layer.confirm('确定要删除七天前的所有订单吗?', function(index){
|
||||
layer.msg('操作中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
});
|
||||
|
||||
$.post("admin/index/delLastOrder",function (data) {
|
||||
if (data.code==1){
|
||||
layer.msg("操作成功!");
|
||||
myTable.reload({
|
||||
where: {
|
||||
state:$("#state").val(),
|
||||
type:$("#type").val()
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(data.msg);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
break;
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
form.render();
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,351 @@
|
||||
<div class="layui-form" action="">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">后台账号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="user" lay-verify="required" placeholder="请输入管理员账号" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">后台密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="pass" lay-verify="required" placeholder="请输入管理员密码" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">订单有效期</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" id="close" lay-verify="required" placeholder="请输入创建的订单几分钟后失效" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">异步回调</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="notifyUrl" lay-verify="required" placeholder="请输入异步回调地址" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">同步回调</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="returnUrl" lay-verify="required" placeholder="请输入支付完成后跳转地址" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">通讯密钥</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="key" lay-verify="required" placeholder="请输入通讯密钥" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">区分方式</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-upload">
|
||||
<select id="payQf">
|
||||
<option value="1">金额递增</option>
|
||||
<option value="2">金额递减</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">微信码</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="wxup">上传收款二维码</button>(此处上传的是无金额的收款二维码)
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="wximg">
|
||||
<p id="wxcs"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">支付宝码</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="zfbup">上传收款二维码</button>(此处上传的是无金额的收款二维码)
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="zfbimg">
|
||||
<p id="zfbcs"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="layui-form-item" style="text-align: right;">
|
||||
<button class="layui-btn" onclick="save()">保存</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!--<div class="layui-form-item layui-form-text">-->
|
||||
<!--<label class="layui-form-label">设置进入网站的提示</label>-->
|
||||
<!--<div class="layui-input-block">-->
|
||||
<!--<textarea placeholder="请输入公告内容" id="xz" class="layui-textarea"></textarea>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--<div class="layui-form-item">-->
|
||||
<!--<button class="layui-btn" onclick="editxz()">保存</button>-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function formatDate(now) {
|
||||
now = new Date(now*1000);
|
||||
return now.getFullYear()
|
||||
+ "-" + (now.getMonth()>8?(now.getMonth()+1):"0"+(now.getMonth()+1))
|
||||
+ "-" + (now.getDate()>9?now.getDate():"0"+now.getDate())
|
||||
+ " " + (now.getHours()>9?now.getHours():"0"+now.getHours())
|
||||
+ ":" + (now.getMinutes()>9?now.getMinutes():"0"+now.getMinutes())
|
||||
+ ":" + (now.getSeconds()>9?now.getSeconds():"0"+now.getSeconds());
|
||||
|
||||
}
|
||||
layui.use(['form','layer','upload'], function(){
|
||||
var table = layui.table,form = layui.form,upload = layui.upload;
|
||||
|
||||
var uploadInst = upload.render({
|
||||
elem: '#wxup'
|
||||
, url: 'qr-code/test.php'
|
||||
,auto: false
|
||||
,choose: function(obj){
|
||||
console.log(obj)
|
||||
obj.preview(function(index, file, result){
|
||||
qrcode.decode(getObjectURL(file));
|
||||
qrcode.callback = function(imgMsg) {
|
||||
console.log(imgMsg)
|
||||
if(imgMsg!=""){
|
||||
$('#wximg').attr('src', "enQrcode?url="+imgMsg);
|
||||
}else{
|
||||
layer.msg('处理中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
,time:0
|
||||
});
|
||||
|
||||
$.post("qr-code/test.php","base64="+encodeURIComponent(result.split(",")[1]),function (data) {
|
||||
console.log(data)
|
||||
if (!data.data) {
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
if (data.code==1){
|
||||
$('#wximg').attr('src', "enQrcode?url="+data.data);
|
||||
layer.msg('处理成功');
|
||||
} else{
|
||||
return layer.alert('处理失败,可以尝试将二维码用草料识别出内容,然后重新将内容生成二维码图片上传!');
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
, before: function (obj) {
|
||||
layer.msg('处理中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
,time:0
|
||||
});
|
||||
}
|
||||
, done: function (res) {
|
||||
//如果上传失败
|
||||
if (res.code == -1) {
|
||||
return layer.msg('上传失败');
|
||||
}
|
||||
if (res.data==""){
|
||||
return layer.msg('请上传微信无金额收款二维码');
|
||||
}
|
||||
layer.msg('处理成功');
|
||||
|
||||
$('#wximg').attr('src', "enQrcode?url="+res.data);
|
||||
}
|
||||
, error: function () {
|
||||
layer.msg('上传失败');
|
||||
//演示失败状态,并实现重传
|
||||
var demoText = $('#wxcs');
|
||||
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs wxcs">重试</a>');
|
||||
demoText.find('.wxcs').on('click', function () {
|
||||
uploadInst.upload();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
var uploadInst2 = upload.render({
|
||||
elem: '#zfbup'
|
||||
, url: 'qr-code/test.php'
|
||||
,auto: false
|
||||
,choose: function(obj){
|
||||
console.log(obj)
|
||||
obj.preview(function(index, file, result){
|
||||
qrcode.decode(getObjectURL(file));
|
||||
qrcode.callback = function(imgMsg) {
|
||||
console.log(imgMsg)
|
||||
if(imgMsg!=""){
|
||||
$('#zfbimg').attr('src', "enQrcode?url="+imgMsg);
|
||||
}else{
|
||||
layer.msg('处理中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
,time:0
|
||||
});
|
||||
$.post("qr-code/test.php","base64="+encodeURIComponent(result.split(",")[1]),function (data) {
|
||||
console.log(data)
|
||||
if (!data.data) {
|
||||
data = JSON.parse(data);
|
||||
}
|
||||
if (data.code==1){
|
||||
$('#zfbimg').attr('src', "enQrcode?url="+data.data);
|
||||
layer.msg('处理成功');
|
||||
} else{
|
||||
return layer.alert('处理失败,可以尝试将二维码用草料识别出内容,然后重新将内容生成二维码图片上传!');
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
, before: function (obj) {
|
||||
layer.msg('处理中', {
|
||||
icon: 16
|
||||
,shade: 0.01
|
||||
,time:0
|
||||
});
|
||||
}
|
||||
, done: function (res) {
|
||||
//如果上传失败
|
||||
if (res.code == -1) {
|
||||
return layer.msg('上传失败');
|
||||
}
|
||||
if (res.data=="" ){
|
||||
return layer.msg('请上传支付宝无金额收款二维码');
|
||||
}
|
||||
layer.msg('处理成功');
|
||||
|
||||
$('#zfbimg').attr('src', "enQrcode?url="+res.data);
|
||||
}
|
||||
, error: function () {
|
||||
layer.msg('上传失败');
|
||||
|
||||
//演示失败状态,并实现重传
|
||||
var demoText = $('#zfbcs');
|
||||
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs zfbcs">重试</a>');
|
||||
demoText.find('.zfbcs').on('click', function () {
|
||||
uploadInst2.upload();
|
||||
});
|
||||
}
|
||||
});
|
||||
form.render();
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
function save() {
|
||||
var user = $("#user").val();
|
||||
var pass = $("#pass").val();
|
||||
var notifyUrl = $("#notifyUrl").val();
|
||||
var returnUrl = $("#returnUrl").val();
|
||||
var key = $("#key").val();
|
||||
var close = $("#close").val();
|
||||
var payQf = $("#payQf").val();
|
||||
if (user == ""){
|
||||
layer.msg("请输入管理员账号");
|
||||
return;
|
||||
}
|
||||
if (pass == ""){
|
||||
layer.msg("请输入管理员密码");
|
||||
return;
|
||||
}
|
||||
if (key == ""){
|
||||
layer.msg("请输入通讯密钥");
|
||||
return;
|
||||
}
|
||||
if (notifyUrl == ""){
|
||||
layer.msg("请输入异步回调地址");
|
||||
return;
|
||||
}
|
||||
if (returnUrl == ""){
|
||||
layer.msg("请输入支付完成后跳转地址");
|
||||
return;
|
||||
}
|
||||
|
||||
if (close == ""){
|
||||
layer.msg("请输入创建的订单几分钟后失效");
|
||||
return;
|
||||
}
|
||||
var wximg = $("#wximg").attr("src");
|
||||
if (wximg=="" || !wximg){
|
||||
layer.msg("请上传微信无金额的收款二维码");
|
||||
return;
|
||||
}
|
||||
var zfbimg = $("#zfbimg").attr("src");
|
||||
if (zfbimg=="" || !zfbimg){
|
||||
layer.msg("请上传支付宝无金额的收款二维码");
|
||||
return;
|
||||
}
|
||||
wximg = wximg.replace(/enQrcode\?url=/g,"");
|
||||
zfbimg = zfbimg.replace(/enQrcode\?url=/g,"");
|
||||
$.post("admin/index/saveSetting","user="+user+"&pass="+pass+"¬ifyUrl="+notifyUrl+"&returnUrl="+returnUrl+"&key="+key+"&wxpay="+wximg+"&zfbpay="+zfbimg+"&close="+close+"&payQf="+payQf,function (data) {
|
||||
if (data.code==1){
|
||||
$.post("admin/index/getSettings",function (data) {
|
||||
console.log(data);
|
||||
if (data.code==1){
|
||||
$("#user").val(data.data.user);
|
||||
$("#pass").val(data.data.pass);
|
||||
$("#notifyUrl").val(data.data.notifyUrl);
|
||||
$("#returnUrl").val(data.data.returnUrl);
|
||||
$("#key").val(data.data.key);
|
||||
$("#close").val(data.data.close);
|
||||
|
||||
if (data.data.wxpay!=""){
|
||||
$('#wximg').attr('src', "enQrcode?url="+data.data.wxpay);
|
||||
}
|
||||
if (data.data.zfbpay!=""){
|
||||
$('#zfbimg').attr('src', "enQrcode?url="+data.data.zfbpay);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
layer.msg(data.msg);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function getstate(){
|
||||
$.post("admin/index/getSettings",function (data) {
|
||||
console.log(data);
|
||||
if (data.code==1){
|
||||
$("#user").val(data.data.user);
|
||||
$("#pass").val(data.data.pass);
|
||||
$("#notifyUrl").val(data.data.notifyUrl);
|
||||
$("#returnUrl").val(data.data.returnUrl);
|
||||
$("#key").val(data.data.key);
|
||||
$("#close").val(data.data.close);
|
||||
$("#payQf").val(data.data.payQf);
|
||||
|
||||
|
||||
if (data.data.wxpay!=""){
|
||||
$('#wximg').attr('src', "enQrcode?url="+data.data.wxpay);
|
||||
}
|
||||
if (data.data.zfbpay!=""){
|
||||
$('#zfbimg').attr('src', "enQrcode?url="+data.data.zfbpay);
|
||||
}
|
||||
layui.form.render();
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
getstate();
|
||||
</script>
|
||||
@@ -0,0 +1,83 @@
|
||||
|
||||
<style>
|
||||
.layui-table-cell {
|
||||
height: auto;
|
||||
}
|
||||
.layui-table img {
|
||||
max-width: 200px;
|
||||
}
|
||||
</style>
|
||||
<table id="demo" lay-filter="test"></table>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
function formatDate(now) {
|
||||
now = new Date(now*1000);
|
||||
return now.getFullYear()
|
||||
+ "-" + (now.getMonth()>8?(now.getMonth()+1):"0"+(now.getMonth()+1))
|
||||
+ "-" + (now.getDate()>9?now.getDate():"0"+now.getDate())
|
||||
+ " " + (now.getHours()>9?now.getHours():"0"+now.getHours())
|
||||
+ ":" + (now.getMinutes()>9?now.getMinutes():"0"+now.getMinutes())
|
||||
+ ":" + (now.getSeconds()>9?now.getSeconds():"0"+now.getSeconds());
|
||||
|
||||
}
|
||||
var myTable,table,form;
|
||||
layui.use(['form','table','laydate'], function(){
|
||||
table = layui.table;
|
||||
form = layui.form;
|
||||
|
||||
//第一个实例
|
||||
myTable = table.render({
|
||||
elem: '#demo'
|
||||
,height: 'full-130'
|
||||
,url: 'admin/index/getPayQrcodes'
|
||||
,where: {
|
||||
type:1,
|
||||
}
|
||||
,cols: [[ //表头
|
||||
{field: 'state', title: '二维码',templet: function(d){
|
||||
return '<img src="enQrcode?url='+d.pay_url+'"/>';
|
||||
}
|
||||
},
|
||||
{field: 'price', title: '金额'},
|
||||
{title:"操作", width: 70, align:'center', toolbar: '#barDemo'}
|
||||
|
||||
]]
|
||||
,page:true
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
|
||||
var data = obj.data //获得当前行数据
|
||||
,layEvent = obj.event; //获得 lay-event 对应的值
|
||||
if(layEvent === 'del'){
|
||||
layer.confirm('要删除该二维码么?', function(index){
|
||||
|
||||
layer.close(index);
|
||||
//向服务端发送删除指令
|
||||
$.post("admin/index/delPayQrcode","id="+data.id,function (data) {
|
||||
if (data.code==1){
|
||||
obj.del(); //删除对应行(tr)的DOM结构
|
||||
}
|
||||
|
||||
layer.msg(data.msg);
|
||||
});
|
||||
|
||||
console.log(data.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
form.render();
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,83 @@
|
||||
|
||||
<style>
|
||||
.layui-table-cell {
|
||||
height: auto;
|
||||
}
|
||||
.layui-table img {
|
||||
max-width: 200px;
|
||||
}
|
||||
</style>
|
||||
<table id="demo" lay-filter="test"></table>
|
||||
|
||||
<script type="text/html" id="barDemo">
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
function formatDate(now) {
|
||||
now = new Date(now*1000);
|
||||
return now.getFullYear()
|
||||
+ "-" + (now.getMonth()>8?(now.getMonth()+1):"0"+(now.getMonth()+1))
|
||||
+ "-" + (now.getDate()>9?now.getDate():"0"+now.getDate())
|
||||
+ " " + (now.getHours()>9?now.getHours():"0"+now.getHours())
|
||||
+ ":" + (now.getMinutes()>9?now.getMinutes():"0"+now.getMinutes())
|
||||
+ ":" + (now.getSeconds()>9?now.getSeconds():"0"+now.getSeconds());
|
||||
|
||||
}
|
||||
var myTable,table,form;
|
||||
layui.use(['form','table','laydate'], function(){
|
||||
table = layui.table;
|
||||
form = layui.form;
|
||||
|
||||
//第一个实例
|
||||
myTable = table.render({
|
||||
elem: '#demo'
|
||||
,height: 'full-130'
|
||||
,url: 'admin/index/getPayQrcodes'
|
||||
,where: {
|
||||
type:2,
|
||||
}
|
||||
,cols: [[ //表头
|
||||
{field: 'state', title: '二维码',templet: function(d){
|
||||
return '<img src="enQrcode?url='+d.pay_url+'"/>';
|
||||
}
|
||||
},
|
||||
{field: 'price', title: '金额'},
|
||||
{title:"操作", width: 70, align:'center', toolbar: '#barDemo'}
|
||||
|
||||
]]
|
||||
,page:true
|
||||
});
|
||||
|
||||
//监听行工具事件
|
||||
table.on('tool(test)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
|
||||
var data = obj.data //获得当前行数据
|
||||
,layEvent = obj.event; //获得 lay-event 对应的值
|
||||
if(layEvent === 'del'){
|
||||
layer.confirm('要删除该二维码么?', function(index){
|
||||
|
||||
layer.close(index);
|
||||
//向服务端发送删除指令
|
||||
$.post("admin/index/delPayQrcode","id="+data.id,function (data) {
|
||||
if (data.code==1){
|
||||
obj.del(); //删除对应行(tr)的DOM结构
|
||||
}
|
||||
|
||||
layer.msg(data.msg);
|
||||
});
|
||||
|
||||
console.log(data.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
form.render();
|
||||
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
@@ -0,0 +1,853 @@
|
||||
<!--
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>API调用说明</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<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="stylesheet" href="layui/css/layui.css" media="all" />
|
||||
</head>
|
||||
<body class="body" style="padding: 15px;">
|
||||
|
||||
<h1 style="text-align: center">Api调用说明</h1><br><br>
|
||||
-->
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
<p>测试支付页面:<a href="example" target="_blank">http://服务器域名/example/</a></p>
|
||||
<p>如果需要使用测试代码,请设置main.php,notify.php,return.php里面的$key为你的通讯密钥</p>
|
||||
<p>设置后台的同步回调地址为:http://服务器域名/example/return.php</p>
|
||||
<p>设置后台的异步回调地址为:http://服务器域名/example/notify.php</p>
|
||||
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<div class="layui-collapse" lay-filter="test">
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">创建订单</h2>
|
||||
<div class="layui-colla-content">
|
||||
|
||||
<div>
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求地址:http://服务器域名/createOrder
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求方式:POST/GET
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
|
||||
<p>通讯密钥(示例):a7cc8678193ee9c70ae3d75fd04ae6a9</p>
|
||||
<p>校验签名(示例):md5(1547129707139vone66620.1a7cc8678193ee9c70ae3d75fd04ae6a9) = 2b8b5d58c51203162f14939bdbc46a54</p>
|
||||
<p>参数示例(示例):payId=1547129707139&type=2&price=0.1&sign=2b8b5d58c51203162f14939bdbc46a54&param=vone666&isHtml=0</p>
|
||||
|
||||
|
||||
<div class="layui-inline">
|
||||
<p>参数说明:</p>
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>payId</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】商户订单号,可以是时间戳,不可重复</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>type</td>
|
||||
<td>整数</td>
|
||||
<td>【必传】微信支付传入1 支付宝支付传入2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>price</td>
|
||||
<td>小数</td>
|
||||
<td>【必传】订单金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sign</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】签名,计算方式为 md5(payId+param+type+price+通讯密钥)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param</td>
|
||||
<td>字符串</td>
|
||||
<td>【可选】传输参数,将会原样返回到异步和同步通知接口</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isHtml</td>
|
||||
<td>整数</td>
|
||||
<td>【可选】传入1则自动跳转到支付页面,否则返回创建结果的json数据</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>notifyUrl</td>
|
||||
<td>字符串</td>
|
||||
<td>【可选】传入则设置该订单的异步通知接口为该参数,不传或传空则使用后台设置的接口</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>returnUrl</td>
|
||||
<td>字符串</td>
|
||||
<td>【可选】传入则设置该订单的同步跳转接口为该参数,不传或传空则使用后台设置的接口</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<p>返回数据(示例):{"code":1,"msg":"成功","data":{"payId":"1547129707139","orderId":"201901102220147500","payType":2,"price":0.1,"reallyPrice":0.1,"payUrl":"HTTPS://QR.ALIPAY.COM/FKX03500Z2ZYWA0ELYUB5D","isAuto":1,"state":0,"timeOut":5,"date":1547130014}}</p>
|
||||
<div class="layui-inline">
|
||||
返回数据说明:
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>code</td>
|
||||
<td>整数</td>
|
||||
<td>返回代码(1:成功,-1:调用失败)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>msg</td>
|
||||
<td>字符串</td>
|
||||
<td>api调用结果说明</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>data</td>
|
||||
<td>数组</td>
|
||||
<td>api调用结果(如果code为-1,则data为null)
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>payId</td>
|
||||
<td>字符串</td>
|
||||
<td>商户订单号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>orderId</td>
|
||||
<td>字符串</td>
|
||||
<td>云端订单号,可用于查询订单是否支付成功</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>payType</td>
|
||||
<td>整数</td>
|
||||
<td>微信支付为1 支付宝支付为2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>price</td>
|
||||
<td>小数</td>
|
||||
<td>订单金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reallyPrice</td>
|
||||
<td>小数</td>
|
||||
<td>实际需付金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>payUrl</td>
|
||||
<td>字符串</td>
|
||||
<td>支付二维码内容</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isAuto</td>
|
||||
<td>整数</td>
|
||||
<td>1需要手动输入金额 0扫码后自动输入金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>state</td>
|
||||
<td>整数</td>
|
||||
<td>订单状态:-1|订单过期 0|等待支付 1|完成 2|支付完成但通知失败</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>timeOut</td>
|
||||
<td>整数</td>
|
||||
<td>订单有效时间(分钟)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>date</td>
|
||||
<td>长整数</td>
|
||||
<td>订单创建时间时间戳(10位)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">查询订单信息</h2>
|
||||
<div class="layui-colla-content">
|
||||
<div>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求地址:http://服务器域名/getOrder
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求方式:POST/GET
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
|
||||
<p>参数示例(示例):orderId=201901102225513177</p>
|
||||
|
||||
<div class="layui-inline">
|
||||
<p>参数说明:</p>
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>orderId</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】云端订单号,创建订单返回的</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<p>返回数据(示例):{"code":1,"msg":"成功","data":{"payId":"1547129707139","orderId":"201901102220147500","payType":2,"price":0.1,"reallyPrice":0.1,"payUrl":"HTTPS://QR.ALIPAY.COM/FKX03500Z2ZYWA0ELYUB5D","isAuto":1,"state":0,"timeOut":5,"date":1547130014}}</p>
|
||||
<div class="layui-inline">
|
||||
返回数据说明:
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>code</td>
|
||||
<td>整数</td>
|
||||
<td>返回代码(1:成功,-1:调用失败)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>msg</td>
|
||||
<td>字符串</td>
|
||||
<td>api调用结果说明</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>data</td>
|
||||
<td>数组</td>
|
||||
<td>api调用结果(如果code为-1,则data为null)
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>payId</td>
|
||||
<td>字符串</td>
|
||||
<td>商户订单号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>orderId</td>
|
||||
<td>字符串</td>
|
||||
<td>云端订单号,可用于查询订单是否支付成功</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>payType</td>
|
||||
<td>整数</td>
|
||||
<td>微信支付为1 支付宝支付为2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>price</td>
|
||||
<td>小数</td>
|
||||
<td>订单金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reallyPrice</td>
|
||||
<td>小数</td>
|
||||
<td>实际需付金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>payUrl</td>
|
||||
<td>字符串</td>
|
||||
<td>支付二维码内容</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isAuto</td>
|
||||
<td>整数</td>
|
||||
<td>1需要手动输入金额 0扫码后自动输入金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>state</td>
|
||||
<td>整数</td>
|
||||
<td>订单状态:-1|订单过期 0|等待支付 1|完成 2|支付完成但通知失败</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>timeOut</td>
|
||||
<td>整数</td>
|
||||
<td>订单有效时间(分钟)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>date</td>
|
||||
<td>长整数</td>
|
||||
<td>订单创建时间时间戳(10位)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">查询订单状态</h2>
|
||||
<div class="layui-colla-content">
|
||||
<div>
|
||||
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求地址:http://服务器域名/checkOrder
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求方式:POST/GET
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
|
||||
<p>参数示例(示例):orderId=201901102225513177</p>
|
||||
|
||||
|
||||
<div class="layui-inline">
|
||||
<p>参数说明:</p>
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>orderId</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】云端订单号,创建订单返回的</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<p>返回数据(示例):{"code":1,"msg":"成功","data":"https://bbs.125.la/?payId=1547130880571&param=vone666&type=2&price=0.1&reallyPrice=0.1&sign=c79f041bd5bc47d73bc19dc8406c9843"}</p>
|
||||
<div class="layui-inline">
|
||||
返回数据说明:
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>code</td>
|
||||
<td>整数</td>
|
||||
<td>返回代码(1:订单已被支付,-1:支付失败或还未支付,具体查看msg字段)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>msg</td>
|
||||
<td>字符串</td>
|
||||
<td>调用结果说明</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>data</td>
|
||||
<td>字符串</td>
|
||||
<td>
|
||||
如果code为-1,则data为null,否则为该订单支付完成后的跳转地址(带回调参数)
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">关闭订单</h2>
|
||||
<div class="layui-colla-content">
|
||||
<div>
|
||||
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求地址:http://服务器域名/closeOrder
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求方式:POST/GET
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
|
||||
<p>参数示例(示例):orderId=201901102225513177&sign=7db2d26323dd8ccbb5d130dd61d210a0</p>
|
||||
|
||||
|
||||
<div class="layui-inline">
|
||||
<p>参数说明:</p>
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>orderId</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】云端订单号,创建订单返回的</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sign</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】md5(云端订单号+通讯密钥)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<p>返回数据(示例):{"code":1,"msg":"成功","data":null}</p>
|
||||
<div class="layui-inline">
|
||||
返回数据说明:
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>code</td>
|
||||
<td>整数</td>
|
||||
<td>返回代码(1:订单关闭成功,-1:订单关闭失败,具体原因查看msg字段)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>msg</td>
|
||||
<td>字符串</td>
|
||||
<td>调用结果说明</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>data</td>
|
||||
<td>字符串</td>
|
||||
<td>
|
||||
无用字段,请忽略
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">查询服务端状态</h2>
|
||||
<div class="layui-colla-content">
|
||||
<div>
|
||||
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求地址:http://服务器域名/getState
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
请求方式:POST/GET
|
||||
</div>
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
|
||||
<p>参数示例(示例):t=1547613643&sign=7db2d26323dd8ccbb5d130dd61d210a0</p>
|
||||
|
||||
|
||||
<div class="layui-inline">
|
||||
<p>参数说明:</p>
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>t</td>
|
||||
<td>长整数</td>
|
||||
<td>【必传】现行时间戳</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sign</td>
|
||||
<td>字符串</td>
|
||||
<td>【必传】md5(现行时间戳+通讯密钥)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<p>返回数据(示例):{"code":1,"msg":"成功","data":{"lastpay":"1547394640","lastheart":"1547613873","state":"1"}}</p>
|
||||
<div class="layui-inline">
|
||||
返回数据说明:
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>code</td>
|
||||
<td>整数</td>
|
||||
<td>返回代码(1:成功,-1:失败,具体原因查看msg字段)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>msg</td>
|
||||
<td>字符串</td>
|
||||
<td>调用结果说明</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>data</td>
|
||||
<td>字符串</td>
|
||||
<td>api调用结果(如果code为-1,则data为null)
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>lastpay</td>
|
||||
<td>长整数</td>
|
||||
<td>最后一次监控到支付的时间戳(10位)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>lastheart</td>
|
||||
<td>长整数</td>
|
||||
<td>最后一次监控端向服务器发送心跳的时间戳(10位)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>state</td>
|
||||
<td>整数</td>
|
||||
<td>监控端状态 1|在线 0|掉线 -1|还未绑定监控端</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">回调参数说明</h2>
|
||||
<div class="layui-colla-content">
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<div class="layui-inline">
|
||||
当系统收到用户收款后,将会向您后台设定的异步通知地址发送GET请求,通知您的服务端订单完成收款
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
若您使用的是isHtml=1则在支付完成后会携带参数跳转到您的同步通知接口,若使用isHtml=0则只有异步通知
|
||||
</div>
|
||||
</blockquote>
|
||||
<blockquote class="layui-elem-quote news_search">
|
||||
<p>传输参数(示例):payId=1547130349673&param=vone666&type=2&price=0.1&reallyPrice=0.1&sign=28943820b95019b6a63598a13c46f93f</p>
|
||||
<div class="layui-inline">
|
||||
传输参数说明:
|
||||
</div>
|
||||
|
||||
<table class="layui-table">
|
||||
<colgroup>
|
||||
<col>
|
||||
<col>
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>返回参数</th>
|
||||
<th>参数类型</th>
|
||||
<th>参数说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>payId</td>
|
||||
<td>字符串</td>
|
||||
<td>商户订单号</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>param</td>
|
||||
<td>字符串</td>
|
||||
<td>创建订单的时候传入的参数</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>type</td>
|
||||
<td>整数</td>
|
||||
<td>支付方式 :微信支付为1 支付宝支付为2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>price</td>
|
||||
<td>小数</td>
|
||||
<td>订单金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>reallyPrice</td>
|
||||
<td>小数</td>
|
||||
<td>实际支付金额</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>sign</td>
|
||||
<td>字符串</td>
|
||||
<td>校验签名,计算方式 = md5(payId + param + type + price + reallyPrice + 通讯密钥)</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
|
||||
</blockquote>
|
||||
|
||||
<pre class="layui-code">
|
||||
|
||||
<?php
|
||||
|
||||
ini_set("error_reporting","E_ALL & ~E_NOTICE");
|
||||
|
||||
$key = "83d551f0b3609781a22536ca2658473d";//通讯密钥
|
||||
|
||||
|
||||
$payId = $_GET['payId'];//商户订单号
|
||||
$param = $_GET['param'];//创建订单的时候传入的参数
|
||||
$type = $_GET['type'];//支付方式 :微信支付为1 支付宝支付为2
|
||||
$price = $_GET['price'];//订单金额
|
||||
$reallyPrice = $_GET['reallyPrice'];//实际支付金额
|
||||
$sign = $_GET['sign'];//校验签名,计算方式 = md5(payId + param + type + price + reallyPrice + 通讯密钥)
|
||||
|
||||
//开始校验签名
|
||||
$_sign = md5($payId . $param . $type . $price . $reallyPrice . $key);
|
||||
if ($_sign != $sign) {
|
||||
echo "error_sign";//sign校验不通过
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
echo "success";
|
||||
//继续业务流程
|
||||
//echo "商户订单号:".$payId ."<br>自定义参数:". $param ."<br>支付方式:". $type ."<br>订单金额:". $price ."<br>实际支付金额:". $reallyPrice;
|
||||
|
||||
?>
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['element','code'], function(){
|
||||
var element = layui.element;
|
||||
layui.element.render();
|
||||
layui.code({
|
||||
title: 'PHP回调示例代码'
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
<!--
|
||||
|
||||
<script type="text/javascript" src="layui/layui.js"></script>
|
||||
<script>
|
||||
layui.use(['element', 'layer'], function(){
|
||||
var element = layui.element;
|
||||
var layer = layui.layer;
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
-->
|
||||
@@ -0,0 +1 @@
|
||||
@font-face{font-family:source sans pro;font-style:italic;font-weight:300;src:url(../fonts/source-sans-pro-300italic.eot);src:local('Source Sans Pro'),local('SourceSans Pro-Italic'),url(../fonts/source-sans-pro-300italic.eot?#iefix) format('embedded-opentype'),url(../fonts/source-sans-pro-300italic.woff2) format('woff2'),url(../fonts/source-sans-pro-300italic.woff) format('woff'),url(../fonts/source-sans-pro-300italic.ttf) format('truetype'),url('../fonts/source-sans-pro-300italic.svg#SourceSans Pro') format('svg')}@font-face{font-family:source sans pro;font-style:italic;font-weight:600;src:url(../fonts/source-sans-pro-600italic.eot);src:local('Source Sans Pro'),local('SourceSans Pro-Italic'),url(../fonts/source-sans-pro-600italic.eot?#iefix) format('embedded-opentype'),url(../fonts/source-sans-pro-600italic.woff2) format('woff2'),url(../fonts/source-sans-pro-600italic.woff) format('woff'),url(../fonts/source-sans-pro-600italic.ttf) format('truetype'),url('../fonts/source-sans-pro-600italic.svg#SourceSans Pro') format('svg')}@font-face{font-family:source sans pro;font-style:normal;font-weight:300;src:url(../fonts/source-sans-pro-300.eot);src:local('Source Sans Pro'),local('SourceSans Pro-Normal'),url(../fonts/source-sans-pro-300.eot?#iefix) format('embedded-opentype'),url(../fonts/source-sans-pro-300.woff2) format('woff2'),url(../fonts/source-sans-pro-300.woff) format('woff'),url(../fonts/source-sans-pro-300.ttf) format('truetype'),url('../fonts/source-sans-pro-300.svg#SourceSans Pro') format('svg')}@font-face{font-family:source sans pro;font-style:normal;font-weight:600;src:url(../fonts/source-sans-pro-600.eot);src:local('Source Sans Pro'),local('SourceSans Pro-Normal'),url(../fonts/source-sans-pro-600.eot?#iefix) format('embedded-opentype'),url(../fonts/source-sans-pro-600.woff2) format('woff2'),url(../fonts/source-sans-pro-600.woff) format('woff'),url(../fonts/source-sans-pro-600.ttf) format('truetype'),url('../fonts/source-sans-pro-600.svg#SourceSans Pro') format('svg')}
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
Dimension by HTML5 UP
|
||||
html5up.net | @ajlkn
|
||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
||||
*/
|
||||
|
||||
/* Main */
|
||||
|
||||
#main article {
|
||||
opacity: 1;
|
||||
margin: 4rem 0 0 0;
|
||||
}
|
||||
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,17 @@
|
||||
(function($){skel.breakpoints({xlarge:'(max-width: 1680px)',large:'(max-width: 1280px)',medium:'(max-width: 980px)',small:'(max-width: 736px)',xsmall:'(max-width: 480px)',xxsmall:'(max-width: 360px)'});$(function(){var $window=$(window),$body=$('body'),$wrapper=$('#wrapper'),$header=$('#header'),$footer=$('#footer'),$main=$('#main'),$main_articles=$main.children('article');$body.addClass('is-loading');$window.on('load',function(){window.setTimeout(function(){$body.removeClass('is-loading');},100);});$('form').placeholder();if(skel.vars.IEVersion<12){var flexboxFixTimeoutId;$window.on('resize.flexbox-fix',function(){clearTimeout(flexboxFixTimeoutId);flexboxFixTimeoutId=setTimeout(function(){if($wrapper.prop('scrollHeight')>$window.height())
|
||||
$wrapper.css('height','auto');else
|
||||
$wrapper.css('height','100vh');},250);}).triggerHandler('resize.flexbox-fix');}
|
||||
var $nav=$header.children('nav'),$nav_li=$nav.find('li');if($nav_li.length%2==0){$nav.addClass('use-middle');$nav_li.eq(($nav_li.length/2)).addClass('is-middle');}
|
||||
var delay=325,locked=false;$main._show=function(id,initial){var $article=$main_articles.filter('#'+id);if($article.length==0)
|
||||
return;if(locked||(typeof initial!='undefined'&&initial===true)){$body.addClass('is-switching');$body.addClass('is-article-visible');$main_articles.removeClass('active');$header.hide();$footer.hide();$main.show();$article.show();$article.addClass('active');locked=false;setTimeout(function(){$body.removeClass('is-switching');},(initial?1000:0));return;}
|
||||
locked=true;if($body.hasClass('is-article-visible')){var $currentArticle=$main_articles.filter('.active');$currentArticle.removeClass('active');setTimeout(function(){$currentArticle.hide();$article.show();setTimeout(function(){$article.addClass('active');$window.scrollTop(0).triggerHandler('resize.flexbox-fix');setTimeout(function(){locked=false;},delay);},25);},delay);}
|
||||
else{$body.addClass('is-article-visible');setTimeout(function(){$header.hide();$footer.hide();$main.show();$article.show();setTimeout(function(){$article.addClass('active');$window.scrollTop(0).triggerHandler('resize.flexbox-fix');setTimeout(function(){locked=false;},delay);},25);},delay);}};$main._hide=function(addState){var $article=$main_articles.filter('.active');if(!$body.hasClass('is-article-visible'))
|
||||
return;if(typeof addState!='undefined'&&addState===true)
|
||||
history.pushState(null,null,'#');if(locked){$body.addClass('is-switching');$article.removeClass('active');$article.hide();$main.hide();$footer.show();$header.show();$body.removeClass('is-article-visible');locked=false;$body.removeClass('is-switching');$window.scrollTop(0).triggerHandler('resize.flexbox-fix');return;}
|
||||
locked=true;$article.removeClass('active');setTimeout(function(){$article.hide();$main.hide();$footer.show();$header.show();setTimeout(function(){$body.removeClass('is-article-visible');$window.scrollTop(0).triggerHandler('resize.flexbox-fix');setTimeout(function(){locked=false;},delay);},25);},delay);};$main_articles.each(function(){var $this=$(this);$('<div class="close">Close</div>').appendTo($this).on('click',function(){location.hash='';});$this.on('click',function(event){event.stopPropagation();});});$body.on('click',function(event){if($body.hasClass('is-article-visible'))
|
||||
$main._hide(true);});$window.on('keyup',function(event){switch(event.keyCode){case 27:if($body.hasClass('is-article-visible'))
|
||||
$main._hide(true);break;default:break;}});$window.on('hashchange',function(event){if(location.hash==''||location.hash=='#'){event.preventDefault();event.stopPropagation();$main._hide();}
|
||||
else if($main_articles.filter(location.hash).length>0){event.preventDefault();event.stopPropagation();$main._show(location.hash.substr(1));}});if('scrollRestoration'in history)
|
||||
history.scrollRestoration='manual';else{var oldScrollPos=0,scrollPos=0,$htmlbody=$('html,body');$window.on('scroll',function(){oldScrollPos=scrollPos;scrollPos=$htmlbody.scrollTop();}).on('hashchange',function(){$window.scrollTop(oldScrollPos);});}
|
||||
$main.hide();$main_articles.hide();if(location.hash!=''&&location.hash!='#')
|
||||
$window.on('load',function(){$main._show(location.hash.substr(1),true);});});})(jQuery);
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 701 B |
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,49 @@
|
||||
(function($){$.fn.navList=function(){var $this=$(this);$a=$this.find('a'),b=[];$a.each(function(){var $this=$(this),indent=Math.max(0,$this.parents('li').length-1),href=$this.attr('href'),target=$this.attr('target');b.push('<a '+
|
||||
'class="link depth-'+indent+'"'+
|
||||
((typeof target!=='undefined'&&target!='')?' target="'+target+'"':'')+
|
||||
((typeof href!=='undefined'&&href!='')?' href="'+href+'"':'')+
|
||||
'>'+
|
||||
'<span class="indent-'+indent+'"></span>'+
|
||||
$this.text()+
|
||||
'</a>');});return b.join('');};$.fn.panel=function(userConfig){if(this.length==0)
|
||||
return $this;if(this.length>1){for(var i=0;i<this.length;i++)
|
||||
$(this[i]).panel(userConfig);return $this;}
|
||||
var $this=$(this),$body=$('body'),$window=$(window),id=$this.attr('id'),config;config=$.extend({delay:0,hideOnClick:false,hideOnEscape:false,hideOnSwipe:false,resetScroll:false,resetForms:false,side:null,target:$this,visibleClass:'visible'},userConfig);if(typeof config.target!='jQuery')
|
||||
config.target=$(config.target);$this._hide=function(event){if(!config.target.hasClass(config.visibleClass))
|
||||
return;if(event){event.preventDefault();event.stopPropagation();}
|
||||
config.target.removeClass(config.visibleClass);window.setTimeout(function(){if(config.resetScroll)
|
||||
$this.scrollTop(0);if(config.resetForms)
|
||||
$this.find('form').each(function(){this.reset();});},config.delay);};$this.css('-ms-overflow-style','-ms-autohiding-scrollbar').css('-webkit-overflow-scrolling','touch');if(config.hideOnClick){$this.find('a').css('-webkit-tap-highlight-color','rgba(0,0,0,0)');$this.on('click','a',function(event){var $a=$(this),href=$a.attr('href'),target=$a.attr('target');if(!href||href=='#'||href==''||href=='#'+id)
|
||||
return;event.preventDefault();event.stopPropagation();$this._hide();window.setTimeout(function(){if(target=='_blank')
|
||||
window.open(href);else
|
||||
window.location.href=href;},config.delay+10);});}
|
||||
$this.on('touchstart',function(event){$this.touchPosX=event.originalEvent.touches[0].pageX;$this.touchPosY=event.originalEvent.touches[0].pageY;})
|
||||
$this.on('touchmove',function(event){if($this.touchPosX===null||$this.touchPosY===null)
|
||||
return;var diffX=$this.touchPosX-event.originalEvent.touches[0].pageX,diffY=$this.touchPosY-event.originalEvent.touches[0].pageY,th=$this.outerHeight(),ts=($this.get(0).scrollHeight-$this.scrollTop());if(config.hideOnSwipe){var result=false,boundary=20,delta=50;switch(config.side){case 'left':result=(diffY<boundary&&diffY>(-1*boundary))&&(diffX>delta);break;case 'right':result=(diffY<boundary&&diffY>(-1*boundary))&&(diffX<(-1*delta));break;case 'top':result=(diffX<boundary&&diffX>(-1*boundary))&&(diffY>delta);break;case 'bottom':result=(diffX<boundary&&diffX>(-1*boundary))&&(diffY<(-1*delta));break;default:break;}
|
||||
if(result){$this.touchPosX=null;$this.touchPosY=null;$this._hide();return false;}}
|
||||
if(($this.scrollTop()<0&&diffY<0)||(ts>(th-2)&&ts<(th+2)&&diffY>0)){event.preventDefault();event.stopPropagation();}});$this.on('click touchend touchstart touchmove',function(event){event.stopPropagation();});$this.on('click','a[href="#'+id+'"]',function(event){event.preventDefault();event.stopPropagation();config.target.removeClass(config.visibleClass);});$body.on('click touchend',function(event){$this._hide(event);});$body.on('click','a[href="#'+id+'"]',function(event){event.preventDefault();event.stopPropagation();config.target.toggleClass(config.visibleClass);});if(config.hideOnEscape)
|
||||
$window.on('keydown',function(event){if(event.keyCode==27)
|
||||
$this._hide(event);});return $this;};$.fn.placeholder=function(){if(typeof(document.createElement('input')).placeholder!='undefined')
|
||||
return $(this);if(this.length==0)
|
||||
return $this;if(this.length>1){for(var i=0;i<this.length;i++)
|
||||
$(this[i]).placeholder();return $this;}
|
||||
var $this=$(this);$this.find('input[type=text],textarea').each(function(){var i=$(this);if(i.val()==''||i.val()==i.attr('placeholder'))
|
||||
i.addClass('polyfill-placeholder').val(i.attr('placeholder'));}).on('blur',function(){var i=$(this);if(i.attr('name').match(/-polyfill-field$/))
|
||||
return;if(i.val()=='')
|
||||
i.addClass('polyfill-placeholder').val(i.attr('placeholder'));}).on('focus',function(){var i=$(this);if(i.attr('name').match(/-polyfill-field$/))
|
||||
return;if(i.val()==i.attr('placeholder'))
|
||||
i.removeClass('polyfill-placeholder').val('');});$this.find('input[type=password]').each(function(){var i=$(this);var x=$($('<div>').append(i.clone()).remove().html().replace(/type="password"/i,'type="text"').replace(/type=password/i,'type=text'));if(i.attr('id')!='')
|
||||
x.attr('id',i.attr('id')+'-polyfill-field');if(i.attr('name')!='')
|
||||
x.attr('name',i.attr('name')+'-polyfill-field');x.addClass('polyfill-placeholder').val(x.attr('placeholder')).insertAfter(i);if(i.val()=='')
|
||||
i.hide();else
|
||||
x.hide();i.on('blur',function(event){event.preventDefault();var x=i.parent().find('input[name='+i.attr('name')+'-polyfill-field]');if(i.val()==''){i.hide();x.show();}});x.on('focus',function(event){event.preventDefault();var i=x.parent().find('input[name='+x.attr('name').replace('-polyfill-field','')+']');x.hide();i.show().focus();}).on('keypress',function(event){event.preventDefault();x.val('');});});$this.on('submit',function(){$this.find('input[type=text],input[type=password],textarea').each(function(event){var i=$(this);if(i.attr('name').match(/-polyfill-field$/))
|
||||
i.attr('name','');if(i.val()==i.attr('placeholder')){i.removeClass('polyfill-placeholder');i.val('');}});}).on('reset',function(event){event.preventDefault();$this.find('select').val($('option:first').val());$this.find('input,textarea').each(function(){var i=$(this),x;i.removeClass('polyfill-placeholder');switch(this.type){case 'submit':case 'reset':break;case 'password':i.val(i.attr('defaultValue'));x=i.parent().find('input[name='+i.attr('name')+'-polyfill-field]');if(i.val()==''){i.hide();x.show();}
|
||||
else{i.show();x.hide();}
|
||||
break;case 'checkbox':case 'radio':i.attr('checked',i.attr('defaultValue'));break;case 'text':case 'textarea':i.val(i.attr('defaultValue'));if(i.val()==''){i.addClass('polyfill-placeholder');i.val(i.attr('placeholder'));}
|
||||
break;default:i.val(i.attr('defaultValue'));break;}});});return $this;};$.prioritize=function($elements,condition){var key='__prioritize';if(typeof $elements!='jQuery')
|
||||
$elements=$($elements);$elements.each(function(){var $e=$(this),$p,$parent=$e.parent();if($parent.length==0)
|
||||
return;if(!$e.data(key)){if(!condition)
|
||||
return;$p=$e.prev();if($p.length==0)
|
||||
return;$e.prependTo($parent);$e.data(key,$p);}
|
||||
else{if(condition)
|
||||
return;$p=$e.data(key);$e.insertAfter($p);$e.removeData(key);}});};})(jQuery);
|
||||
@@ -0,0 +1,445 @@
|
||||
/**
|
||||
|
||||
layui官网
|
||||
By 贤心
|
||||
|
||||
*/
|
||||
|
||||
h1,h2,h3{font-size: 14px;}
|
||||
|
||||
/* 布局 */
|
||||
.site-inline{font-size: 0;}
|
||||
.site-tree, .site-content{display: inline-block; *display:inline; *zoom:1; vertical-align: top; font-size: 14px;}
|
||||
.site-tree{width: 220px; min-height: 900px; padding: 5px 0 20px;}
|
||||
.site-content{width: 899px; min-height: 900px; padding: 20px 0 10px 20px;}
|
||||
|
||||
/* 头部 */
|
||||
.header{height: 59px; border-bottom: 1px solid #404553; background-color: #393D49;}
|
||||
.logo{position: absolute; left: 0; top: 16px;}
|
||||
.logo img{width: 82px; height: 31px;}
|
||||
|
||||
.header .layui-nav{position: absolute; right: 0; top: 0; padding: 0; background: none;}
|
||||
.header .layui-nav .layui-nav-item{margin: 0 20px; }
|
||||
.header .layui-nav .layui-nav-item[mobile]{display: none;}
|
||||
|
||||
.header .layui-container .logo{left: 15px;}
|
||||
.header .layui-container .layui-nav{right: 15px;}
|
||||
|
||||
.menu{position: absolute; right: 0; top: 0; line-height: 65px;}
|
||||
.menu a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
|
||||
.menu a{position: relative; padding: 0 20px; margin: 0 20px; color: #c2c2c2; font-size: 14px;}
|
||||
.menu a:hover{color: #fff; transition: all .5s; -webkit-transition: all .5s}
|
||||
.menu a.this{color: #fff}
|
||||
.menu a.this::after{content: ''; position: absolute; left: 0; bottom: -1px; width: 100%; height: 5px; background-color: #5FB878;}
|
||||
|
||||
.header-index{background-color: #05031A; border: none;}
|
||||
.header-index .site-banner-bg{}
|
||||
.header-index[spring]{background-color: #0D1206}
|
||||
.header-index[summer]{background-color: #0A0E11}
|
||||
.header-index[autumn]{background-color: #100903}
|
||||
.header-index[winter]{background-color: #0E0E0E}
|
||||
|
||||
.header-demo{height: 60px; border-bottom: none;}
|
||||
.header-demo .logo{left: 40px;}
|
||||
.header-demo .layui-nav{top: 0;}
|
||||
.header-demo .layui-nav .layui-nav-item{margin: 0 10px;}
|
||||
|
||||
.header-demo .layui-nav .layui-this a{padding: 0 30px;}
|
||||
|
||||
.component{position: absolute; width: 200px; left: 120px; top: 16px; }
|
||||
.component .layui-input{height: 30px; padding-left: 12px; background-color: #424652; background-color: rgba(255,255,255,.05); border: none 0; color: #fff; font-size: 12px;}
|
||||
.component .layui-form-select .layui-edge{display: none; border-top-color: #999;}
|
||||
.component .layui-form-select dl{top: 36px; background-color: rgba(255,255,255,.9)}
|
||||
.header-demo .component{left: 185px;}
|
||||
|
||||
/* 子侧边 */
|
||||
.layui-side-child{width: 160px!important; left: 200px; bottom: 60px!important; border-right: 1px solid #eee; background-color: #fff;}
|
||||
.layui-side-child .layui-side-scroll{width: 170px;}
|
||||
.layui-side-child .layui-nav{padding: 10px 0; width: 160px; border-radius: 0; background: none}
|
||||
.layui-side-child .layui-nav-child{border-radius: 0;}
|
||||
.layui-side-child .layui-nav .layui-nav-title a,
|
||||
.layui-side-child .layui-nav .layui-nav-title a:hover,
|
||||
.layui-side-child .layui-nav-itemed>a{color: #666 !important;}
|
||||
.layui-side-child .layui-nav-itemed .layui-nav-child{margin-bottom: 10px; background: none !important;}
|
||||
.layui-side-child .layui-nav .layui-nav-item a{height: 30px; line-height: 30px; color: #666;}
|
||||
.layui-side-child .layui-nav .layui-nav-item a:hover{background: none !important;}
|
||||
.layui-side-child .layui-nav .layui-nav-child a{color: #999 !important;}
|
||||
.layui-side-child .layui-nav .layui-nav-more{display: none;}
|
||||
.layui-side-child .layui-nav-tree .layui-this,
|
||||
.layui-side-child .layui-nav-tree .layui-this>a,
|
||||
.layui-side-child .layui-nav-tree .layui-nav-child dd.layui-this,
|
||||
.layui-side-child .layui-nav-tree .layui-nav-child dd.layui-this a{background: none; color: #5FB878 !important;}
|
||||
.layui-side-child .layui-nav .layui-nav-child a:hover{color: #009688 !important}
|
||||
.layui-side-child .layui-nav-bar{background-color: #5FB878;}
|
||||
|
||||
|
||||
/* 底部 */
|
||||
.footer{padding: 30px 0; line-height: 30px; text-align: center; color: #666; font-weight: 300;}
|
||||
body .layui-layout-admin .footer-demo{height: 50px; padding: 5px 0;}
|
||||
.footer a{padding: 0 5px;}
|
||||
.site-union{margin-top: 10px; color: #999;}
|
||||
.site-union>*{display: inline-block; vertical-align: middle;}
|
||||
.site-union a[upyun] img{width: 80px;}
|
||||
.site-union span{position: relative; top: 3px;}
|
||||
.site-union span a{padding: 0; display: inline; color: #999;}
|
||||
.site-union span a:hover{text-decoration: underline;}
|
||||
|
||||
.footer-demo p{display: inline-block; vertical-align: middle; height: 50px; padding-right: 10px;}
|
||||
.footer-demo .site-union{position: relative; top: -9px;}
|
||||
|
||||
/* 首页banner部分 */
|
||||
.site-banner{position: relative; height: 600px; text-align: center; overflow: hidden; background-color: #393D49;}
|
||||
.site-banner-bg
|
||||
,.site-banner-main{position: absolute; left: 0; top: 0; width: 100%; height: 100%;}
|
||||
.site-banner-bg{background-position: center 0;}
|
||||
|
||||
|
||||
.site-zfj{padding-top: 25px; height: 220px;}
|
||||
.site-zfj i{position: absolute; left: 50%; top: 25px; width: 200px; height: 200px; margin-left: -100px; font-size: 200px; color: #c2c2c2;}
|
||||
|
||||
@-webkit-keyframes site-zfj {
|
||||
0% {opacity: 1; -webkit-transform: translate3d(0, 0, 0) rotate(0deg) scale(1);}
|
||||
10% {opacity: 0.8; -webkit-transform: translate3d(-100px, 0px, 0) rotate(10deg) scale(0.7);}
|
||||
35% {opacity: 0.6; -webkit-transform: translate3d(100px, 0px, 0) rotate(30deg) scale(0.4);}
|
||||
50% {opacity: 0.4; -webkit-transform: translate3d(0, 0, 0) rotate(360deg) scale(0);}
|
||||
80% {opacity: 0.2; -webkit-transform: translate3d(0, 0, 0) rotate(720deg) scale(1);}
|
||||
90% {opacity: 0.1; -webkit-transform: translate3d(0, 0, 0) rotate(3600deg) scale(6);}
|
||||
100% {opacity: 1; -webkit-transform: translate3d(0, 0, 0) rotate(3600deg) scale(1);}
|
||||
}
|
||||
@keyframes site-zfj {
|
||||
0% {opacity: 1; transform: translate3d(0, 0, 0) rotate(0deg) scale(1);}
|
||||
10% {opacity: 0.8; transform: translate3d(-100px, 0px, 0) rotate(10deg) scale(0.7);}
|
||||
35% {opacity: 0.6; transform: translate3d(100px, 0px, 0) rotate(30deg) scale(0.4);}
|
||||
50% {opacity: 0.4; transform: translate3d(0, 0, 0) rotate(360deg) scale(0);}
|
||||
80% {opacity: 0.2; transform: translate3d(0, 0, 0) rotate(720deg) scale(1);}
|
||||
90% {opacity: 0.1; transform: translate3d(0, 0, 0) rotate(3600deg) scale(6);}
|
||||
100% {opacity: 1; transform: translate3d(0, 0, 0) rotate(3600deg) scale(1);}
|
||||
}
|
||||
|
||||
@-webkit-keyframes site-desc {
|
||||
0% { -webkit-transform: scale(1.1);}
|
||||
100% {opacity: 1; -webkit-transform: scale(1);}
|
||||
}
|
||||
@keyframes site-desc {
|
||||
0% { transform: scale(1.1);}
|
||||
100% {transform: scale(1);}
|
||||
}
|
||||
|
||||
.site-zfj-anim i{-webkit-animation-name: site-zfj; animation-name: site-zfj; -webkit-animation-duration: 5s; animation-duration: 5s; -webkit-animation-timing-function: linear; animation-timing-function: linear;}
|
||||
|
||||
|
||||
.site-desc{position: relative; height: 70px; margin-top: 25px; background: url(../images/layui/desc.png) center no-repeat;}
|
||||
.site-desc-anim{-webkit-animation-name: site-desc; animation-name: site-desc;}
|
||||
|
||||
.site-desc cite{position: absolute; bottom: -40px; left: 0; width: 100%; color: #c2c2c2; font-style: normal;}
|
||||
.site-download{margin-top: 80px; font-size: 0;}
|
||||
.site-download a{position: relative; padding: 0 45px 0 90px; height: 60px; line-height: 60px; border: 1px solid #c2c2c2; border-color: rgba(255,255,255,.2); font-size: 24px; color: #ccc; transition: all .5s; -webkit-transition: all .5s;}
|
||||
.site-download a:hover{border-color: rgba(255,255,255,.3); color: #fff; background-color: rgba(255,255,255,.05); border-radius: 30px;}
|
||||
.site-download a cite{position: absolute; left: 45px; font-size: 30px;}
|
||||
.site-version{position: relative; margin-top: 15px; color: #ccc; font-size: 12px;}
|
||||
.site-version span{padding: 0 3px;}
|
||||
.site-version *{font-style: normal;}
|
||||
.site-version a{color: #e2e2e2; text-decoration: underline;}
|
||||
|
||||
.site-banner-other{position: absolute; left: 0; bottom: 30px; width: 100%; text-align: center; font-size: 0;}
|
||||
.site-banner-other iframe{border: none;}
|
||||
.site-banner-other a{display: inline-block; vertical-align: middle; height: 28px; line-height: 28px; margin: 0 5px; padding: 0 8px; border-radius: 2px; color: #c2c2c2; color: rgba(255,255,255,.8); border: 1px solid #c2c2c2; border-color: rgba(255,255,255,.2); font-size: 14px; transition: all .5s; -webkit-transition: all .5s;}
|
||||
.site-banner-other a:hover{color: #fff; background-color: rgba(255,255,255,.1);}
|
||||
|
||||
|
||||
.site-idea{margin: 50px 0; font-size: 0; text-align: center; font-weight: 300;}
|
||||
.site-idea li{display: inline-block; vertical-align: top; *display: inline; *zoom:1; font-size: 14px; }
|
||||
.site-idea li{width: 298px; height: 150px; padding: 30px; line-height: 24px; margin-left: 30px; border: 1px solid #d2d2d2; text-align: left;}
|
||||
.site-idea li:first-child{margin-left: 0}
|
||||
.site-idea .layui-field-title{border-color: #d2d2d2}
|
||||
.site-idea .layui-field-title legend{margin: 0 20px 20px 0; padding: 0 20px; text-align: center;}
|
||||
|
||||
/* 赞助商 */
|
||||
.site-sponsor-home{margin-top: 40px; text-align: center;}
|
||||
.site-sponsor-home .layui-btn{position: relative; width: 233px; height: 65px; line-height: 65px; background: none; border-color: #212121; font-size: 26px; border-radius: 6px; /*padding-left: 55px;*/}
|
||||
.site-sponsor-home .layui-btn:hover{background: #4A4855; color: #BAB8C3;}
|
||||
.site-sponsor-home .layui-btn:before{/*position: absolute; left: 15px; top: 15px; content: ''; width: 30px; height: 30px; background: url(http://cdn.layui.com/upload/2018_1/168_1514869467160_26113.png) center; background-repeat: no-repeat; background-size: contain;*/}
|
||||
.site-sponsor-home p{position: relative; padding-top: 15px; font-size: 22px; color: #212121;}
|
||||
.site-sponsor-home p:before{content: ''; position: relative; top: -2px; display: inline-block; vertical-align: middle; width: 30px; height: 30px; margin-right: 10px; background: url(http://cdn.layui.com/upload/2018_1/168_1514869467160_26113.png) center; background-repeat: no-repeat; background-size: contain;}
|
||||
@media screen and (max-width: 750px) {
|
||||
.site-sponsor-home .layui-btn{width: 180px; height: 45px; line-height: 45px; font-size: 20px;}
|
||||
.site-sponsor-home p{font-size: 16px;}
|
||||
.site-sponsor-home p:before{width: 20px; height: 20px;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 辅助 */
|
||||
.site-tips{margin-bottom: 10px; padding: 15px; line-height: 22px; border-left: 5px solid #0078AD; background-color: #f2f2f2;}
|
||||
body .site-tips p{margin: 0;}
|
||||
body .layui-layer-notice .layui-layer-content{padding: 20px; line-height: 26px; background-color: #393D49; color: #fff; font-weight: 300;}
|
||||
.layui-layer-notice .layui-text{color: #f8f8f8;}
|
||||
.layui-layer-notice .layui-text a{color: #009688;}
|
||||
|
||||
/* 目录 */
|
||||
.site-dir{display: none;}
|
||||
.site-dir li{line-height: 26px; margin-left: 20px; overflow: visible; list-style-type: disc;}
|
||||
.site-dir li a{display: block;}
|
||||
.site-dir li a:active{color: #01AAED;}
|
||||
.site-dir li a.layui-this{color: #01AAED;}
|
||||
body .layui-layer-dir{box-shadow: none; border: 1px solid #d2d2d2;}
|
||||
body .layui-layer-dir .layui-layer-content{padding: 10px;}
|
||||
.site-dir a em{padding-left: 5px; font-size: 12px; color: #c2c2c2; font-style: normal;}
|
||||
|
||||
/* 文档 */
|
||||
.site-tree{border-right: 1px solid #eee; }
|
||||
.site-tree .layui-tree{line-height: 32px;}
|
||||
.site-tree .layui-tree li i{position: relative; font-size: 22px; color: #000}
|
||||
.site-tree .layui-tree li a cite{padding: 0 8px;}
|
||||
.site-tree .layui-tree .site-tree-noicon a cite{padding-left: 15px;}
|
||||
.site-tree .layui-tree li a em{font-size: 12px; color: #bbb; padding-right: 5px; font-style: normal;}
|
||||
.site-tree .layui-tree li h2{line-height: 36px; border-left: 5px solid #009E94; margin: 15px 0 5px; padding: 0 10px; background-color: #f2f2f2;}
|
||||
.site-tree .layui-tree li ul{margin-left: 27px; line-height: 28px;}
|
||||
.site-tree .layui-tree li ul a,
|
||||
.site-tree .layui-tree li ul a i{color: #777;}
|
||||
.site-tree .layui-tree li ul a:hover{color: #333;}
|
||||
.site-tree .layui-tree li ul li{margin-left: 25px; overflow: visible; list-style-type: disc; /*list-style-position: inside;*/}
|
||||
.site-tree .layui-tree li ul li cite,
|
||||
.site-tree .layui-tree .site-tree-noicon ul li cite{padding-left: 0;}
|
||||
|
||||
.site-tree .layui-tree .layui-this a{color: #01AAED;}
|
||||
.site-tree .layui-tree .layui-this .layui-icon{color: #01AAED;}
|
||||
|
||||
.site-fix .site-tree{position: fixed; top: 0; bottom: 0; z-index: 666; min-height: 0; overflow: auto; background-color: #fff;}
|
||||
.site-fix .site-content{margin-left: 220px;}
|
||||
.site-fix-footer .site-tree{/*margin-bottom: 120px;*/}
|
||||
|
||||
|
||||
.site-title{ margin: 30px 0 20px;}
|
||||
.site-title fieldset{border: none; padding: 0; border-top: 1px solid #eee;}
|
||||
.site-title fieldset legend{margin-left: 20px; padding: 0 10px; font-size: 22px; font-weight: 300;}
|
||||
|
||||
.site-text a{color: #01AAED;}
|
||||
.site-h1{margin-bottom: 20px; line-height: 60px; padding-bottom: 10px; color: #393D49; border-bottom: 1px solid #eee; font-size: 28px; font-weight: 300;}
|
||||
.site-h1 .layui-icon{position: relative; top: 5px; font-size: 50px; margin-right: 10px;}
|
||||
.site-text{position:relative;}
|
||||
.site-text p{margin-bottom: 10px; line-height:22px;}
|
||||
.site-text em{padding: 0 3px; font-weight: 500; font-style: italic; color: #666;}
|
||||
.site-text code{margin:0 5px; padding: 3px 10px; border: 1px solid #e2e2e2; background-color: #fbfbfb; color: #666; border-radius: 2px;}
|
||||
|
||||
.site-table{width: 100%; margin: 10px 0;}
|
||||
.site-table thead{background-color:#f2f2f2; }
|
||||
.site-table th,
|
||||
.site-table td{padding: 6px 15px; min-height: 20px; line-height: 20px; border:1px solid #ddd; font-size: 14px; font-weight: 400;}
|
||||
.site-table tr:nth-child(even){background: #fbfbfb;}
|
||||
|
||||
.site-block{padding: 20px; border: 1px solid #eee;}
|
||||
.site-block .layui-form{margin-right: 200px;}
|
||||
|
||||
/* 更新日志 */
|
||||
.site-changelog .layui-timeline-title h2{display: inline-block;}
|
||||
.site-changelog .layui-timeline-title .layui-badge-rim{top: -2px; left: 10px;}
|
||||
|
||||
/* 颜色 */
|
||||
.site-doc-color{font-size: 0;}
|
||||
.site-doc-color li{display: inline-block; vertical-align: middle; width: 180px; margin-left: 20px; margin-bottom: 20px; padding: 20px 10px; color: #fff; text-align: center; border-radius: 2px; line-height: 22px; font-size: 14px;}
|
||||
.site-doc-color li p[tips]{opacity: 0.8; font-size: 12px;}
|
||||
|
||||
.site-doc-necolor li{width: 108px; margin-top: 15px; margin-left: 0; border-radius: 0;}
|
||||
|
||||
.site-doc-bgcolor li{padding: 10px;}
|
||||
|
||||
/* 宫格 */
|
||||
.site-doc-icon{margin-bottom: 50px; font-size: 0;}
|
||||
.site-doc-icon li{display: inline-block; vertical-align: middle; width: 127px; height: 105px; line-height: 25px; padding: 20px 0; margin-right: -1px; margin-bottom: -1px; border: 1px solid #e2e2e2; font-size: 14px; text-align: center; color: #666; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.site-doc-anim li{height: auto;}
|
||||
.site-doc-icon li .layui-icon{display: inline-block; font-size: 36px;}
|
||||
|
||||
.site-doc-icon li .doc-icon-name,
|
||||
.site-doc-icon li .doc-icon-code{color: #c2c2c2;}
|
||||
.site-doc-icon li .doc-icon-fontclass{height: 40px; line-height: 20px; padding: 0 5px; font-size: 13px; color: #333; }
|
||||
.site-doc-icon li:hover{background-color: #f2f2f2; color: #000;}
|
||||
|
||||
/* 栅格示例 */
|
||||
.grid-demo{padding: 10px; line-height: 50px; text-align: center; background-color: #79C48C; color: #fff;}
|
||||
.grid-demo-bg1{background-color: #63BA79;}
|
||||
.grid-demo-bg2{background-color: #49A761;}
|
||||
.grid-demo-bg3{background-color: #38814A;}
|
||||
|
||||
|
||||
/* 演示 */
|
||||
body .layui-layout-admin .site-demo{bottom: 0px;padding: 0;}/*bottom: 60px;*/
|
||||
body .site-demo-nav .layui-nav-item{line-height: 40px}
|
||||
.layui-nav-item .layui-icon{position: relative; font-size: 20px;}
|
||||
.layui-nav-item a cite{padding: 0 10px;}
|
||||
.site-demo .layui-main{margin: 15px; line-height: 22px;}
|
||||
.site-demo-editor{position: absolute; top: 0; bottom: 0; left: 0; width: 50%; }
|
||||
.site-demo-area{position: absolute; top: 0; bottom: 0; width: 100%;}
|
||||
.site-demo-editor textarea{position: absolute; width: 100%; height: 100%; padding: 10px; border: none; resize: none; background-color: #F7FBFF; background-color: #13151A; color: #999; font-family: Courier New; font-size: 12px; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}
|
||||
.site-demo-btn{position: absolute; bottom: 15px; right: 20px;}
|
||||
.site-demo-zanzhu{position: absolute; bottom: 0; left: 0; width: 100%; height: 90px; text-align: center; background-color: #e2e2e2; overflow: hidden;}
|
||||
.site-demo-zanzhu>*{position: relative; z-index: 1;}
|
||||
.site-demo-zanzhu:before{content: ""; position: absolute; z-index: 0; top: 50%; left: 50%; width: 120px; margin: -10px 0px 0px -60px; text-align: center; color: rgb(170, 170, 170); font-size: 18px; font-weight: 300; }
|
||||
|
||||
.site-demo-result{position: absolute; right: 0; top: 0; bottom: 0; width: 50%;}
|
||||
.site-demo-result iframe{position: absolute; width: 100%; height: 100%;}
|
||||
|
||||
.site-demo-button{margin-bottom: 30px;}
|
||||
.site-demo-button div{margin: 20px 30px 10px;}
|
||||
.site-demo-button .layui-btn+.layui-btn{margin-left: 0;}
|
||||
.site-demo-button .layui-btn{margin: 0 7px 10px 0; }
|
||||
|
||||
.site-demo-text a{color: #01AAED;}
|
||||
|
||||
.site-demo-laytpl{text-align: center;}
|
||||
.site-demo-laytpl textarea,
|
||||
.site-demo-laytpl div span{width: 40%; padding: 15px; margin: 0 15px;}
|
||||
.site-demo-laytpl textarea{height: 300px; border: none; background-color: #3F3F3F; color: #E3CEAB; font-family: Courier New; resize: none;}
|
||||
.site-demo-laytpl div span{display: inline-block; text-align: center; background: #101010; color: #fff;}
|
||||
.site-demo-tplres{margin: 10px 0; text-align: center}
|
||||
.site-demo-tplres .site-demo-tplh2,
|
||||
.site-demo-tplres .site-demo-tplview{display: inline-block; width: 50%;}
|
||||
.site-demo-tplres h2{padding: 15px; background: #e2e2e2;}
|
||||
.site-demo-tplres h3{font-weight: 700;}
|
||||
.site-demo-tplres div{padding: 14px; border: 1px solid #e2e2e2; text-align: left;}
|
||||
|
||||
.site-demo-upload,
|
||||
.site-demo-upload img{width: 200px; height: 200px; border-radius: 100%;}
|
||||
.site-demo-upload{position: relative; background: #e2e2e2;}
|
||||
.site-demo-upload .site-demo-upbar{position: absolute; top: 50%; left: 50%; margin: -18px 0 0 -56px;}
|
||||
.site-demo-upload .layui-upload-button{background-color: rgba(0,0,0,.2); color: rgba(255,255,255,1);}
|
||||
|
||||
.site-demo-util{position: relative; width: 300px;}
|
||||
.site-demo-util img{width: 300px; border-radius: 100%;}
|
||||
.site-demo-util span{position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: #333; cursor: pointer;}
|
||||
@-webkit-keyframes demo-fengjie {
|
||||
0% {-webkit-filter: blur(0); opacity: 1; background: #fff; height: 300px; border-radius: 100%;}
|
||||
80% {-webkit-filter: blur(50px); opacity: 0.95;}
|
||||
100% {-webkit-filter: blur(20px); opacity: 0; background: #fff;}
|
||||
}
|
||||
@keyframes demo-fengjie {
|
||||
0% {filter: blur(0); opacity: 1; background: #fff; height: 300px; border-radius: 100%;}
|
||||
80% {filter: blur(50px); opacity: 0.95;}
|
||||
100% {filter: blur(20px); opacity: 0; background: #fff;}
|
||||
}
|
||||
.site-demo-fengjie{-webkit-animation-name: demo-fengjie; animation-name: demo-fengjie; -webkit-animation-duration: 5s; animation-duration: 5s;}
|
||||
|
||||
.layui-layout-admin .site-demo-body{/* top: 106px; */}
|
||||
.site-demo-title{position: fixed; left: 200px; right: 0; top: 65px;}
|
||||
.site-demo-code{position: absolute; left: 0; top: 0; width: 100%; height: 100%; border: none; padding: 10px; resize: none; font-size: 12px; background-color: #F7FBFF; color: #881280; font-family: Courier New;}
|
||||
|
||||
.site-demo-overflow{overflow: hidden;}
|
||||
|
||||
/* 其它 */
|
||||
#trans-tooltip,
|
||||
#tip-arrow-bottom,
|
||||
#tip-arrow-top{display: none !important;}
|
||||
|
||||
|
||||
/* 独立组件 与 主页 */
|
||||
.alone{text-align: center; background-color: #009688; color: #fff; font-weight: 300; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.alone:hover{background-color: #5FB878;}
|
||||
.alone a{display: block; padding: 50px 20px; color: #fff; font-size: 30px;}
|
||||
.alone a cite{display: block; padding-top: 10px; font-size: 14px;}
|
||||
|
||||
|
||||
.alone-banner{height: 190px; text-align: center; font-weight: 300; background-color: #009688; color:#fff;}
|
||||
.alone-banner h1{padding-top: 60px; line-height: 32px; font-size: 30px; font-weight: 300;}
|
||||
.alone-banner p{padding-top: 20px; color: #e2e2e2; color: rgba(255,255,255,.8);}
|
||||
|
||||
.alone-nav .layui-tab-title li{margin-right: 30px; padding: 0; color: #666;}
|
||||
.alone-nav .layui-tab-title li a{ padding: 0 20px;}
|
||||
|
||||
.alone-download{margin: 30px 0;}
|
||||
.alone-download .layui-btn{margin-right: 10px;}
|
||||
.alone-download span{display: inline-block; line-height: 44px; padding-right: 20px;}
|
||||
.alone-download span em{color: #999;}
|
||||
|
||||
.alone-title{margin-top: 20px;}
|
||||
|
||||
.alone-download-btn{text-align: center; margin-top: 50px; font-size: 0;}
|
||||
.alone-download-btn .layui-btn{position: relative; width: 206px; height: 60px; line-height: 60px; font-size: 26px; font-weight: 300;}
|
||||
.alone-download-btn .layui-btn+.layui-btn{margin: 0;}
|
||||
.alone-download-btn .alone-download-right{margin-left: 20px !important; border-color: #009688; background: none; color: #009688;}
|
||||
.alone-download-btn .layui-btn img{position: relative; top: -3px; width: 118px;}
|
||||
|
||||
|
||||
|
||||
/* 适配多设备 */
|
||||
@media screen and (max-width: 750px) {
|
||||
.layui-main{width: auto; margin: 0 10px;}
|
||||
.logo,
|
||||
.header-demo .logo{left: 10px;}
|
||||
.component{display: none}
|
||||
|
||||
.header .layui-nav-child{left: auto; right: 0;}
|
||||
.site-demo-overflow{overflow: auto;}
|
||||
|
||||
.site-nav-layim{display: none !important;}
|
||||
.header .layui-nav .layui-nav-item{margin: 0;}
|
||||
.header .layui-nav .layui-nav-item a{padding: 0 20px;}
|
||||
.header .layui-nav .layui-nav-item[pc]{display: none;}
|
||||
.header .layui-nav .layui-nav-item[mobile]{display: inline-block;}
|
||||
.site-banner{height: 300px;}
|
||||
.site-banner-bg{background-size: cover;}
|
||||
.site-zfj{height: 100px; padding-top: 5px;}
|
||||
.site-zfj i{top: 10px; width: 100px; height: 100px; margin-left: -50px; font-size: 100px;}
|
||||
.site-desc{background-size: 70%; margin: 0;}
|
||||
.site-desc cite{display: none;}
|
||||
.site-download{margin-top: 0; }
|
||||
.site-download a{height: 40px; line-height: 40px; padding: 0 25px 0 60px; border-radius: 30px; color: #fff; font-size: 16px;}
|
||||
.site-download a cite{left: 20px;}
|
||||
.site-banner-other{bottom: 10px;}
|
||||
|
||||
.site-idea{margin: 20px 0;}
|
||||
.site-idea li{margin: 0 0 20px 0; width: 100%; height: auto; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}
|
||||
.site-hengfu img{max-width: 100%}
|
||||
|
||||
.site-block .layui-form{margin-right: 0;}
|
||||
|
||||
.layui-layer-dir{display: none;}
|
||||
.site-tree{position: fixed; top: 0; bottom: 0; min-height: 0; overflow: auto; z-index: 1000; left: -260px; background-color: #fff; transition: all .3s; -webkit-transition: all .3s;}
|
||||
.site-content{width: 100%; padding: 0; overflow: auto;}
|
||||
.site-content img{max-width: 100%;}
|
||||
.site-tree-mobile{display: block!important; position: fixed; z-index: 100000; bottom: 15px; left: 15px; width: 50px; height: 50px; line-height: 50px; border-radius: 2px; text-align: center; background-color: rgba(0,0,0,.7); color: #fff;}
|
||||
.site-home .site-tree-mobile{display: none!important;}
|
||||
.site-mobile .site-tree-mobile{display: none !important;}
|
||||
.site-mobile .site-tree{left: 0;}
|
||||
.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;}
|
||||
.site-tree-mobile i{font-size: 20px;}
|
||||
.layui-code-view{-webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
|
||||
|
||||
.layui-layout-admin .layui-side{position: fixed; top: 0; left: -260px; transition: all .3s; -webkit-transition: all .3s; z-index: 10000;}
|
||||
.layui-body{position: static; bottom: 0; left: 0;}
|
||||
.site-mobile .layui-side{left: 0;}
|
||||
.site-mobile .layui-side-child{top: 50%; left: 200px; height: 300px; margin-top: -100px;}
|
||||
|
||||
body .layui-layout-admin .footer-demo{position: static; height: auto; line-height: 30px;}
|
||||
.footer-demo p{height: auto;}
|
||||
|
||||
.site-demo-area,
|
||||
.site-demo-editor,
|
||||
.site-demo-result,
|
||||
.site-demo-editor textarea,
|
||||
.site-demo-result iframe{position: static; width: 100%;}
|
||||
.site-demo-editor textarea{height: 350px;}
|
||||
.site-demo-zanzhu{display: none;}
|
||||
.site-demo-btn{bottom: auto; top: 370px;}
|
||||
.site-demo-result iframe{height: 500px;}
|
||||
|
||||
.site-demo-laytpl textarea, .site-demo-laytpl div span{margin: 0;}
|
||||
.site-demo-tplres .site-demo-tplh2, .site-demo-tplres .site-demo-tplview{width: 100%; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
|
||||
|
||||
.site-demo-title{position: static; left: 0;}
|
||||
body .layui-layout-admin .site-demo{}
|
||||
.site-demo-code{position: static; height: 350px;}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@-webkit-keyframes site-anim-closeup{ /* 特写 */
|
||||
from {-webkit-transform: translate3d(0, 0, 0) scale(1); opacity: 1;}
|
||||
to { -webkit-transform: translate3d(0, 400px, 0) scale(2); opacity: 0.5;}
|
||||
}
|
||||
@keyframes site-anim-closeup{
|
||||
from {transform: translate3d(0, 0, 0) scale(1); opacity: 1;}
|
||||
to {transform: translate3d(0, 400px, 0) scale(2); opacity: 0.5;}
|
||||
}
|
||||
.site-out-up{-webkit-animation-duration: 3s; animation-duration: 3s; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-name: site-anim-closeup; animation-name: site-anim-closeup; overflow: hidden;}
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
@font-face {
|
||||
font-family: MuiiconSpread;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
src: url('mui-icons-extra.ttf') format('truetype'); /* iOS 4.1- */
|
||||
}
|
||||
.mui-icon-extra
|
||||
{
|
||||
font-family: MuiiconSpread;
|
||||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
line-height: 1;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
.mui-icon-extra-cold:before { content: "\e500"; }
|
||||
.mui-icon-extra-share:before { content: "\e200"; }
|
||||
.mui-icon-extra-class:before { content: "\e118"; }
|
||||
.mui-icon-extra-custom:before { content: "\e117"; }
|
||||
.mui-icon-extra-new:before { content: "\e103"; }
|
||||
.mui-icon-extra-card:before { content: "\e104"; }
|
||||
.mui-icon-extra-grech:before { content: "\e105"; }
|
||||
.mui-icon-extra-trend:before { content: "\e106"; }
|
||||
.mui-icon-extra-filter:before { content: "\e207"; }
|
||||
.mui-icon-extra-holiday:before { content: "\e300"; }
|
||||
.mui-icon-extra-cart:before { content: "\e107"; }
|
||||
.mui-icon-extra-heart:before { content: "\e180"; }
|
||||
.mui-icon-extra-computer:before { content: "\e600"; }
|
||||
.mui-icon-extra-express:before { content: "\e108"; }
|
||||
.mui-icon-extra-gift:before { content: "\e109"; }
|
||||
.mui-icon-extra-gold:before { content: "\e102"; }
|
||||
.mui-icon-extra-lamp:before { content: "\e601"; }
|
||||
.mui-icon-extra-rank:before { content: "\e110"; }
|
||||
.mui-icon-extra-notice:before { content: "\e111"; }
|
||||
.mui-icon-extra-sweep:before { content: "\e202"; }
|
||||
.mui-icon-extra-arrowleftcricle:before { content: "\e401"; }
|
||||
.mui-icon-extra-dictionary:before { content: "\e602"; }
|
||||
.mui-icon-extra-heart-filled:before { content: "\e119"; }
|
||||
.mui-icon-extra-xiaoshuo:before { content: "\e607"; }
|
||||
.mui-icon-extra-top:before { content: "\e403"; }
|
||||
.mui-icon-extra-people:before { content: "\e203"; }
|
||||
.mui-icon-extra-topic:before { content: "\e603"; }
|
||||
.mui-icon-extra-hotel:before { content: "\e301"; }
|
||||
.mui-icon-extra-like:before { content: "\e206"; }
|
||||
.mui-icon-extra-regist:before { content: "\e201"; }
|
||||
.mui-icon-extra-order:before { content: "\e113"; }
|
||||
.mui-icon-extra-alipay:before { content: "\e114"; }
|
||||
.mui-icon-extra-find:before { content: "\e400"; }
|
||||
.mui-icon-extra-arrowrightcricle:before { content: "\e402"; }
|
||||
.mui-icon-extra-calendar:before { content: "\e115"; }
|
||||
.mui-icon-extra-prech:before { content: "\e116"; }
|
||||
.mui-icon-extra-cate:before { content: "\e501"; }
|
||||
.mui-icon-extra-comment:before { content: "\e209"; }
|
||||
.mui-icon-extra-at:before { content: "\e208"; }
|
||||
.mui-icon-extra-addpeople:before { content: "\e204"; }
|
||||
.mui-icon-extra-peoples:before { content: "\e205"; }
|
||||
.mui-icon-extra-calc:before { content: "\e101"; }
|
||||
.mui-icon-extra-classroom:before { content: "\e604"; }
|
||||
.mui-icon-extra-phone:before { content: "\e404"; }
|
||||
.mui-icon-extra-university:before { content: "\e605"; }
|
||||
.mui-icon-extra-outline:before { content: "\e606"; }
|
||||
@@ -0,0 +1,129 @@
|
||||
html{height: 100%;}
|
||||
|
||||
#canvas-wrapper {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
body.signin {
|
||||
background: #18c8f6;
|
||||
height: auto;
|
||||
/*background:url("/images/login-background.jpg") no-repeat center fixed;*/
|
||||
background: #2f4050;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
-o-background-size: cover;
|
||||
background-size: cover;
|
||||
color: rgba(255,255,255,.95);
|
||||
}
|
||||
|
||||
.signinpanel {
|
||||
width: 320px;
|
||||
margin: 10% auto 0 auto;
|
||||
background: #2f4050;
|
||||
}
|
||||
|
||||
.signinpanel .logopanel {
|
||||
float: none;
|
||||
width: auto;
|
||||
padding: 0;
|
||||
background: none;
|
||||
}
|
||||
|
||||
.signinpanel .signin-info ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
.signinpanel .form-control {
|
||||
display: block;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.signinpanel .uname {
|
||||
/*background: #fff url(../img/user.png) no-repeat 95% center;*/
|
||||
color:#333;
|
||||
}
|
||||
|
||||
.signinpanel .pword {
|
||||
/*background: #fff url(../img/locked.png) no-repeat 95% center;*/
|
||||
color:#333;
|
||||
}
|
||||
|
||||
.signinpanel .btn {
|
||||
margin-top: 15px;
|
||||
}
|
||||
.signinpanel .vld-code {
|
||||
float: right;
|
||||
clear:right;
|
||||
position:relative;
|
||||
margin-top:-30px;
|
||||
}
|
||||
.signinpanel .vld-code img {
|
||||
cursor: pointer;
|
||||
width: 80px;
|
||||
height: 30px;
|
||||
|
||||
}
|
||||
.signinpanel .vld-code .reset-code {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
font-size:12px;
|
||||
color:chocolate;
|
||||
}
|
||||
.signinpanel form {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border: 1px solid rgba(255,255,255,.3);
|
||||
-moz-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03);
|
||||
-webkit-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03);
|
||||
box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03);
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.signup-footer{border-top: solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top: 15px;}
|
||||
|
||||
@media screen and (max-width: 768px) {
|
||||
.signinpanel,
|
||||
.signuppanel {
|
||||
margin: 0 auto;
|
||||
width: 420px!important;
|
||||
padding: 20px;
|
||||
}
|
||||
.signinpanel form {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.signup-footer {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.signuppanel .form-control {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.signup-footer .pull-left,
|
||||
.signup-footer .pull-right {
|
||||
float: none !important;
|
||||
text-align: center;
|
||||
}
|
||||
.signinpanel .signin-info ul {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 320px) {
|
||||
.signinpanel,
|
||||
.signuppanel {
|
||||
margin:0 20px;
|
||||
width:auto;
|
||||
}
|
||||
}
|
||||
|
||||
.field-validation-error {
|
||||
color: #f13636;
|
||||
text-align:left;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
zhelis
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>存在搭建问题</title>
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<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">
|
||||
</head>
|
||||
<body class="body">
|
||||
<div style="padding: 15px;color: red;">
|
||||
<h1 style="text-align: center">检测到运行目录未设定成public</h1><br><br>
|
||||
<h1 style="text-align: center">请在宝塔面板-网站-设置-网站目录->修改运行目录为public并保存,同时关闭防跨站攻击</h1><br><br>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<title>测试支付</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<p>商户订单号:<input type="text" id="payId"/></p>
|
||||
<p>商户订单价:<input type="number" id="price" value="0.1"/></p>
|
||||
<p>自定义参数:<input type="text" id="param" value="vone666"/></p>
|
||||
<p>支付方式:<select id="type"><option value="1">微信支付</option><option value="2">支付宝支付</option></select></p>
|
||||
<button onclick="zf()">支付</button>
|
||||
<script src="https://lib.baomitu.com/jquery/3.4.0/jquery.min.js"></script>
|
||||
<script>
|
||||
$("#payId").val(new Date().getTime());
|
||||
function zf() {
|
||||
var p = "payId="+$("#payId").val() + "&price="+$("#price").val()+"¶m="+$("#param").val()+"&type="+$("#type").val();
|
||||
window.location.href = "main.php?" + p;
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
ini_set("error_reporting","E_ALL & ~E_NOTICE");
|
||||
|
||||
$key = "7eed756ca37ca057370ea9bb208d25fa";//通讯密钥
|
||||
$host = "../createOrder";
|
||||
|
||||
$sign = md5($_GET['payId'].$_GET['param'].$_GET['type'].$_GET['price'].$key);
|
||||
$p = "payId=".$_GET['payId'].'¶m='.$_GET['param'].'&type='.$_GET['type']."&price=".$_GET['price'].'&sign='.$sign.'&isHtml=1';
|
||||
|
||||
echo "<script>window.location.href = '".$host."?".$p."'</script>";
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
ini_set("error_reporting","E_ALL & ~E_NOTICE");
|
||||
$key = "7eed756ca37ca057370ea9bb208d25fa";//通讯密钥
|
||||
$payId = $_GET['payId'];//商户订单号
|
||||
$param = $_GET['param'];//创建订单的时候传入的参数
|
||||
$type = $_GET['type'];//支付方式 :微信支付为1 支付宝支付为2
|
||||
$price = $_GET['price'];//订单金额
|
||||
$reallyPrice = $_GET['reallyPrice'];//实际支付金额
|
||||
$sign = $_GET['sign'];//校验签名,计算方式 = md5(payId + param + type + price + reallyPrice + 通讯密钥)
|
||||
//开始校验签名
|
||||
$_sign = md5($payId . $param . $type . $price . $reallyPrice . $key);
|
||||
if ($_sign != $sign) {
|
||||
echo "error_sign";//sign校验不通过
|
||||
exit();
|
||||
}
|
||||
|
||||
echo "success";
|
||||
|
||||
|
||||
//继续业务流程
|
||||
//echo "商户订单号:".$payId ."<br>自定义参数:". $param ."<br>支付方式:". $type ."<br>订单金额:". $price ."<br>实际支付金额:". $reallyPrice;
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
ini_set("error_reporting","E_ALL & ~E_NOTICE");
|
||||
$key = "7eed756ca37ca057370ea9bb208d25fa";//通讯密钥
|
||||
$payId = $_GET['payId'];//商户订单号
|
||||
$param = $_GET['param'];//创建订单的时候传入的参数
|
||||
$type = $_GET['type'];//支付方式 :微信支付为1 支付宝支付为2
|
||||
$price = $_GET['price'];//订单金额
|
||||
$reallyPrice = $_GET['reallyPrice'];//实际支付金额
|
||||
$sign = $_GET['sign'];//校验签名,计算方式 = md5(payId + param + type + price + reallyPrice + 通讯密钥)
|
||||
//开始校验签名
|
||||
$_sign = md5($payId . $param . $type . $price . $reallyPrice . $key);
|
||||
if ($_sign != $sign) {
|
||||
echo "error_sign";//sign校验不通过
|
||||
exit();
|
||||
}
|
||||
|
||||
|
||||
//继续业务流程
|
||||
echo "商户订单号:".$payId ."<br>自定义参数:". $param ."<br>支付方式:". $type ."<br>订单金额:". $price ."<br>实际支付金额:". $reallyPrice;
|
||||
|
||||
|
||||
?>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 255 B |
|
After Width: | Height: | Size: 8.4 KiB |
@@ -0,0 +1,106 @@
|
||||
|
||||
<!DOCTYPE HTML>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>V免签</title>
|
||||
<meta name="keywords" content="" />
|
||||
<meta name="description" content="" />
|
||||
<meta charset="utf-8" />
|
||||
<link rel="shortcut icon" href="favicon.ico" />
|
||||
<link rel="bookmark" href="favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
||||
<link rel="stylesheet" href="assets/css/main.css" />
|
||||
<noscript><link rel="stylesheet" href="assets/css/noscript.css" /></noscript>
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
|
||||
<header id="header">
|
||||
<div class="logo">
|
||||
<span class="icon fa-rmb"></span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<div class="inner">
|
||||
<h1>V免签</h1>
|
||||
|
||||
<p>个人用户收款解决方案</p>
|
||||
</div>
|
||||
</div>
|
||||
<nav>
|
||||
<ul>
|
||||
<li><a href="#login">登录</a></li>
|
||||
<li><a href="#about">简介</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<div id="main">
|
||||
|
||||
<article id="about">
|
||||
<h2 class="major">简介</h2>
|
||||
<p>1、V免签为个人用户提供支付宝、微信的免签约收款解决方案。</p>
|
||||
<p>2、V免签为开源免费产品,请勿二次出售。</p>
|
||||
<p>3、V免签仅供交流学习使用,请勿用于商业用途。</p>
|
||||
<p>4、请遵守相关法律法规,请勿用于非法用途。</p>
|
||||
<p><input type="submit" value="获取V免签" class="" onclick="window.location.href='https://github.com/szvone/vmqphp'"/></p>
|
||||
</article>
|
||||
|
||||
|
||||
<article id="login">
|
||||
<h2 class="major">登录</h2>
|
||||
<form method="post" action="javascript:login();">
|
||||
<div class="field half first">
|
||||
<label for="user">账号</label>
|
||||
<input type="text" name="user" id="user" />
|
||||
</div>
|
||||
<div class="field half">
|
||||
<label for="pass">密码</label>
|
||||
<input type="password" name="pass" id="pass" />
|
||||
</div>
|
||||
|
||||
<ul class="actions">
|
||||
<li><input id="login2" type="submit" value="登录" class="special" /></li>
|
||||
<li><input type="reset" value="清空" /></li>
|
||||
</ul>
|
||||
</form>
|
||||
<br>
|
||||
<div id="result" role="dialog">
|
||||
<p color class="h5 margin-top-sm text-black-hint" id="msg"></p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
<footer id="footer">
|
||||
<p class="copyright">©2019 V免签</p>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="bg"></div>
|
||||
|
||||
<script src="./assets/js/jQuery@1.11.3.js"></script>
|
||||
<script src="./assets/js/skel.min.js"></script>
|
||||
<script src="assets/js/util.js"></script>
|
||||
<script src="assets/js/main.js"></script>
|
||||
<script src="assets/js/layer.js"></script>
|
||||
|
||||
|
||||
<script>
|
||||
function login() {
|
||||
try {
|
||||
$.post("login","user="+$("#user").val()+"&pass="+$("#pass").val(),function (data) {
|
||||
layer.msg(data.msg);
|
||||
if (data.code==1){
|
||||
window.location.href = "aaa.html";
|
||||
}
|
||||
});
|
||||
}catch (e) {
|
||||
layer.alert("程序出错,请检查:<br>1、伪静态是否设置成功<br>2、是否设置好数据库账号密码并导入数据库脚本")
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2006-2018 http://thinkphp.cn All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: liu21st <liu21st@gmail.com>
|
||||
// +----------------------------------------------------------------------
|
||||
|
||||
// [ 应用入口文件 ]
|
||||
namespace think;
|
||||
|
||||
// 加载基础文件
|
||||
require __DIR__ . '/../thinkphp/base.php';
|
||||
|
||||
// 支持事先使用静态方法设置Request对象和Config对象
|
||||
|
||||
|
||||
|
||||
// 执行应用并响应
|
||||
Container::get('app')->run()->send();
|
||||
|
||||
|
||||
@@ -0,0 +1,229 @@
|
||||
/**
|
||||
|
||||
layui官网
|
||||
|
||||
*/
|
||||
|
||||
layui.define(['code', 'element', 'table', 'util'], function(exports){
|
||||
var $ = layui.jquery
|
||||
,element = layui.element
|
||||
,layer = layui.layer
|
||||
,form = layui.form
|
||||
,util = layui.util
|
||||
,device = layui.device()
|
||||
|
||||
,$win = $(window), $body = $('body');
|
||||
|
||||
|
||||
//阻止IE7以下访问
|
||||
if(device.ie && device.ie < 8){
|
||||
layer.alert('Layui最低支持ie8,您当前使用的是古老的 IE'+ device.ie + ',你丫的肯定不是程序猿!');
|
||||
}
|
||||
|
||||
var home = $('#LAY_home');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//首页banner
|
||||
setTimeout(function(){
|
||||
$('.site-zfj').addClass('site-zfj-anim');
|
||||
setTimeout(function(){
|
||||
$('.site-desc').addClass('site-desc-anim')
|
||||
}, 5000)
|
||||
}, 100);
|
||||
|
||||
|
||||
//数字前置补零
|
||||
var digit = function(num, length, end){
|
||||
var str = '';
|
||||
num = String(num);
|
||||
length = length || 2;
|
||||
for(var i = num.length; i < length; i++){
|
||||
str += '0';
|
||||
}
|
||||
return num < Math.pow(10, length) ? str + (num|0) : num;
|
||||
};
|
||||
|
||||
|
||||
|
||||
for(var i = 0; i < $('.adsbygoogle').length; i++){
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
}
|
||||
|
||||
|
||||
//展示当前版本
|
||||
$('.site-showv').html(layui.v);
|
||||
|
||||
|
||||
|
||||
//固定Bar
|
||||
if(global.pageType !== 'demo'){
|
||||
util.fixbar({
|
||||
bar1: true
|
||||
,click: function(type){
|
||||
if(type === 'bar1'){
|
||||
location.href = '//fly.layui.com/';
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
/*
|
||||
//窗口scroll
|
||||
;!function(){
|
||||
var main = $('.site-tree').parent(), scroll = function(){
|
||||
var stop = $(window).scrollTop();
|
||||
|
||||
if($(window).width() <= 750) return;
|
||||
var bottom = $('.footer').offset().top - $(window).height();
|
||||
if(stop > 61 && stop < bottom){
|
||||
if(!main.hasClass('site-fix')){
|
||||
main.addClass('site-fix');
|
||||
}
|
||||
if(main.hasClass('site-fix-footer')){
|
||||
main.removeClass('site-fix-footer');
|
||||
}
|
||||
} else if(stop >= bottom) {
|
||||
if(!main.hasClass('site-fix-footer')){
|
||||
main.addClass('site-fix site-fix-footer');
|
||||
}
|
||||
} else {
|
||||
if(main.hasClass('site-fix')){
|
||||
main.removeClass('site-fix').removeClass('site-fix-footer');
|
||||
}
|
||||
}
|
||||
stop = null;
|
||||
};
|
||||
scroll();
|
||||
$(window).on('scroll', scroll);
|
||||
}();
|
||||
*/
|
||||
//示例页面滚动
|
||||
$('.site-demo-body').on('scroll', function(){
|
||||
var elemDate = $('.layui-laydate')
|
||||
,elemTips = $('.layui-table-tips');
|
||||
if(elemDate[0]){
|
||||
elemDate.each(function(){
|
||||
var othis = $(this);
|
||||
if(!othis.hasClass('layui-laydate-static')){
|
||||
othis.remove();
|
||||
}
|
||||
});
|
||||
$('input').blur();
|
||||
}
|
||||
if(elemTips[0]) elemTips.remove();
|
||||
|
||||
if($('.layui-layer')[0]){
|
||||
layer.closeAll('tips');
|
||||
}
|
||||
});
|
||||
|
||||
//代码修饰
|
||||
layui.code({
|
||||
elem: 'pre'
|
||||
});
|
||||
|
||||
//目录
|
||||
var siteDir = $('.site-dir');
|
||||
if(siteDir[0] && $(window).width() > 750){
|
||||
layer.ready(function(){
|
||||
layer.open({
|
||||
type: 1
|
||||
,content: siteDir
|
||||
,skin: 'layui-layer-dir'
|
||||
,area: 'auto'
|
||||
,maxHeight: $(window).height() - 300
|
||||
,title: '目录'
|
||||
//,closeBtn: false
|
||||
,offset: 'r'
|
||||
,shade: false
|
||||
,success: function(layero, index){
|
||||
layer.style(index, {
|
||||
marginLeft: -15
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
siteDir.find('li').on('click', function(){
|
||||
var othis = $(this);
|
||||
othis.find('a').addClass('layui-this');
|
||||
othis.siblings().find('a').removeClass('layui-this');
|
||||
});
|
||||
}
|
||||
|
||||
//在textarea焦点处插入字符
|
||||
var focusInsert = function(str){
|
||||
var start = this.selectionStart
|
||||
,end = this.selectionEnd
|
||||
,offset = start + str.length
|
||||
|
||||
this.value = this.value.substring(0, start) + str + this.value.substring(end);
|
||||
this.setSelectionRange(offset, offset);
|
||||
};
|
||||
|
||||
//演示页面
|
||||
$('body').on('keydown', '#LAY_editor, .site-demo-text', function(e){
|
||||
var key = e.keyCode;
|
||||
if(key === 9 && window.getSelection){
|
||||
e.preventDefault();
|
||||
focusInsert.call(this, ' ');
|
||||
}
|
||||
});
|
||||
|
||||
var editor = $('#LAY_editor')
|
||||
,iframeElem = $('#LAY_demo')
|
||||
,demoForm = $('#LAY_demoForm')[0]
|
||||
,demoCodes = $('#LAY_demoCodes')[0]
|
||||
,runCodes = function(){
|
||||
if(!iframeElem[0]) return;
|
||||
var html = editor.val();
|
||||
|
||||
html = html.replace(/=/gi,"layequalsign");
|
||||
html = html.replace(/script/gi,"layscrlayipttag");
|
||||
demoCodes.value = html.length > 100*1000 ? '<h1>卧槽,你的代码过长</h1>' : html;
|
||||
|
||||
demoForm.action = '/api/runHtml/';
|
||||
demoForm.submit();
|
||||
|
||||
};
|
||||
$('#LAY_demo_run').on('click', runCodes), runCodes();
|
||||
|
||||
//让导航在最佳位置
|
||||
var thisItem = $('.site-demo-nav').find('dd.layui-this');
|
||||
if(thisItem[0]){
|
||||
var itemTop = thisItem.offset().top
|
||||
,winHeight = $(window).height()
|
||||
,elemScroll = $('.layui-side-scroll');
|
||||
if(itemTop > winHeight - 120){
|
||||
elemScroll.animate({'scrollTop': itemTop/2}, 200)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//点击查看代码选项
|
||||
element.on('tab(demoTitle)', function(obj){
|
||||
if(obj.index === 1){
|
||||
if(device.ie && device.ie < 9){
|
||||
layer.alert('强烈不推荐你通过ie8/9 查看代码!因为,所有的标签都会被格式成大写,且没有换行符,影响阅读');
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
//手机设备的简单适配
|
||||
var treeMobile = $('.site-tree-mobile')
|
||||
,shadeMobile = $('.site-mobile-shade')
|
||||
|
||||
treeMobile.on('click', function(){
|
||||
$('body').addClass('site-mobile');
|
||||
});
|
||||
|
||||
shadeMobile.on('click', function(){
|
||||
$('body').removeClass('site-mobile');
|
||||
});
|
||||
|
||||
|
||||
|
||||
exports('global', {});
|
||||
});
|
||||
@@ -0,0 +1,2 @@
|
||||
/** layui-v2.4.5 MIT License By https://www.layui.com */
|
||||
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 #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.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 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.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}
|
||||
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 701 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 274 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 6.6 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 9.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 7.9 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 3.6 KiB |