fix: API路由补齐+后台全面中文化

This commit is contained in:
testadmin
2026-04-29 03:33:00 +08:00
parent 664d4d9572
commit 6ce7adcbfb
267 changed files with 47059 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label for="currency_id" class="layui-form-label">币种</label>
<div class="layui-input-block">
<select name="currency_id" lay-verify="required" lay-search>
@foreach ($currencies as $currency)
<option value="{{ $currency->id }}" @if ((isset($currency_match) && $currency_match->currency_id == $currency->id)) selected @endif>{{ $currency->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">数量</label>
<div class="layui-input-block">
<input type="text" name="number" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->number}}">
</div>
</div>
<input type="hidden" name="id" value="{{$result->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/micro_number_add')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,88 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">预设盈利状态</label>
<div class="layui-input-block">
<select name="risk" lay-verify="required" lay-filter="risk_mode">
<option value=""></option>
<option value="0" {{ ($result->pre_profit_result ?? 0) == 0 ? 'selected' : '' }} ></option>
<option value="1" {{ ($result->pre_profit_result ?? 0) == 1 ? 'selected' : '' }} >盈利</option>
<option value="-1" {{ ($result->pre_profit_result ?? 0) == -1 ? 'selected' : '' }} >亏损</option>
</select>
</div>
</div>
<input type="hidden" name="id" value="{{$result->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use('upload', function(){
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#upload_test' //绑定元素
,url: '{{URL("api/upload")}}' //上传接口
,done: function(res){
//上传完毕回调
if (res.type == "ok"){
$("#thumbnail").val(res.message)
$("#img_thumbnail").show()
$("#img_thumbnail").attr("src",res.message)
} else{
alert(res.message)
}
}
,error: function(){
//请求异常回调
}
});
});
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/micro_order_edit')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if(res.type=='error'){
layer.msg(res.message);
}else{
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,80 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_set">添加设置</button>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
{{--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">调节账户</a>--}}
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
@endsection
@section('scripts')
<script type="text/html" id="status">
<input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="status" @{{ d.status == 1 ? 'checked' : '' }}>
</script>
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
$('#add_set').click(function(){layer_show('添加管理员', '/admin/micro_number_add');});
table.render({
elem: '#demo'
,url: '{{url('admin/micro_numbers_list')}}' //数据接口
,page: true //开启分页
,height: 'full-100'
,id: 'mobileSearch'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:80, sort: true}
,{field: 'currency_name', title: '币种名称', minWidth:80}
,{field: 'number', title: '数量', minWidth:80}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/micro_number_del')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑商家','{{url('admin/micro_number_add')}}?id='+data.id);
}
});
});
</script>
@endsection
@@ -0,0 +1,351 @@
@extends('admin._layoutNew')
@section('page-head')
<style>
.order_type_rise {
/*
background-color:#89deb3;
*/
color:#1aab65;
}
.order_type_fall {
/*
background-color:#d67a7a;
*/
color:#de1919;
}
.order_type {
/*
color:#fff;
*/
font-size: 10px;
text-align: center;
}
.layui-item {
margin: 10px;
}
.hidden {
display: none;
}
</style>
@endsection
@section('page-content')
<div class="layui-form">
<div class="layui-item">
<div class="layui-inline" style="margin-left: 10px;">
<label>交易对</label>
<div class="layui-input-inline" style="width: 120px">
<select name="match_id" id="currency_match" class="layui-input">
<option value="-1">所有</option>
@foreach ($currency_matches as $key=> $currency_match)
<option value="{{ $currency_match->id }}">{{ $currency_match->symbol }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label>支付货币</label>
<div class="layui-input-inline" style="width: 90px">
<select name="currency_id" id="currency_id" class="layui-input">
<option value="-1">所有</option>
@foreach ($currencies as $key => $currency)
<option value="{{ $currency->id }}">{{ $currency->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label>买卖类型</label>
<div class="layui-input-inline" style="width: 90px">
<select name="type" id="type" class="layui-input">
<option value="-1">所有</option>
<option value="1">买涨</option>
<option value="2">买跌</option>
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label>保险交易</label>
<div class="layui-input-inline" style="width: 90px">
<select name="is_insurance" id="is_insurance" class="layui-input">
<option value="-1">所有</option>
<option value="2">反向</option>
<option value="1">正向</option>
<option value="0"></option>
</select>
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label>交易状态</label>
<div class="layui-input-inline" style="width: 90px">
<select name="status" id="status" class="layui-input">
<option value="-1">所有</option>
<option value="1">交易中</option>
<option value="2">平仓中</option>
<option value="3">已平仓</option>
</select>
</div>
</div>
<!--<div class="layui-inline" style="margin-left: 10px;">-->
<!-- <label>预设</label>-->
<!-- <div class="layui-input-inline" style="width: 90px">-->
<!-- <select name="pre_profit_result" id="pre_profit_result" class="layui-input">-->
<!-- <option value="-2">所有</option>-->
<!-- <option value="-1"></option>-->
<!-- <option value="0"></option>-->
<!-- <option value="1"></option>-->
<!-- </select>-->
<!-- </div>-->
<!-- <button class="layui-btn layui-btn-primary" id="btn-set" type="button" style="padding:0px; margin-left: -4px; width: 30px;">-->
<!-- <i class="layui-icon layui-icon-set-fill"></i>-->
<!-- </button>-->
<!--</div>-->
<div class="layui-inline" style="margin-left: 10px;">
<label>结果</label>
<div class="layui-input-inline" style="width: 90px">
<select name="profit_result" id="profit_result" class="layui-input">
<option value="-2">所有</option>
<option value="-1"></option>
<option value="0"></option>
<option value="1"></option>
</select>
</div>
</div>
<div class="layui-btn-group">
<button class="layui-btn layui-btn-primary" id="spread" type="button" style="padding:0px; width: 30px;"><i class="layui-icon layui-icon-down"></i></button>
<button class="layui-btn" id="btn-search" lay-submit lay-filter="btn-search"><i class="layui-icon layui-icon-search"></i></button>
</div>
</div>
<div class="layui-item hidden" id="more">
<div class="layui-inline" style="margin-left: 10px;">
<label >开始日期:</label>
<div class="layui-input-inline" style="width:170px;">
<input type="text" class="layui-input" id="start_time" value="" name="start_time">
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label >结束日期:</label>
<div class="layui-input-inline" style="width:170px;">
<input type="text" class="layui-input" id="end_time" value="" name="end_time">
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label>用户账号</label>
<div class="layui-input-inline">
<input type="text" name="account" placeholder="请输入手机号或邮箱" autocomplete="off" class="layui-input" value="">
</div>
</div>
<div class="layui-inline" style="margin-left: 10px;">
<label>真实姓名</label>
<div class="layui-input-inline">
<input type="text" name="name" placeholder="请输入真实姓名" autocomplete="off" class="layui-input" value="">
</div>
</div>
</div>
</div>
<table id="order_list" lay-filter="order_list"></table>
@endsection
@section('scripts')
<script type="text/html" id="barDemo">
@{{d.status==1 ? '<a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="edit">编辑</a>' : '' }}
</script>
<script type="text/html" id="type_name">
@{{# if (d.type == 1) { }}
<div class="order_type order_type_rise">
<span style="font-size: 13px; font-weight: bold;">@{{d.type_name}}</span><span style="font-size: 18px; font-weight: bold;"></span>
</div>
@{{# } else { }}
<div class="order_type order_type_fall">
<span style="font-size: 13px; font-weight: bold;">@{{d.type_name}}</span><span style="font-size: 18px; font-weight: bold;"></span>
</div>
@{{# } }}
</script>
<script type="text/html" id="pre_profit_result_name">
@{{# if (d.pre_profit_result == 1) { }}
<span style="color:#89deb3;">@{{d.pre_profit_result_name}}</span>
@{{# } else if (d.pre_profit_result == -1) { }}
<span style="color:#d67a7a;">@{{d.pre_profit_result_name}}</span>
@{{# } else { }}
<span class="layui-badge-rim">@{{d.pre_profit_result_name}}</span>
@{{# } }}
</script>
<script type="text/html" id="profit_result_name">
<span class="layui-badge @{{d.profit_result == 1 ? 'layui-bg-green' : ''}}">@{{d.profit_result_name}}</span>
</script>
<script type="text/html" id="status_name">
<span class="layui-badge @{{d.status == 1 ? '' : 'layui-bg-gray'}}">@{{d.status_name}}</span>
</script>
<script type="text/html" id="symbol_name">
<span>@{{d.symbol_name}}</span><span style="color: #848484dd; font-size: 10px;" title="收益率:@{{d.profit_ratio}}%">-@{{d.seconds}}S</span>
</script>
<script type="text/html" id="seconds">
<div>
<span title="收益率:@{{d.profit_ratio}}%">@{{d.seconds}}</span>
</div>
</script>
<script type="text/html" id="fact_profits">
<div style="text-align: right; margin-right: 10px;">
@{{# if (d.profit_result == 1) { }}
<span style="color: #f00; font-weight: bolder;">@{{Number(d.fact_profits).toFixed(0)}}</span>
@{{# } else { }}
<span>@{{Number(d.fact_profits).toFixed(0)}}</span>
@{{# } }}
</div>
</script>
<script>
window.onload = function() {
document.onkeydown = function(event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e && e.keyCode == 13) { // enter 键
$('#btn-search').click();
}
};
layui.use(['element', 'form', 'layer', 'table', 'laydate'], function() {
var element = layui.element;
var layer = layui.layer;
var table = layui.table;
var $ = layui.$;
var form = layui.form;
var laydate = layui.laydate;
laydate.render({
elem: '#start_time',
type:'datetime'
});
laydate.render({
elem: '#end_time',
type:'datetime'
});
form.on('submit(btn-search)', function (data) {
var option = {
where: data.field,
page: {curr: 1}
}
data_table.reload(option);
return false;
});
$('#spread').click(function () {
var icon = $(this).find('i');
var order_list_height = $('div[lay-id=order_list]').height()
var origin_height = $('div[lay-id=order_list] div.layui-table-box').height()
if (icon.hasClass('layui-icon-up')) {
$('div[lay-id=order_list]').height(order_list_height + 30)
$('div[lay-id=order_list] div.layui-table-box').height(origin_height + 30)
icon.removeClass('layui-icon-up')
icon.addClass('layui-icon-down')
} else {
$('div[lay-id=order_list]').height(order_list_height - 30)
$('div[lay-id=order_list] div.layui-table-box').height(origin_height - 30)
icon.removeClass('layui-icon-down')
icon.addClass('layui-icon-up')
}
$('#more').toggle();
});
var data_table = table.render({
elem: '#order_list',
url: "/admin/micro_order_list",
done: function(res, curr, count) {
$('tr:has(div.order_type_rise)').css('backgroundColor', '#f4fdf8');
$('tr:has(div.order_type_fall)').css('backgroundColor', '#fff8f8');
},
page: true,
limit: 20,
limits: [20, 50, 100, 500, 1000],
toolbar: true,
height: 'full-100',
totalRow: true,
cols: [[
{field: '', type: 'checkbox', width: 60}
,{field: '', title: '序号', type: "numbers", width: 90}
,{field: 'id', title: 'ID', width: 100}
,{field: 'account', title: '用户账号', width: 130, sort: true, totalRowText: '小计'}
,{field: 'real_name', title: '真实姓名', width: 100}
,{field: 'symbol_name', title: '合约', width: 140, sort: true, templet: '#symbol_name'}
,{field: 'currency_name', title: '币种', width: 80, sort: true}
,{field: 'type_name', title: '类型', width: 80, templet: '#type_name', sort: true}
,{field: 'seconds', title: '秒数', width: 80, templet: '#seconds', sort: true, hide: true}
,{field: 'status_name', title: '交易状态', width: 100, sort: true, templet: '#status_name'}
,{field: 'number', title: '数量', width: 90, templet: '<div><div style="text-align: right;">@{{Number.parseInt(d.number)}}</div></div>', totalRow: true}
,{field: 'fee', title: '手续费', width: 100, totalRow: true, templet: '<div><div style="text-align: right;"><span>@{{Number(d.fee).toFixed(2)}}</span></div></div>'}
,{field: 'pre_profit_result_name', title: '预设', width: 90, sort: true, templet: '#pre_profit_result_name', hide: false}
,{field: 'profit_result_name', title: '结果', width: 90, sort: true, templet: '#profit_result_name', hide: false}
,{field: 'fact_profits', title: '盈利', width: 100, sort: true, totalRow: true, templet: '#fact_profits'}
,{field: 'open_price', title: '开仓价', width: 100, templet: '<div><div style="text-align: right;"><span>@{{Number(d.open_price).toFixed(4)}}</span></div></div>'}
,{field: 'end_price', title: '平仓价', width: 100, templet: '<div><div style="text-align: right;"><span>@{{Number(d.end_price).toFixed(4)}}</span></div></div>'}
,{field: 'created_at', title: '下单时间', width: 170, sort: true}
,{field: 'updated_at', title: '更新日期', width: 170, sort: true, hide: true}
,{field: 'handled_at', title: '平仓时间', width: 170, sort: true, hide: true}
,{field: 'complete_at', title: '完成时间', width: 170, sort: true, hide: true}
,{fixed: 'right', title: '操作', width: 100, align: 'center', toolbar: '#barDemo'}
]]
});
//监听工具条
table.on('tool(order_list)', function(obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data;
var layEvent = obj.event;
var tr = obj.tr;
if (layEvent === 'edit') { //编辑
layer_show('编辑交易', '/admin/micro_order_edit?id=' + data.id);
}
});
table.on('checkbox(order_list)', function(obj) {
// 选择事件
console.log(obj)
});
$('#btn-set').click(function () {
var checkStatus = table.checkStatus('order_list');
var pre_profit_result = $('#pre_profit_result').val();
var ids = [];
try {
if (checkStatus.data.length <= 0) {
throw '请先选择交易';
}
if (pre_profit_result <= -2) {
throw '请选择交易的预处理输赢类型';
}
checkStatus.data.forEach(function (item, index, arr) {
ids.push(item.id);
});
$.ajax({
url: '/admin/micro/batch_risk'
,type: 'POST'
,data: {risk: pre_profit_result, ids: ids}
,success: function (res) {
layer.msg(res.message, {
time: 2000,
end: function () {
if (res.type == 'ok') {
data_table.reload();
}
}
});
}
,error: function (res) {
layer.msg('网络错误');
}
})
} catch (error) {
layer.msg(error);
}
});
});
}
</script>
@endsection
@@ -0,0 +1,91 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">秒数</label>
<div class="layui-input-block">
<input type="text" name="seconds" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->seconds}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="checkbox" name="status" value="{{$result->status}}" lay-skin="switch" lay-text="是|否" {{ $result->status == 1 ? 'checked' : '' }}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收益率</label>
<div class="layui-input-block">
<input type="text" name="profit_ratio" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->profit_ratio}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">亏损率</label>
<div class="layui-input-block">
<input type="text" name="loss_ratio" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->loss_ratio}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最高金额</label>
<div class="layui-input-block">
<input type="text" name="max_amount" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->max_amount}}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">最低金额</label>
<div class="layui-input-block">
<input type="text" name="min_amount" lay-verify="required" autocomplete="off" placeholder="" class="layui-input" value="{{$result->min_amount}}">
</div>
</div>
<input type="hidden" name="id" value="{{$result->id}}">
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="demo1">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
@endsection
@section('scripts')
<script>
layui.use(['form','laydate'],function () {
var form = layui.form
,$ = layui.jquery
,laydate = layui.laydate
,index = parent.layer.getFrameIndex(window.name);
//监听提交
form.on('submit(demo1)', function(data){
var data = data.field;
$.ajax({
url:'{{url('admin/micro_seconds_add')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
if (res.type=='error') {
layer.msg(res.message);
} else {
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,98 @@
@extends('admin._layoutNew')
@section('page-head')
@endsection
@section('page-content')
<button class="layui-btn layui-btn-normal layui-btn-radius" id="add_set">添加设置</button>
<table id="demo" lay-filter="test"></table>
<script type="text/html" id="barDemo">
{{--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">调节账户</a>--}}
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>
@endsection
@section('scripts')
<script type="text/html" id="status">
<input type="checkbox" name="status" value="@{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="status" @{{ d.status == 1 ? 'checked' : '' }}>
</script>
<script>
layui.use(['table','form'], function(){
var table = layui.table;
var $ = layui.jquery;
var form = layui.form;
//第一个实例
$('#add_set').click(function(){layer_show('添加管理员', '/admin/micro_seconds_add');});
table.render({
elem: '#demo'
,url: '{{url('admin/micro_seconds_list')}}' //数据接口
,page: true //开启分页
,id:'mobileSearch'
,height: 'full-100'
,cols: [[ //表头
{field: 'id', title: 'ID', minWidth:80, sort: true}
,{field: 'seconds', title: '秒数', minWidth:80}
,{field: 'status', title: '状态', minWidth:80,templet: '#status'}
,{field: 'profit_ratio', title: '收益率', minWidth:80}
,{field: 'loss_ratio', title: '亏损率', minWidth:80}
,{field: 'max_amount', title: '最高金额', minWidth:80}
,{field: 'min_amount', title: '最低金额', minWidth:80}
,{title:'操作',minWidth:100,toolbar: '#barDemo'}
]]
});
//监听是否显示操作
form.on('switch(status)', function(obj){
var id = this.value;
$.ajax({
url:'{{url('admin/micro_seconds_status')}}',
type:'post',
dataType:'json',
data:{id:id},
success:function (res) {
if(res.error != 0){
layer.msg(res.message);
}
}
});
});
table.on('tool(test)', function(obj){
var data = obj.data;
if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'{{url('admin/micro_seconds_del')}}',
type:'post',
dataType:'json',
data:{id:data.id},
success:function (res) {
if(res.type == 'error'){
layer.msg(res.message);
}else{
obj.del();
layer.close(index);
}
}
});
});
} else if(obj.event === 'edit'){
layer_show('编辑商家','{{url('admin/micro_seconds_add')}}?id='+data.id);
}
});
});
</script>
@endsection