| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- @extends('base.base')
- @section('base')
- <meta name="csrf-token" content="{{ csrf_token() }}">
- <div class="container-fluid">
- <div class="row">
- <div class="col-12">
- <div class="card">
- <div class="card-header d-flex align-items-center justify-content-between">
- <h3 class="card-title mb-0">公用配置管理</h3>
- <small class="text-muted">编辑 6 档参数并一键保存 (索引 0-5)</small>
- </div>
- <div class="card-body">
- <div class="table-responsive">
- <table class="table table-striped table-hover align-middle mb-0" style="min-width: 900px;">
- <thead class="thead-light">
- <tr>
- <th style="width:82px;">档位</th>
- <th style="width:180px;">充值区间下限 (RechargeMin)</th>
- <th style="width:180px;">充值区间上限 (RechargeMax)</th>
- <th style="width:180px;">固定值 (FreeWinMax)</th>
- <th style="width:180px;">充值最大百分比 (RechargeMaxPercent)</th>
- <th style="width:160px;">税收比例 (TaxPercent)</th>
- </tr>
- </thead>
- <tbody class="config-form">
- @foreach([0,1,2,3,4,5] as $index => $level)
- <tr>
- <td>
- <span class="badge badge-primary">等级{{ $level }}</span>
- </td>
- <td>
- <input type="number" class="form-control form-control-sm"
- name="level[{{ $level }}][RechargeMin]"
- value="{{ $config[$level]['RechargeMin'] ?? 0 }}" />
- </td>
- <td>
- <input type="number" class="form-control form-control-sm"
- name="level[{{ $level }}][RechargeMax]"
- value="{{ $config[$level]['RechargeMax'] ?? 0 }}" />
- </td>
- <td>
- <input type="number" class="form-control form-control-sm"
- name="level[{{ $level }}][FreeWinMax]"
- value="{{ $config[$level]['FreeWinMax'] ?? 0 }}" />
- </td>
- <td>
- <div class="input-group input-group-sm">
- <input type="number" class="form-control"
- name="level[{{ $level }}][RechargeMaxPercent]"
- value="{{ $config[$level]['RechargeMaxPercent'] ?? 0 }}" />
- <div class="input-group-append"><span class="input-group-text">%</span></div>
- </div>
- </td>
- <td>
- <div class="input-group input-group-sm">
- <input type="number" class="form-control"
- name="level[{{ $level }}][TaxPercent]"
- value="{{ $config[$level]['TaxPercent'] ?? 0 }}" />
- <div class="input-group-append"><span class="input-group-text">%</span></div>
- </div>
- </td>
- </tr>
- @endforeach
- </tbody>
- </table>
- </div>
- <div class="d-flex align-items-center mt-4">
- <button class="btn btn-gradient-primary btn-sm save-config">
- <i class="mdi mdi-content-save"></i> 保存配置
- </button>
- <span class="save-status ml-3"></span>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- $(function() {
- $('.save-config').click(function(event) {
- const $form = $('.config-form');
- const $btn = $(this);
- const $status = $('.save-status');
- $btn.prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i> 保存中...');
- $status.html('').removeClass('text-success text-danger');
- // 构建索引数组
- let configArray = [];
- for (let i = 0; i <= 5; i++) {
- configArray[i] = {
- "RechargeMin": 0,
- "RechargeMax": 0,
- "FreeWinMax": 0,
- "RechargeMaxPercent": 0,
- "TaxPercent": 0
- };
- }
- $form.find('input').each(function() {
- const name = this.name; // level[0][RechargeMin]
- const val = this.value;
- const m = name.match(/level\[(\d+)\]\[([^\]]+)\]/);
- if (m) {
- const lvl = parseInt(m[1]);
- const key = m[2];
- let num = parseInt(val || 0);
- if (isNaN(num)) num = 0;
- configArray[lvl][key] = num;
- }
- });
- $.post("{{ url('/admin/common-config/update') }}", {
- config: JSON.stringify(configArray),
- _token: "{{ csrf_token() }}"
- }).done(function(res){
- $btn.prop('disabled', false).html('<i class="mdi mdi-content-save"></i> 保存配置');
- if (res.status === 'success') {
- $status.text('更新成功').addClass('text-success');
- } else {
- $status.text(res.message || '更新失败').addClass('text-danger');
- }
- setTimeout(function(){ $status.fadeOut(function(){ $(this).text('').show().removeClass('text-success text-danger'); }); }, 3000);
- }).fail(function(){
- $btn.prop('disabled', false).html('<i class="mdi mdi-content-save"></i> 保存配置');
- $status.text('系统错误').addClass('text-danger');
- });
- });
- });
- </script>
- <style>
- .table thead th { white-space: nowrap; }
- .table tbody td { vertical-align: middle; }
- .input-group-text { min-width: 34px; justify-content: center; }
- .badge { font-size: .85rem; padding: .5em .6em; }
- </style>
- @endsection
|