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
+280
View File
@@ -0,0 +1,280 @@
@extends('agent.layadmin')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">开始日期</label>
<div class="layui-input-block">
<input type="text" name="start" id="datestart" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">结束日期</label>
<div class="layui-input-block">
<input type="text" name="end" id="dateend" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">ID</label>
<div class="layui-input-block">
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="account_number" placeholder="请输入" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">币种</label>
<div class="layui-input-block" style="width:130px;">
<select name="currency_id" >
<option value="-1" class="ww">全部</option>
@foreach ($legal_currencies as $currency)
<option value="{{$currency->id}}" class="ww">{{$currency->name}}</option>
@endforeach
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="san-user-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
<!-- <button class="layui-btn layuiadmin-btn-useradmin" onclick="javascript:window.location.href='/order/users_excel'">导出Excel</button> -->
<button class="layui-btn layui-btn-normal dao" lay-event="excel">导出表格</button>
</div>
</div>
</div>
<div class="layui-card-body">
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
<ul class="layui-row layui-col-space10 layui-this">
<li class="layui-col-xs3">
<a href="javascript:;" onclick="layer.tips('总用户数', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
<h3>总用户数:</h3>
<p><cite style="color:#fff" id="_num">0</cite></p>
</a>
</li>
<li class="layui-col-xs3">
<a href="javascript:;" onclick="layer.tips('代理商用户数', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
<h3>代理商用户数</h3>
<p><cite style="color:#fff" id="_daili">0</cite></p>
</a>
</li>
<li class="layui-col-xs3">
<a href="javascript:;" onclick="layer.tips('总入金', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
<h3>总入金</h3>
<p><cite style="color:#fff" id="_ru">0</cite></p>
</a>
</li>
<li class="layui-col-xs3">
<a href="javascript:;" onclick="layer.tips('总出金', this, {tips: 3});" class="layadmin-backlog-body" style="color: #fff;background-color: #01AAED;">
<h3>总出金</h3>
<p><cite style="color:#fff" id="_chu">0</cite></p>
</a>
</li>
</ul>
</div>
</div>
<div class="layui-card-body">
<div class="layui-carousel layadmin-backlog" style="background-color: #fff">
<table id="san-user-manage" lay-filter="san-user-manage"></table>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/html" id="table-useradmin-webuser">
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="wallet_info">查看资金</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="order">查看合约订单</a>
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="micro_risk">期权点控</a>
</script>
<script>
layui.use(['index','laydate','form','table'], function () {
var $ = layui.$
,admin = layui.admin
, table = layui.table
, layer = layui.layer
, laydate = layui.laydate
, form = layui.form;
//日期
laydate.render({
elem: '#datestart'
});
laydate.render({
elem: '#dateend'
});
var parent_id = {{ $parent_id }};
// console.log(parent_id);
admin.req( {
type : "POST",
url : '/agent/get_user_num',
dataType : "json",
data : {all : 1 , parent_id : parent_id},
done : function(result) { //返回数据根据结果进行相应的处理
$("#_num").html(result.data._num);
$("#_daili").html(result.data._daili);
$("#_ru").html(result.data._ru);
$("#_chu").html(result.data._chu);
}
});
load(parent_id);
function load(parent_id) {
parent_id = parent_id || 0;
table.render({
elem: '#san-user-manage'
, url: '/agent/user/lists?parent_id=' + parent_id //模拟接口
, cols: [[
{type: 'checkbox', fixed: 'left'}
, {field: 'id', width: 60, title: 'ID', sort: true}
, {field: 'account_number', title: '用户名', minWidth: 150}
, {field: 'my_agent_level', title: '用户身份' , width : 120}
, {field: 'card_id', title: '身份证号' , width : 180}
, {field: 'parent_name', title: '上级代理商' , width : 120}
, {field: 'phone', title: '手机号', minWidth: 150}
, {field: 'email', title: '邮箱', minWidth: 150}
, {field: 'extension_code', title: '邀请码', minWidth: 150}
, {field: 'create_date', title: '加入时间', sort: true, width: 170}
, {title: '操作', width: 300, align: 'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
]]
, page: true
, limit: 30
, height: 'full-320'
, text: '对不起,加载出现异常!'
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
if (res !== 0) {
if (res.code === 1001) {
//清空本地记录的 token,并跳转到登入页
admin.exit();
}
}
}
});
}
table.on('tool(san-user-manage)', function (obj) {
var event = obj.event;
var data = obj.data;
if (event == 'order') {
//查看订单
layer.open({
title: '查看合约订单'
, type: 2
, content: '{{url('/agent/user/lever_order')}}?id=' + data.id
// , maxmin: true
,area: ['1000px', '600px']
});
}
if (event == 'wallet_info') {
//查看资金
layer.open({
title: '查看资金'
, type: 2
, content: '{{url('/agent/user/users_wallet')}}?id=' + data.id
// , maxmin: true
,area: ['800px', '600px']
});
}else if(event == 'micro_risk'){
layer.open({
title: '用户点控'
, type: 2
, content: '{{url('/agent/user/risk')}}?id=' + data.id
// , maxmin: true
,area: ['400px', '300px']
});
}
if (event == 'son') {
load(data.id);
}
});
form.render(null, 'layadmin-userfront-formlist');
//监听搜索
form.on('submit(san-user-search)', function (data) {
var field = data.field;
admin.req( {
type : "POST",
url : '/agent/get_user_num',
dataType : "json",
data : field,
done : function(result) { //返回数据根据结果进行相应的处理
$("#_num").html(result.data._num);
$("#_daili").html(result.data._daili);
$("#_ru").html(result.data._ru);
$("#_chu").html(result.data._chu);
}
});
//执行重载
table.reload('san-user-manage', {
where: field
, page: {
curr: 1 //重新从第 1 页开始
}
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
if (res.code === 1001) {
//清空本地记录的 token,并跳转到登入页
admin.exit();
}
if (res.code === 1) {
layer.msg(res.msg, {icon: 5});
}
}
});
});
//导出表格
$('.dao').click(function () {
var id = $('input[name="id"]').val();
var account_number = $('input[name="account_number"]').val();
var start = $('input[name="start"]').val();
var end = $('input[name="end"]').val();
var url='/agent/users_excel?id='+id+'&account_number='+account_number+'&start='+start+'&end='+end;
window.open(url);
})
});
</script>
@endsection
@@ -0,0 +1,195 @@
@extends('agent.layadmin')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">开始日期</label>
<div class="layui-input-block">
<input type="text" name="start" id="datestart" placeholder="yyyy-MM-dd" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">结束日期</label>
<div class="layui-input-block">
<input type="text" name="end" id="dateend" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">订单状态</label>
<div class="layui-input-block">
<select name="status">
<option value="10">不限</option>
<option value="0">挂单中</option>
<option value="1">交易中</option>
<option value="2">平仓中</option>
<option value="3">已平仓</option>
<option value="4">已撤单</option>
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">交易类型</label>
<div class="layui-input-block">
<select name="type">
<option value="0">不限</option>
<option value="1">买入</option>
<option value="2">卖出</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="LAY-user-front-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
</div>
</div>
</div>
<div class="layui-card-body">
<table id="LAY-user-manage" lay-filter="LAY-user-manage"></table>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/html" id="lockTpl">
@{{# if(d.type == 1){ }}
<span class="layui-badge layui-bg-red">买入</span>
@{{# } else { }}
<span class="layui-badge layui-bg-blue">卖出</span>
@{{# } }}
</script>
<script type="text/html" id="addsonTpl">
@{{# if(d.status == 0){ }}
<i class="layui-icon layui-icon-rate"style="font-size: 16px; color: #1E9FFF;">挂单中</i>
@{{# } else if(d.status == 1) { }}
<i class="layui-icon layui-icon-rate-half"style="font-size: 16px; color: #FFB800;">交易中</i>
@{{# } else if(d.status == 2) { }}
<i class="layui-icon layui-icon-refresh-3"style="font-size: 16px; color: red;">平仓中</i>
@{{# } else if(d.status == 3) { }}
<i class="layui-icon layui-icon-rate-solid"style="font-size: 16px; color: #009688;">已平仓</i>
@{{# } else if(d.status == 4) { }}
<i class="layui-icon layui-icon-close-fill"style="font-size: 16px; color: #FF5722;">已撤单</i>
@{{# } }}
</script>
<script>
layui.use(['index','element', 'form','table', 'layer', 'laydate'], function () {
var $ = layui.$
,element = layui.element
,layer = layui.layer
, table = layui.table
, laydate = layui.laydate
, form = layui.form
, admin = layui.admin
//日期
laydate.render({
elem: '#datestart'
});
laydate.render({
elem: '#dateend'
});
var user_id={{$user_id}};
// console.log(user_id);
//订单管理
table.render({
elem: '#LAY-user-manage'
, method: 'get'
, url: '/agent/user/lever_order_list?user_id='+user_id
, cols: [[
{ type: 'checkbox', fixed: 'left' }
, { field: 'id', width: 60, title: 'ID', sort: true }
, { field: 'user_name', title: '用户名', minWidth: 150, style: "color: #fff;background-color: #5FB878;" }
, { field: 'parent_agent_name', title: '上级代理商', width: 120 }
, { field: 'agent_level', title: '用户等级', width: 100 }
, { field: 'type', title: '交易类型', width: 90, templet: '#lockTpl' }
,{field: 'symbol', title: '交易对', width: 100}
, { field: 'status', title: '当前状态', sort: true, width: 170, templet: '#addsonTpl' }
, { field: 'origin_price', title: '原始价格', width: 120 }
, { field: 'price', title: '开仓价格', width: 120 }
, { field: 'update_price', title: '当前价格', width: 120 }
, { field: 'fact_profits', title: '最终盈亏', width: 120 }
, { field: 'share', title: '手数', sort: true, width: 90 }
, { field: 'multiple', title: '倍数', sort: true, width: 90 }
, { field: 'origin_caution_money', title: '初始保证金', width: 120 }
, { field: 'caution_money', title: '当前可用保证金', sort: true, width: 170 }
, { field: 'create_time', title: '创建时间', width: 170 }
, { field: 'update_time', title: '价格刷新时间', sort: true, width: 170 }
, { field: 'handle_time', title: '平仓时间', sort: true, width: 170 }
, { field: 'complete_time', title: '完成时间', width: 170 }
]]
, page: true
, limit: 30
, height: 'full-320'
,toolbar:true
, text: '对不起,加载出现异常!'
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
if (res !== 0) {
if (res.code === 1001) {
//清空本地记录的 token,并跳转到登入页
admin.exit();
}
}
}
});
//监听搜索
form.on('submit(LAY-user-front-search)', function (data) {
var field = data.field;
//执行重载
table.reload('LAY-user-manage', {
where: field
, page: {
curr: 1 //重新从第 1 页开始
}
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
if (res.code === 1001) {
//清空本地记录的 token,并跳转到登入页
admin.exit();
}
if (res.code === 1) {
layer.msg(res.msg, { icon: 5 });
}
}
});
});
form.render(null, 'layadmin-userfront-formlist');
});
</script>
@endsection
+73
View File
@@ -0,0 +1,73 @@
@extends('agent.layadmin')
@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="account_number" autocomplete="off" placeholder="" class="layui-input" value="{{$result->account_number}}" disabled>
</div>
</div>
<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->risk ?? 0) == 0 ? 'selected' : '' }} ></option>
<option value="1" {{ ($result->risk ?? 1) == 1 ? 'selected' : '' }} >盈利</option>
<option value="-1" {{ ($result->risk ?? 2) == -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(['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('/agent/user/risk')}}'
,type:'post'
,dataType:'json'
,data : data
,success:function(res){
console.log(res);
if(res.code==1){
layer.msg(res.msg);
}else{
layer.msg(res.msg);
parent.layer.close(index);
parent.window.location.reload();
}
}
});
return false;
});
});
</script>
@endsection
@@ -0,0 +1,168 @@
@extends('agent.layadmin')
@section('page-head')
@endsection
@section('page-content')
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" lay-filter="layadmin-userfront-formlist">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">开始日期</label>
<div class="layui-input-block">
<input type="text" name="start" id="datestart" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">结束日期</label>
<div class="layui-input-block">
<input type="text" name="end" id="dateend" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">ID</label>
<div class="layui-input-block">
<input type="text" name="id" placeholder="请输入" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="account_number" placeholder="请输入" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" lay-submit lay-filter="san-user-search">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
<!--<button class="layui-btn layuiadmin-btn-useradmin" onclick="javascript:window.location.href='order/users_excel'">导出Excel</button>-->
</div>
</div>
</div>
<div class="layui-card-body">
<div style="padding-bottom: 10px;">
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="batchdel">删除</button>-->
<!--<button class="layui-btn layuiadmin-btn-useradmin" data-type="add">用户</button>-->
</div>
<table id="san-user-manage" lay-filter="san-user-manage"></table>
</div>
</div>
</div>
@endsection
@section('scripts')
<script type="text/html" id="lockTpl">
@{{# if(d.type == 1){ }}
<span class="layui-badge layui-bg-red">入金</span>
@{{# } else { }}
<span class="layui-badge layui-bg-blue">出金</span>
@{{# } }}
</script>
<script>
layui.use(['index','table', 'layer' , 'laydate','form'], function () {
var $ = layui.$
, admin = layui.admin
, view = layui.view
, table = layui.table
, layer = layui.layer
, laydate = layui.laydate
, form = layui.form;
//日期
laydate.render({
elem: '#datestart'
});
laydate.render({
elem: '#dateend'
});
var router = layui.router();
parent_id = router.search.parent_id || 0;
//console.log(parent_id);
load(parent_id);
function load(parent_id) {
parent_id = parent_id || 0;
table.render({
elem: '#san-user-manage'
, url: '/agent/user/huazhuan_lists?parent_id=' + parent_id //模拟接口
, cols: [[
{type: 'checkbox', fixed: 'left'}
, {field: 'id', width: 60, title: 'ID', sort: true}
, {field: 'account_number', title: '用户名', minWidth: 150}
, {field: 'number', title: '划转数量', minWidth: 150}
, {field: 'type', title: '划转类型', minWidth: 150, templet: '#lockTpl'}
, {field: 'add_time', title: '划转时间', sort: true, width: 170}
// , {title: '操作', width: 100, align: 'center', fixed: 'right', toolbar: '#table-useradmin-webuser'}
]]
, page: true
, limit: 30
, height: 'full-320'
, text: '对不起,加载出现异常!'
, headers: { //通过 request 头传递
access_token: layui.data('layuiAdmin').access_token
}
, where: { //通过参数传递
access_token: layui.data('layuiAdmin').access_token
// ,parent_id : parent_id
}
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
if (res !== 0) {
if (res.code === 1001) {
//清空本地记录的 token,并跳转到登入页
admin.exit();
}
}
}
});
}
form.render(null, 'layadmin-userfront-formlist');
//监听搜索
form.on('submit(san-user-search)', function (data) {
var field = data.field;
//console.log(field);
//执行重载
table.reload('san-user-manage', {
where: field
, page: {
curr: 1 //重新从第 1 页开始
}
, done: function (res) { //这里要说明一下:done 是只有 response 的 code 正常才会执行。而 succese 则是只要 http 为 200 就会执行
if (res.code === 1001) {
//清空本地记录的 token,并跳转到登入页
admin.exit();
}
if (res.code === 1) {
layer.msg(res.msg, {icon: 5});
}
}
});
});
});
</script>
@endsection