Files
YwxAppThink/addon/appmall/view/frontend/developer/earnings.html
T

158 lines
7.0 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>开发者控制台 - YwxApp 应用市场</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/assets/layui/css/layui.css" rel="stylesheet">
<style>
body { background: #f2f3f5; color: #333; }
.dev-box { max-width: 720px; margin: 40px auto; background: #fff; padding: 28px 32px; border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,.08); }
.dev-box h2 { margin-bottom: 4px; }
.dev-tip { color: #999; font-size: 13px; margin-bottom: 18px; }
.balance-row { display: flex; gap: 16px; margin: 18px 0; }
.balance-card { flex: 1; background: #f7f9fc; border-radius: 8px; padding: 16px; text-align: center; }
.balance-card .label { color: #888; font-size: 13px; }
.balance-card .val { font-size: 24px; font-weight: 700; margin-top: 6px; }
.balance-card .val.ok { color: #18a058; }
.balance-card .val.free { color: #d48806; }
.rev-table { margin-top: 10px; }
.hidden { display: none; }
</style>
</head>
<body>
<div class="dev-box">
<h2>开发者控制台</h2>
<p class="dev-tip">使用开发者令牌查看收益并发起提现(令牌可在「我的令牌」页查询)</p>
<form class="layui-form" id="authForm">
<div class="layui-form-item">
<label class="layui-form-label">开发者令牌</label>
<div class="layui-input-block">
<input type="text" name="token" id="tokenInput" value="{$token|default=''}" required placeholder="粘贴你的开发者令牌" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit lay-filter="load">加载我的收益</button>
<a href="{:url('index')}" class="layui-btn layui-btn-primary">返回注册</a>
</div>
</div>
</form>
<div id="panel" class="hidden">
<div class="balance-row">
<div class="balance-card">
<div class="label">可提现余额</div>
<div class="val ok" id="balance">¥0.00</div>
</div>
<div class="balance-card">
<div class="label">冻结中(提现待打款)</div>
<div class="val free" id="frozen">¥0.00</div>
</div>
</div>
<fieldset class="layui-elem-field layui-field-title" style="margin-top:18px;"><legend>发起提现</legend></fieldset>
<form class="layui-form" id="withdrawForm">
<input type="hidden" name="token" id="wToken">
<div class="layui-form-item">
<label class="layui-form-label">提现金额</label>
<div class="layui-input-inline">
<input type="number" name="amount" step="0.01" min="0.01" required placeholder="0.00" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">不可超过可提现余额</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">提现渠道</label>
<div class="layui-input-inline">
<select name="channel">
<option value="alipay">支付宝</option>
<option value="wechat">微信</option>
<option value="bank">银行卡</option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收款账号</label>
<div class="layui-input-block">
<input type="text" name="account" required placeholder="支付宝/微信账号或银行卡号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-normal" lay-submit lay-filter="doWithdraw">提交提现申请</button>
</div>
</div>
</form>
<fieldset class="layui-elem-field layui-field-title" style="margin-top:24px;"><legend>近期收益</legend></fieldset>
<table class="layui-table rev-table">
<thead>
<tr><th>订单号</th><th>销售额</th><th>抽成</th><th>应得</th><th>状态</th><th>时间</th></tr>
</thead>
<tbody id="revBody">
<tr><td colspan="6" style="text-align:center;color:#999;">暂无收益记录</td></tr>
</tbody>
</table>
</div>
</div>
<script src="/assets/layui/layui.js"></script>
<script>
layui.use(['form', 'jquery', 'layer', 'http'], function () {
var form = layui.form, $ = layui.jquery, layer = layui.layer, http = layui.http;
form.on('submit(load)', function (data) {
http.post('{:url("/appmall/developer/earnings")}', data.field).then(function (r) {
if (r.code !== 0) { layer.msg(r.message || '加载失败', { icon: 2 }); return; }
var d = r.data || {};
$('#balance').text('¥' + parseFloat(d.balance || 0).toFixed(2));
$('#frozen').text('¥' + parseFloat(d.frozen_balance || 0).toFixed(2));
$('#wToken').val(data.field.token);
renderRevenues(d.revenues || []);
$('#panel').removeClass('hidden');
}).catch(function () { layer.msg('请求失败', { icon: 2 }); });
return false;
});
form.on('submit(doWithdraw)', function (data) {
var amount = parseFloat(data.field.amount);
if (!(amount > 0)) { layer.msg('请输入正确的提现金额', { icon: 2 }); return false; }
var avail = parseFloat($('#balance').text().replace(/[^\d.]/g, '')) || 0;
if (amount > avail) { layer.msg('提现金额超过可提现余额', { icon: 2 }); return false; }
http.post('{:url("/appmall/developer/withdraw")}', data.field).then(function (r) {
layer.msg(r.message || '提交完成', { icon: r.code === 0 ? 1 : 2 });
if (r.code === 0) { $('#withdrawForm')[0].reset(); form.render(); }
}).catch(function () { layer.msg('请求失败', { icon: 2 }); });
return false;
});
function renderRevenues(list) {
var body = $('#revBody');
if (!list.length) {
body.html('<tr><td colspan="6" style="text-align:center;color:#999;">暂无收益记录</td></tr>');
return;
}
var html = '';
list.forEach(function (it) {
var st = it.status == 1 ? '<span style="color:#18a058;">已结算</span>' : '<span style="color:#d48806;">待结算</span>';
html += '<tr>'
+ '<td>' + (it.order_id || '-') + '</td>'
+ '<td>¥' + parseFloat(it.amount || 0).toFixed(2) + '</td>'
+ '<td>¥' + parseFloat(it.commission || 0).toFixed(2) + '</td>'
+ '<td>¥' + parseFloat(it.income || 0).toFixed(2) + '</td>'
+ '<td>' + st + '</td>'
+ '<td>' + (it.create_at ? new Date(it.create_at * 1000).toLocaleString() : '-') + '</td>'
+ '</tr>';
});
body.html(html);
}
// 若 URL 携带 token,自动加载
var tok = $('#tokenInput').val();
if (tok) { $('#authForm').find('button[lay-filter="load"]').click(); }
});
</script>
</body>
</html>