388 lines
12 KiB
HTML
388 lines
12 KiB
HTML
{include file="public/head" /}
|
|
<style>
|
|
body.user-page {
|
|
min-height: 100vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
background: #f5f7fb;
|
|
}
|
|
|
|
.user-main {
|
|
flex: 1;
|
|
padding: 32px 0 52px;
|
|
}
|
|
|
|
.account-layout {
|
|
display: grid;
|
|
grid-template-columns: 240px minmax(0, 1fr);
|
|
gap: 18px;
|
|
align-items: start;
|
|
}
|
|
|
|
.account-nav,
|
|
.account-panel {
|
|
background: #fff;
|
|
border: 1px solid rgba(15, 23, 42, .08);
|
|
border-radius: 8px;
|
|
box-shadow: 0 8px 24px rgba(15, 23, 42, .06);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.account-nav__title,
|
|
.account-panel__title {
|
|
background: var(--main-color);
|
|
color: #fff;
|
|
font-size: 17px;
|
|
font-weight: 800;
|
|
line-height: 50px;
|
|
padding: 0 20px;
|
|
}
|
|
|
|
.account-nav__link {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
height: 50px;
|
|
padding: 0 18px;
|
|
color: #263241;
|
|
border-bottom: 1px solid #eef1f5;
|
|
text-decoration: none;
|
|
font-size: 15px;
|
|
}
|
|
|
|
.account-nav__link:hover,
|
|
.account-nav__link.is-active {
|
|
color: var(--main-color);
|
|
background: rgba(21, 56, 84, .06);
|
|
text-decoration: none;
|
|
}
|
|
|
|
.account-panel__body {
|
|
padding: 22px;
|
|
}
|
|
|
|
.invoice-tip {
|
|
margin: 0 0 20px;
|
|
padding: 12px 14px;
|
|
border: 1px solid rgba(149, 30, 20, .16);
|
|
border-radius: 6px;
|
|
color: #951e14;
|
|
background: rgba(149, 30, 20, .05);
|
|
line-height: 1.7;
|
|
text-align: center;
|
|
}
|
|
|
|
.invoice-tip a {
|
|
color: var(--main-color);
|
|
font-weight: 800;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.invoice-row {
|
|
position: relative;
|
|
margin-bottom: 16px;
|
|
padding: 18px;
|
|
border: 1px solid #dfe5ee;
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
}
|
|
|
|
.invoice-row__actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.invoice-action {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
color: var(--main-color);
|
|
cursor: pointer;
|
|
font-weight: 800;
|
|
user-select: none;
|
|
}
|
|
|
|
.invoice-action.is-danger {
|
|
color: #951e14;
|
|
}
|
|
|
|
.invoice-form .layui-form-label {
|
|
display: block;
|
|
float: none;
|
|
width: auto;
|
|
padding: 0 0 7px;
|
|
color: #1f2937;
|
|
text-align: left;
|
|
font-weight: 800;
|
|
}
|
|
|
|
.invoice-form .layui-form-label span {
|
|
color: #e53935;
|
|
margin-left: 3px;
|
|
}
|
|
|
|
.invoice-form .layui-input-block {
|
|
margin-left: 0;
|
|
min-height: auto;
|
|
}
|
|
|
|
.invoice-form .layui-input {
|
|
height: 50px;
|
|
border: 1px solid #d8dee8;
|
|
border-radius: 4px;
|
|
font-size: 15px;
|
|
}
|
|
|
|
.invoice-form .layui-input:focus {
|
|
border-color: var(--main-color) !important;
|
|
box-shadow: 0 0 0 3px rgba(21, 56, 84, .08);
|
|
}
|
|
|
|
.invoice-submit {
|
|
height: 50px;
|
|
line-height: 50px;
|
|
border-radius: 6px;
|
|
background: var(--main-color);
|
|
font-size: 17px;
|
|
font-weight: 800;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.user-main {
|
|
padding: 20px 12px 36px;
|
|
}
|
|
|
|
.account-layout {
|
|
grid-template-columns: 1fr;
|
|
gap: 12px;
|
|
}
|
|
|
|
.account-nav {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
|
|
.account-nav__title {
|
|
display: none;
|
|
}
|
|
|
|
.account-nav__link {
|
|
justify-content: center;
|
|
padding: 0 8px;
|
|
font-size: 14px;
|
|
border-right: 1px solid #eef1f5;
|
|
}
|
|
|
|
.account-panel__body {
|
|
padding: 18px;
|
|
}
|
|
}
|
|
</style>
|
|
<body class="user-page">
|
|
{include file="public/newnav" /}
|
|
|
|
<main class="user-main">
|
|
<div class="layui-container">
|
|
<div class="account-layout">
|
|
<aside class="account-nav">
|
|
<div class="account-nav__title">个人中心</div>
|
|
<a href="{:url('user/index')}" class="account-nav__link">
|
|
<i class="bi bi-receipt"></i><span>我的订单</span>
|
|
</a>
|
|
<a href="{:url('user/invoice')}" class="account-nav__link">
|
|
<i class="bi bi-file-earmark-text"></i><span>自助开票</span>
|
|
</a>
|
|
<a href="{:url('user/multiple')}" class="account-nav__link is-active">
|
|
<i class="bi bi-files"></i><span>合并开票</span>
|
|
</a>
|
|
</aside>
|
|
|
|
<section class="account-panel">
|
|
<div class="account-panel__title">合并开票</div>
|
|
<div class="account-panel__body">
|
|
<p class="invoice-tip">
|
|
适用于多个订单合并开票。单个订单请使用
|
|
<a href="{:url('user/invoice')}">自助开票</a>
|
|
</p>
|
|
|
|
<form class="layui-form invoice-form" id="lookupform" name="form1" autocomplete="off">
|
|
<div id="invoiceRows">
|
|
<div class="invoice-row">
|
|
<div class="layui-row layui-col-space24">
|
|
<div class="layui-col-xs12 layui-col-md6">
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">护照号码<span>*</span></label>
|
|
<div class="layui-input-block">
|
|
<input type="text" name="passport_number" maxlength="9" minlength="9"
|
|
lay-verify="required" placeholder="输入护照号码" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs12 layui-col-md6">
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">订单号<span>*</span></label>
|
|
<div class="layui-input-block">
|
|
<input type="text" name="order_sn" lay-verify="required"
|
|
placeholder="输入订单号" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs12 layui-col-md6">
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">姓氏<span>*</span></label>
|
|
<div class="layui-input-block">
|
|
<input type="text" name="last_name" maxlength="45"
|
|
lay-verify="required|englishName" placeholder="填写姓氏拼音"
|
|
class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-xs12 layui-col-md6">
|
|
<div class="layui-form-item">
|
|
<label class="layui-form-label">名字<span>*</span></label>
|
|
<div class="layui-input-block">
|
|
<input type="text" name="first_name" maxlength="40"
|
|
lay-verify="required|englishName" placeholder="填写名字拼音"
|
|
class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="invoice-row__actions">
|
|
<span class="invoice-action js-add-row"><i class="layui-icon layui-icon-add-circle"></i>添加</span>
|
|
<span class="invoice-action is-danger js-remove-row"><i class="layui-icon layui-icon-reduce-circle"></i>删除</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<button class="layui-btn layui-btn-fluid invoice-submit" lay-submit lay-filter="multipleSubmit">提交</button>
|
|
</form>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
|
|
{include file="public/newfooter" /}
|
|
<script>
|
|
layui.use(function () {
|
|
var $ = layui.$;
|
|
var form = layui.form;
|
|
var layer = layui.layer;
|
|
|
|
form.verify({
|
|
englishName: [/^[A-Za-z]+$/, '请填写英文拼音']
|
|
});
|
|
|
|
function refreshRemoveButtons() {
|
|
var $rows = $('#invoiceRows .invoice-row');
|
|
$rows.find('.js-remove-row').toggle($rows.length > 1);
|
|
}
|
|
|
|
function getRowData($row) {
|
|
return {
|
|
passport_number: $.trim($row.find("input[name='passport_number']").val()),
|
|
order_sn: $.trim($row.find("input[name='order_sn']").val()),
|
|
last_name: $.trim($row.find("input[name='last_name']").val()),
|
|
first_name: $.trim($row.find("input[name='first_name']").val())
|
|
};
|
|
}
|
|
|
|
function validateRow($row) {
|
|
var data = getRowData($row);
|
|
|
|
if (!data.passport_number) {
|
|
layer.msg('请输入护照号');
|
|
return false;
|
|
}
|
|
if (!data.order_sn) {
|
|
layer.msg('请输入订单号');
|
|
return false;
|
|
}
|
|
if (!data.last_name) {
|
|
layer.msg('请输入姓氏');
|
|
return false;
|
|
}
|
|
if (!data.first_name) {
|
|
layer.msg('请输入名字');
|
|
return false;
|
|
}
|
|
if (!/^[A-Za-z]+$/.test(data.last_name) || !/^[A-Za-z]+$/.test(data.first_name)) {
|
|
layer.msg('请填写英文拼音');
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
$(document).on('click', '.js-add-row', function () {
|
|
var $row = $(this).closest('.invoice-row');
|
|
|
|
if (!validateRow($row)) {
|
|
return false;
|
|
}
|
|
|
|
var $newRow = $row.clone(false, false);
|
|
$newRow.find('input').val('');
|
|
$('#invoiceRows').append($newRow);
|
|
refreshRemoveButtons();
|
|
});
|
|
|
|
$(document).on('click', '.js-remove-row', function () {
|
|
$(this).closest('.invoice-row').remove();
|
|
refreshRemoveButtons();
|
|
});
|
|
|
|
form.on('submit(multipleSubmit)', function () {
|
|
var datas = [];
|
|
var isValid = true;
|
|
var index1;
|
|
|
|
$('#invoiceRows .invoice-row').each(function () {
|
|
var $row = $(this);
|
|
|
|
if (!validateRow($row)) {
|
|
isValid = false;
|
|
return false;
|
|
}
|
|
|
|
datas.push(getRowData($row));
|
|
});
|
|
|
|
if (!isValid) {
|
|
return false;
|
|
}
|
|
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: "{:url('user/checkMultiple')}",
|
|
data: {datas: JSON.stringify(datas)},
|
|
beforeSend: function () {
|
|
index1 = layer.load(1, {shade: [0.3, '#fff']});
|
|
},
|
|
success: function (data) {
|
|
layer.close(index1);
|
|
if (data.status == 1) {
|
|
layer.msg('查询成功');
|
|
window.location.href = data.url;
|
|
} else {
|
|
layer.msg(data.msg);
|
|
}
|
|
},
|
|
error: function () {
|
|
layer.close(index1);
|
|
layer.msg('请求失败,请稍后重试');
|
|
}
|
|
});
|
|
|
|
return false;
|
|
});
|
|
|
|
refreshRemoveButtons();
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|