文件
MiAn fafddceaf2 feat: 新增发票抬头、晒单、钱包日志等模型及后台管理功能
- 新增 invoice_title、showcase、wallet_log 模型及对应语言包
- 新增后台控制器、视图及搜索字段配置
- 修复服务类目删除保护逻辑
- 优化后台登录页面文案及样式
- 新增前端角色切换逻辑及页面拦截
- 新增 SVG 图标及样式变量
- 修复接口权限及下拉框默认值问题
2026-11-11 17:02:35 +08:00

293 行
15 KiB
HTML

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<!-- 1. 开票申请信息(只读) -->
<div class="panel panel-default panel-form-section">
<div class="panel-heading">
<h4 class="panel-title">
<i class="fa fa-info-circle"></i> 开票申请信息(只读)
{if $row.invoice_sn}<small class="text-muted" style="margin-left:10px">单号:{$row.invoice_sn|htmlentities}</small>{/if}
</h4>
</div>
<div class="panel-body">
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">申请人:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">
{$row.user.nickname|default=$row.user_id|htmlentities}
{if $row.merchant_id} · 商户「{$row.merchant.name|default=''|htmlentities}」{/if}
</p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">开票金额:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">
<strong class="text-danger" style="font-size:15px">¥{$row.amount|htmlentities}</strong>
<span class="label {if $row.type == 'special'}label-warning{else/}label-info{/if}" style="margin-left:6px">
{$typeList[$row.type]|default=$row.type}
</span>
<span class="label label-default" style="margin-left:4px">
{$titleTypeList[$row.title_type]|default='个人/非企业'}
</span>
</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">发票抬头:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static"><strong>{$row.title|htmlentities}</strong></p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">纳税人识别号:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">
{if $row.tax_no}<code>{$row.tax_no|htmlentities}</code>{else/}<span class="text-muted">-(个人抬头免税号)</span>{/if}
</p>
</div>
</div>
</div>
</div>
{if $row.bank_name || $row.bank_account || $row.reg_address || $row.reg_mobile}
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">开户银行及账号:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">
{$row.bank_name|default='-'|htmlentities}
{if $row.bank_account}<br><code>{$row.bank_account|htmlentities}</code>{/if}
</p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">企业地址及电话:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">
{$row.reg_address|default='-'|htmlentities}
{if $row.reg_mobile}<br>电话:{$row.reg_mobile|htmlentities}{/if}
</p>
</div>
</div>
</div>
</div>
{/if}
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">接收邮箱:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">{$row.email|default='-'|htmlentities}</p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">通知手机:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">{$row.receive_mobile|default='-'|htmlentities}</p>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">申请提交时间:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">{:date('Y-m-d H:i:s', $row.createtime)}</p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">开票完成时间:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">{if !empty($row.issue_time)}{:date('Y-m-d H:i:s', $row.issue_time)}{else/}<span class="text-muted">-</span>{/if}</p>
</div>
</div>
</div>
</div>
{if $row.remark}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">申请备注:</label>
<div class="col-xs-12 col-sm-10">
<p class="form-control-static">{$row.remark|htmlentities}</p>
</div>
</div>
{/if}
</div>
</div>
<!-- 2. 关联订单明细(如有按单勾选开票) -->
{if !empty($linkedOrders)}
<div class="panel panel-default panel-form-section">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-list-ul"></i> 关联业务订单(共 {:count($linkedOrders)} 笔)</h4>
</div>
<div class="panel-body" style="padding:10px 15px;">
<div class="table-responsive">
<table class="table table-bordered table-condensed" style="margin-bottom:0;font-size:12px;">
<thead>
<tr class="active">
<th>订单号</th>
<th>服务项目</th>
<th>订单状态</th>
<th>实付可开票净额</th>
<th>下单时间</th>
</tr>
</thead>
<tbody>
{volist name="linkedOrders" id="ord"}
<tr>
<td><code>{$ord.order_no|htmlentities}</code></td>
<td>{$ord.service_name|htmlentities}{if $ord.goods_model}({$ord.goods_model|htmlentities}){/if} x{$ord.goods_num}</td>
<td>{$ord.status_text|htmlentities}</td>
<td class="text-danger">¥{$ord.amount|htmlentities}</td>
<td>{$ord.time_text|htmlentities}</td>
</tr>
{/volist}
</tbody>
</table>
</div>
</div>
</div>
{/if}
<!-- 3. 财务开票处理 / 已处理回执 -->
{if condition="!empty($flowOptions)"}
<div class="panel panel-default panel-form-section">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-file-text-o"></i> 财务开票处理</h4>
</div>
<div class="panel-body">
<p class="text-muted" style="margin-top:0">线上开具数电发票后标记「开票完成」,填写发票号码并可上传电子发票原件(PDF/图片),申请人即可在小程序直接预览下载;无法开票时请驳回并说明原因,额度及关联订单将自动释放。</p>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">处理结果:</label>
<div class="col-xs-12 col-sm-10">
<div class="radio" style="margin-top:5px">
{foreach name="flowOptions" item="op"}
{if $op == 'issued'}
<label style="margin-right:18px"><input name="row[status]" type="radio" value="issued" checked /> 开票完成</label>
{elseif $op == 'reject' /}
<label><input name="row[status]" type="radio" value="reject" /> 驳回(释放额度与订单)</label>
{/if}
{/foreach}
</div>
</div>
</div>
<div id="box-issued-fields">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">发票号码:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-invoice_no" class="form-control" name="row[invoice_no]" type="text" value="{$row.invoice_no|htmlentities}" placeholder="必填:请输入数电发票号码(20位)或传统发票号码">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">发票代码:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-invoice_code" class="form-control" name="row[invoice_code]" type="text" value="{$row.invoice_code|htmlentities}" placeholder="选填:数电票无需填写,纸质/旧版电子票可填发票代码">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">电子发票文件:</label>
<div class="col-xs-12 col-sm-8">
<div class="input-group">
<input id="c-invoice_file" class="form-control" size="50" name="row[invoice_file]" type="text" value="{$row.invoice_file|htmlentities}" placeholder="支持上传 PDF / OFD / PNG / JPG 格式电子发票原件">
<div class="input-group-addon no-border no-padding">
<span><button type="button" id="faupload-invoice_file" class="btn btn-danger faupload" data-category="invoice" data-input-id="c-invoice_file" data-mimetype="pdf,ofd,jpg,jpeg,png,webp" data-multiple="false" data-preview-id="p-invoice_file"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
<span><button type="button" id="fachoose-invoice_file" class="btn btn-primary fachoose" data-input-id="c-invoice_file" data-mimetype="application/pdf,image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
</div>
<span class="msg-box n-right" for="c-invoice_file"></span>
</div>
<ul class="row list-inline faupload-preview" id="p-invoice_file"></ul>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">处理说明:</label>
<div class="col-xs-12 col-sm-8">
<textarea id="c-audit_msg" class="form-control" rows="3" name="row[audit_msg]" placeholder="驳回时必填驳回原因;开票完成时选填备注说明">{$row.audit_msg|htmlentities}</textarea>
</div>
</div>
</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>
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
</div>
</div>
{else /}
<div class="panel panel-default panel-form-section">
<div class="panel-heading">
<h4 class="panel-title"><i class="fa fa-check-square-o"></i> 处理回执记录</h4>
</div>
<div class="panel-body">
<div class="row">
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">当前状态:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static"><strong>{$statusList[$row.status]|default=$row.status}</strong></p>
</div>
</div>
</div>
<div class="col-xs-12 col-sm-6">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-4">发票号码:</label>
<div class="col-xs-12 col-sm-8">
<p class="form-control-static">
{if $row.invoice_no}<code>{$row.invoice_no|htmlentities}</code>{if $row.invoice_code}(代码:{$row.invoice_code|htmlentities}){/if}{else/}-{/if}
</p>
</div>
</div>
</div>
</div>
{if $row.invoice_file}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">电子发票原件:</label>
<div class="col-xs-12 col-sm-10">
<p class="form-control-static">
<a href="{$row.invoice_file|cdnurl|htmlentities}" target="_blank" class="btn btn-xs btn-info"><i class="fa fa-download"></i> 查看/下载电子发票</a>
</p>
</div>
</div>
{/if}
{if $row.audit_msg}
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">处理说明/原因:</label>
<div class="col-xs-12 col-sm-10">
<p class="form-control-static">{$row.audit_msg|htmlentities}</p>
</div>
</div>
{/if}
</div>
</div>
{/if}
</form>