文件
yjyf/server/application/admin/view/merchant/edit.html
linda 4e0c86ca06 feat(sync): 后端功能模块与前端模块数据同源 + 后台13个业务模块可管
前端不再写死运营数据:
- 首页 Banner/保障条/教程卡 改由 /api/home/index 下发(fa_banner + fa_config),
  数据缺失或停用自动回落内置兜底文案
- 订单状态提示改由后端 OrderStatus::tip() 下发 status_tip,前后端一套口径

后台可管(FastAdmin 生成器):
- 新增 13 个业务后台模块:运营位/订单/师傅/商家/优惠券/评价/消息/服务/服务类目/申诉/开票/提现/结算单
  (controller + model + view + fa_auth_rule 菜单 78 条)

修复:
- nginx /admin/* 改为 301 到 /admin.php/*,否则后台菜单点开全部 404

验证:tests/phase5_data_sync.js 新增 16 项联动断言;全量回归 202 项断言 0 失败
2026-10-28 17:06:55 +08:00

150 行
8.3 KiB
HTML

<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('User_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-user_id" data-rule="required" min="0" data-source="user/user/index" data-field="nickname" class="form-control selectpage" name="row[user_id]" type="text" value="{$row.user_id|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-name" data-rule="required" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('License_no')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-license_no" data-rule="required" class="form-control" name="row[license_no]" type="text" value="{$row.license_no|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('License_image')}:</label>
<div class="col-xs-12 col-sm-8">
<div class="input-group">
<input id="c-license_image" data-rule="required" class="form-control" size="50" name="row[license_image]" type="text" value="{$row.license_image|htmlentities}">
<div class="input-group-addon no-border no-padding">
<span><button type="button" id="faupload-license_image" class="btn btn-danger faupload" data-input-id="c-license_image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-license_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
<span><button type="button" id="fachoose-license_image" class="btn btn-primary fachoose" data-input-id="c-license_image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
</div>
<span class="msg-box n-right" for="c-license_image"></span>
</div>
<ul class="row list-inline faupload-preview" id="p-license_image"></ul>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Legal_person')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-legal_person" data-rule="required" class="form-control" name="row[legal_person]" type="text" value="{$row.legal_person|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Contact')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-contact" data-rule="required" class="form-control" name="row[contact]" type="text" value="{$row.contact|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-mobile" data-rule="required" class="form-control" name="row[mobile]" type="text" value="{$row.mobile|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Province')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-province" data-rule="required" class="form-control" name="row[province]" type="text" value="{$row.province|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('City')}:</label>
<div class="col-xs-12 col-sm-8">
<div class='control-relative'><input id="c-city" data-rule="required" class="form-control" data-toggle="city-picker" name="row[city]" type="text" value="{$row.city|htmlentities}"></div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('District')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-district" data-rule="required" class="form-control" name="row[district]" type="text" value="{$row.district|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Address')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-address" data-rule="required" class="form-control" name="row[address]" type="text" value="{$row.address|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Invoice_title')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-invoice_title" data-rule="required" class="form-control" name="row[invoice_title]" type="text" value="{$row.invoice_title|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Invoice_tax_no')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-invoice_tax_no" data-rule="required" class="form-control" name="row[invoice_tax_no]" type="text" value="{$row.invoice_tax_no|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Invoice_bank')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-invoice_bank" data-rule="required" class="form-control" name="row[invoice_bank]" type="text" value="{$row.invoice_bank|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Invoice_account')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-invoice_account" data-rule="required" class="form-control" name="row[invoice_account]" type="text" value="{$row.invoice_account|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Settle_type')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-settle_type" data-rule="required" class="form-control selectpicker" name="row[settle_type]">
{foreach name="settleTypeList" item="vo"}
<option value="{$key}" {in name="key" value="$row.settle_type"}selected{/in}>{$vo}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Verify_status')}:</label>
<div class="col-xs-12 col-sm-8">
<div class="radio">
{foreach name="verifyStatusList" item="vo"}
<label for="row[verify_status]-{$key}"><input id="row[verify_status]-{$key}" name="row[verify_status]" type="radio" value="{$key}" {in name="key" value="$row.verify_status"}checked{/in} /> {$vo}</label>
{/foreach}
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Audit_msg')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-audit_msg" data-rule="required" class="form-control" name="row[audit_msg]" type="text" value="{$row.audit_msg|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Order_count')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-order_count" data-rule="required" class="form-control" name="row[order_count]" type="number" value="{$row.order_count|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Total_amount')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-total_amount" data-rule="required" class="form-control" step="0.01" name="row[total_amount]" type="number" value="{$row.total_amount|htmlentities}">
</div>
</div>
<div class="form-group layer-footer">
<label class="control-label col-xs-12 col-sm-2"></label>
<div class="col-xs-12 col-sm-8">
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
</div>
</div>
</form>