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

320 行
19 KiB
HTML

<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
<!-- 顶部现代 Tab 选项卡 -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#tab-order-basic" aria-controls="tab-order-basic" role="tab" data-toggle="tab"><i class="fa fa-file-text-o"></i> 订单与工项信息</a></li>
<li role="presentation"><a href="#tab-order-address" aria-controls="tab-order-address" role="tab" data-toggle="tab"><i class="fa fa-map-marker"></i> 上门联系与地址</a></li>
<li role="presentation"><a href="#tab-order-finance" aria-controls="tab-order-finance" role="tab" data-toggle="tab"><i class="fa fa-cny"></i> 费用明细与支付</a></li>
<li role="presentation"><a href="#tab-order-fulfill" aria-controls="tab-order-fulfill" role="tab" data-toggle="tab"><i class="fa fa-truck"></i> 师傅指派与履约节点</a></li>
</ul>
<div class="tab-content" style="padding: 15px 0;">
<!-- 1. 订单与工项信息 -->
<div role="tabpanel" class="tab-pane active" id="tab-order-basic">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Order_no')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-order_no" data-rule="required" class="form-control" name="row[order_no]" type="text" value="" placeholder="后台建单自动生成或手动录入">
</div>
</div>
<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="" 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="row">
<div class="col-xs-6">
<input id="c-cat_id" data-rule="required" min="0" data-source="service/cat/index" class="form-control selectpage" name="row[cat_id]" type="text" value="" placeholder="所属服务类目">
</div>
<div class="col-xs-6">
<input id="c-service_id" data-rule="required" min="0" data-source="service/index" class="form-control selectpage" name="row[service_id]" type="text" value="" placeholder="预约服务项目">
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Service_name')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-service_name" data-rule="required" class="form-control" name="row[service_name]" type="text" value="" placeholder="如: 智能门锁安装">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Service_image')}:</label>
<div class="col-xs-12 col-sm-8">
<div class="input-group">
<input id="c-service_image" class="form-control" size="50" name="row[service_image]" type="text" value="" placeholder="服务展示图片">
<div class="input-group-addon no-border no-padding">
<span><button type="button" id="faupload-service_image" class="btn btn-danger faupload" data-category="service" data-input-id="c-service_image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp,image/webp" data-multiple="false" data-preview-id="p-service_image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
<span><button type="button" id="fachoose-service_image" class="btn btn-primary fachoose" data-input-id="c-service_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-service_image"></span>
</div>
<ul class="row list-inline faupload-preview" id="p-service_image"></ul>
</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="row">
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">商品型号</span>
<input id="c-goods_model" class="form-control" name="row[goods_model]" type="text" value="" placeholder="如: 品牌/款式/规格">
</div>
</div>
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">服务数量</span>
<input id="c-goods_num" data-rule="required" class="form-control" name="row[goods_num]" type="number" value="1">
</div>
</div>
</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">
<div class="row">
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon">目标楼层</span>
<input id="c-floor" data-rule="required" class="form-control" name="row[floor]" type="number" value="1">
</div>
</div>
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon">电梯</span>
<select id="c-has_elevator" class="form-control" name="row[has_elevator]">
<option value="1" selected>有电梯</option>
<option value="0">无电梯(步梯)</option>
</select>
</div>
</div>
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon">加急</span>
<select id="c-urgent" class="form-control" name="row[urgent]">
<option value="0" selected>常规施工</option>
<option value="1">加急特快</option>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Remark')}:</label>
<div class="col-xs-12 col-sm-8">
<textarea id="c-remark" class="form-control" rows="2" name="row[remark]" placeholder="请填写客户备注或施工特殊要求"></textarea>
</div>
</div>
</div>
<!-- 2. 上门联系与地址 -->
<div role="tabpanel" class="tab-pane" id="tab-order-address">
<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="row">
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">联系人</span>
<input id="c-contact" data-rule="required" class="form-control" name="row[contact]" type="text" value="" placeholder="客户姓名">
</div>
</div>
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">电话</span>
<input id="c-mobile" data-rule="required;mobile" class="form-control" name="row[mobile]" type="text" value="" placeholder="联系手机号">
</div>
</div>
</div>
</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" class="form-control" data-toggle="city-picker" name="row[city]" type="text" value="" placeholder="请选择服务常驻城市"></div>
</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="" 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="row">
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">经度</span>
<input id="c-lng" class="form-control" name="row[lng]" type="text" value="" placeholder="如: 106.927231">
</div>
</div>
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">纬度</span>
<input id="c-lat" class="form-control" name="row[lat]" type="text" value="" placeholder="如: 27.725654">
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Appoint_time')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-appoint_time" data-rule="required" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[appoint_time]" type="text" value="">
</div>
</div>
</div>
<!-- 3. 费用明细与支付 -->
<div role="tabpanel" class="tab-pane" id="tab-order-finance">
<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="row">
<div class="col-xs-3">
<div class="input-group">
<span class="input-group-addon">基础 ¥</span>
<input id="c-base_amount" data-rule="required" class="form-control" step="0.01" name="row[base_amount]" type="number" value="0.00">
</div>
</div>
<div class="col-xs-3">
<div class="input-group">
<span class="input-group-addon">楼层 ¥</span>
<input id="c-floor_amount" data-rule="required" class="form-control" step="0.01" name="row[floor_amount]" type="number" value="0.00">
</div>
</div>
<div class="col-xs-3">
<div class="input-group">
<span class="input-group-addon">距离 ¥</span>
<input id="c-distance_amount" data-rule="required" class="form-control" step="0.01" name="row[distance_amount]" type="number" value="0.00">
</div>
</div>
<div class="col-xs-3">
<div class="input-group">
<span class="input-group-addon">加急 ¥</span>
<input id="c-urgent_amount" data-rule="required" class="form-control" step="0.01" name="row[urgent_amount]" type="number" value="0.00">
</div>
</div>
</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">
<div class="row">
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon">优惠 ¥</span>
<input id="c-discount_amount" data-rule="required" class="form-control" step="0.01" name="row[discount_amount]" type="number" value="0.00">
</div>
</div>
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon">订单总额 ¥</span>
<input id="c-total_amount" data-rule="required" class="form-control" step="0.01" name="row[total_amount]" type="number" value="0.00">
</div>
</div>
<div class="col-xs-4">
<div class="input-group">
<span class="input-group-addon" style="color: #ff6a00; font-weight: bold;">实付 ¥</span>
<input id="c-pay_amount" data-rule="required" class="form-control" step="0.01" name="row[pay_amount]" type="number" value="0.00" style="color: #ff6a00; font-weight: bold;">
</div>
</div>
</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">
<div class="row">
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">支付状态</span>
<select id="c-pay_status" class="form-control" name="row[pay_status]">
<option value="0" selected>待支付</option>
<option value="1">已支付</option>
<option value="2">已退款</option>
</select>
</div>
</div>
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">支付方式</span>
<input id="c-pay_type" class="form-control" name="row[pay_type]" type="text" value="wechat" placeholder="如: wechat/alipay/balance">
</div>
</div>
</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">
<div class="row">
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">结算状态</span>
<select id="c-settle_status" class="form-control" name="row[settle_status]">
<option value="0" selected>待结算</option>
<option value="1">已结算</option>
<option value="2">冻结异常</option>
</select>
</div>
</div>
<div class="col-xs-6">
<div class="input-group">
<span class="input-group-addon">佣金 ¥</span>
<input id="c-settle_amount" data-rule="required" class="form-control" step="0.01" name="row[settle_amount]" type="number" value="0.00">
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 4. 师傅指派与履约节点 -->
<div role="tabpanel" class="tab-pane" id="tab-order-fulfill">
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Master_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-master_id" min="0" data-source="master/index" data-field="realname" class="form-control selectpage" name="row[master_id]" type="text" value="" placeholder="搜索并指定接单承接师傅(可选)">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
<div class="col-xs-12 col-sm-8">
<select id="c-status" data-rule="required" class="form-control selectpicker" name="row[status]">
{foreach name="statusList" item="vo"}
<option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option>
{/foreach}
</select>
</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-verify_code" class="form-control" name="row[verify_code]" type="text" value="" placeholder="4位或6位核销码">
</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>
</form>