first commit
This commit is contained in:
@@ -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>
|
||||
Reference in New Issue
Block a user