提交 fa00853a 编写于 作者: L lsh

增加采购单

上级 ca89b43d
<form id="purchaseOrder-add-form" onsubmit="purchaseOrder.submitConfirm();return false;">
#include("_form.html")
<div class="row p-3 text-center" style="margin: 0 0 0 0;">
<div class="col">
<button type="button" class="btn btn-lg btn-outline-secondary fs-6 btn-wlg" onclick="dashboard.linkTab('/inventory/purchase/order/add')">清空</button>
&nbsp;&nbsp;&nbsp;
<button type="button" name="normal_btn" class="btn btn-primary btn-lg fs-6 btn-wlg" onclick="purchaseOrder.normal();">确认保存</button>
&nbsp;&nbsp;&nbsp;
<button type="button" name="draft_btn" class="btn btn-outline-primary btn-lg fs-6 btn-wlg" onclick="purchaseOrder.draft();">暂存草稿</button>
</div>
</div>
</form>
<div id="purchaseOrder-add-confirm" style="display:none;">
<button type="button" name="normal_btn" class="btn btn-primary btn-lg fs-6" onclick="purchaseOrder.normal();">确认保存</button>
&nbsp;&nbsp;&nbsp;
<button type="button" name="draft_btn" class="btn btn-outline-primary btn-lg fs-6" onclick="purchaseOrder.draft();">暂存草稿</button>
&nbsp;&nbsp;&nbsp;
<button type="button" class="btn btn-outline-primary btn-lg fs-6" data-bs-dismiss="modal" aria-label="Close">取消</button>
</div>
<script type="application/javascript">
if(typeof(purchaseOrder) == "undefined") {
purchaseOrder = {};
}
$(function() {
var formId = "#purchaseOrder-add-form";
// 初始化bootstrap相关组件
common.initBootstrap();
// 绑定tablink
dashboard.bindTablink();
setTimeout(function() {
purchaseOrder.handlerList(formId);
purchaseOrder.supplierList(formId);
purchaseOrder.bindGoodsSelector(formId);
purchaseOrder.balanceAccountList(formId);
formInput.listenkeyUp(formId);
}, 500);
#if(purchaseOrder)
setTimeout(function() {
$(formId).find("input[name=remark]").first().focus();
}, 500);
#end
purchaseOrder.uploadFileListener(formId)
});
purchaseOrder.submitConfirm = function() {
var formId = "#purchaseOrder-add-form";
var result = purchaseOrder.formChecking(formId);
if(!result) {
return;
}
beekit.modalConfirm("确定要保存进货单吗?", $("#purchaseOrder-add-confirm").html());
};
purchaseOrder.normal = function() {
var formId = "#purchaseOrder-add-form";
$(formId).find("input[name=order_status]").first().val(#(OrderStatusEnum.normal.value));
purchaseOrder.create();
};
purchaseOrder.draft = function() {
var formId = "#purchaseOrder-add-form";
$(formId).find("input[name=order_status]").first().val(#(OrderStatusEnum.draft.value));
purchaseOrder.create();
};
purchaseOrder.create = function(msg) {
var formId = "#purchaseOrder-add-form";
var result = purchaseOrder.formChecking(formId);
if(!result) {
return;
}
#if(purchaseOrder && purchaseOrder.id && purchaseOrder.id > 0)
var url = "/inventory/purchase/order/update";
#else
var url = "/inventory/purchase/order/create";
#end
beekit.ajaxPost(url, $(formId).serialize(), function(ret) {
common.processRequestResult(ret, function(ret) {
beekit.modalConfirmClose();
beekit.msg(ret);
if (ret.state == "ok") {
var orderStatusVal = $(formId).find("input[name=order_status]").first().val();
if(orderStatusVal == #(OrderStatusEnum.draft.value)) {
beekit.flyer($(formId).find("button[name=draft_btn]").first(), $(formId).find("span[name=draft_count]").first(), "#purchaseOrder-add-form button[name=draft_count_btn]");
} else {
beekit.flyer($(formId).find("button[name=normal_btn]").first(), "#inventory_purchase_order");
#if(orderPrintConfig.purchase_order_flag)
#if(orderPrintConfig.purchase_order_confirm)
setTimeout(function() {
beekit.confirm('是否打印单据?', function() {
lodopPrinter.purchaseOrderPrint(0, ret.targetId, false);
});
}, 1500);
#else
lodopPrinter.purchaseOrderPrint(0, ret.targetId, false);
#end
#end
}
dashboard.linkTab("/inventory/purchase/order/add");
}
});
});
};
purchaseOrder.draftIndex = function() {
beekit.offcanvasMiddle("/inventory/purchase/order/draftIndex");
};
</script>
<div class="modal-dialog modal-dialog-scrollable modal-dialog-centered">
<div class="modal-content">
<form id="purchaseOrder-audit-form" onsubmit="purchaseOrder.auditCreate();return false;">
<div class="modal-header">
<h6 class="modal-title">进货单审核</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<input type="hidden" name="id" value="#(id)">
<div class="row">
<div class="col">
<div class="input-group mb-3">
<span class="input-group-text">审核说明</span>
<textarea class="form-control" name="audit_desc"></textarea>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" onclick="purchaseOrder.auditCreate(#(AuditStatusEnum.reject.value));">审核拒绝</button>
<button type="button" class="btn btn-primary" onclick="purchaseOrder.auditCreate(#(AuditStatusEnum.pass.value));">审核通过</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" aria-label="Close">关闭</button>
</div>
</form>
</div>
</div>
<script type="application/javascript">
purchaseOrder.auditCreate = function(auditStatus) {
beekit.ajaxPost("/inventory/purchase/order/auditCreate?audit_status="+auditStatus, $("#purchaseOrder-audit-form").serialize(), function(ret) {
beekit.msg(ret);
if (ret.state == "ok") {
beekit.modalClose();
purchaseOrder.list(#(id));
}
});
};
</script>
<div class="card mb-2">
<div class="card-body search-form">
<form id="purchaseOrder-search-form">
<input type="hidden" id="purchaseOrder_pageNumber" name="pageNumber">
<div class="row align-items-center">
<div class="col">
<div class="row align-items-center">
<div class="col-3">
<div class="btn-group" role="group">
<input type="radio" class="btn-check" name="order_time_btn" id="purchaseOrder_order_time_preday" value="1" autocomplete="off">
<label class="btn btn-outline-primary" for="purchaseOrder_order_time_preday">昨日</label>
<input type="radio" class="btn-check" name="order_time_btn" id="purchaseOrder_order_time_today" value="2" autocomplete="off">
<label class="btn btn-outline-primary" for="purchaseOrder_order_time_today">今日</label>
<input type="radio" class="btn-check" name="order_time_btn" id="purchaseOrder_order_time_month" value="3" autocomplete="off">
<label class="btn btn-outline-primary" for="purchaseOrder_order_time_month">本月</label>
<input type="radio" class="btn-check" name="order_time_btn" id="purchaseOrder_order_time_premonth" value="4" autocomplete="off">
<label class="btn btn-outline-primary" for="purchaseOrder_order_time_premonth">上月</label>
<input type="radio" class="btn-check" name="order_time_btn" id="purchaseOrder_order_time_year" value="5" autocomplete="off">
<label class="btn btn-outline-primary" for="purchaseOrder_order_time_year">本年</label>
</div>
</div>
<div class="col-2">
<input type="hidden" name="supplier_info_id" id="purchaseOrder_search_supplier_info_id">
<input type="text" class="form-control" placeholder="请输入供应商名称或简码" id="purchaseOrder_search_supplier_info_keyword" autocomplete="off">
</div>
<div class="col-2">
<input type="hidden" name="handler_id" id="purchaseOrder_search_handler_id">
<input type="text" class="form-control" placeholder="请输入进货员姓名或简码" id="purchaseOrder_search_handler_keyword" autocomplete="off">
</div>
<div class="col-3">
<input type="text" class="form-control" placeholder="单据编号/备注" name="keyword" onclick="$(this).select();">
</div>
<div class="col align-self-center">
<button type="submit" class="btn btn-sm btn-primary" onclick="purchaseOrder.search(this);">
<i class="bi bi-search"></i>搜索
</button>
<span style="margin-left: 15px;"><a href="javascript:void(0);" onclick="common.expandFilter(this, 'purchaseOrder_expand_filter')">展开<i class="bi bi-chevron-double-down"></i></a></span>
</div>
</div>
<div id="purchaseOrder_expand_filter" style="display: none;">
<div class="row align-items-center mt-3">
<div class="col-2">
<input type="text" class="form-control" id="purchaseOrder_search_start_time" name="start_time" placeholder="开始时间" onClick="WdatePicker({el:this, startDate:'%y-%M-%d 00:00:00', dateFmt:'yyyy-MM-dd HH:mm:ss'})" readonly>
</div>
<div class="col-2">
<input type="text" class="form-control" id="purchaseOrder_search_end_time" name="end_time" placeholder=" 结束时间" onClick="WdatePicker({el:this, startDate:'%y-%M-%d 00:00:00', dateFmt:'yyyy-MM-dd HH:mm:ss'})" readonly>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
<div id="data-list-purchaseOrder"></div>
<script type="application/javascript">
if(typeof(purchaseOrder) == "undefined") {
purchaseOrder = {};
}
$(function() {
// 初始化bootstrap相关组件
common.initBootstrap();
// 加载列表
purchaseOrder.list();
$('#purchaseOrder-search-form input[name=order_time_btn]').on('click', function() {
var timeType = $(this).val();
var times = datetime.getFormatTime(timeType);
$("#purchaseOrder_search_start_time").val(times.startTime);
$("#purchaseOrder_search_end_time").val(times.endTime);
purchaseOrder.list();
});
purchaseOrder.loadingHandlerList();
purchaseOrder.loadSupplierList();
});
purchaseOrder.list = function(targetId, callback) {
var showAuditFlag = $("#purchaseOrder_show_audit_flag").prop("checked");
if(typeof(showAuditFlag) == 'undefined') {
showAuditFlag = false;
}
var hideDisableFlag = $("#purchaseOrder_hide_disable_flag").prop("checked");
if(typeof(hideDisableFlag) == 'undefined') {
hideDisableFlag = true;
}
var hidePayFlag = $("#purchaseOrder_hide_pay_flag").prop("checked");
if(typeof(hidePayFlag) == 'undefined') {
hidePayFlag = false;
}
$("#purchaseOrder_pageNumber").val(1);
beekit.ajaxFillPage("/inventory/purchase/order/list?hide_disable_flag="+hideDisableFlag+"&show_audit_flag="+showAuditFlag+"&hide_pay_flag="+hidePayFlag, "#purchaseOrder-search-form", "#data-list-purchaseOrder" ,"purchaseOrder-data-"+targetId, callback);
};
purchaseOrder.add = function() {
beekit.modal("/inventory/purchase/order/add");
};
purchaseOrder.search = function(othis) {
common.loadingSearch(othis);
purchaseOrder.list("", function(ret) {
common.restoreSearch(othis);
});
};
purchaseOrder.loadingHandlerList = function() {
beekit.autocomplete("#purchaseOrder_search_handler_keyword", "/setting/tenant/admin/listByJson", "#purchaseOrder_search_handler_id", function() {
purchaseOrder.list();
});
}
purchaseOrder.loadSupplierList = function() {
beekit.autocomplete("#purchaseOrder_search_supplier_info_keyword", "/inventory/supplier/info/listByJson", "#purchaseOrder_search_supplier_info_id", function() {
purchaseOrder.list();
});
}
</script>
<div class="card card-table mb-1">
<div class="card-body page-body">
<div class="row align-items-center oper-list">
<div class="col-3">
#if(session.hasOper(Permissions.inventory_purchase_order_export))
<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="purchaseOrder.export();">导出</button>
<div class="btn-group" role="group">
<button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false"></button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="javascript:void(0);" onclick="purchaseOrder.exportLog();">导出记录</a></li>
</ul>
</div>
</div>
#end
</div>
<div class="col">
#if(page.totalPage > 1)
<div class="float-end">#@paginate(page.pageNumber, page.totalPage, "")</div>
#end
<div class="float-end me-3 mt-1">
#if(orderAuditFlag)
#if(session.hasOper(Permissions.inventory_purchase_order_audit))
<input class="form-check-input" type="checkbox" name="show_audit_flag" id="purchaseOrder_show_audit_flag" #if(showAuditFlag) checked #end onclick="purchaseOrder.list();">
<label class="form-check-label" for="purchaseOrder_show_audit_flag"> 待审核单据</label>
&nbsp;&nbsp;&nbsp;
#end
#end
<input class="form-check-input" type="checkbox" name="hide_disable_flag" id="purchaseOrder_hide_disable_flag" #if(hideDisableFlag) checked #end onclick="purchaseOrder.list();">
<label class="form-check-label" for="purchaseOrder_hide_disable_flag"> 隐藏作废单据</label>
&nbsp;&nbsp;&nbsp;
<input class="form-check-input" type="checkbox" name="hide_pay_flag" id="purchaseOrder_hide_pay_flag" #if(hidePayFlag) checked #end onclick="purchaseOrder.list();">
<label class="form-check-label" for="purchaseOrder_hide_pay_flag"> 隐藏已付单据</label>
</div>
</div>
</div>
</div>
</div>
<table class="table table-hover table-bordered bg-white">
<thead>
<tr class="table-header">
<th>单据编号</th>
<th>进货日期</th>
<th>供应商</th>
<th>应付金额</th>
<th>已付金额</th>
<th>剩余未付</th>
#if(feeList && feeList.size() > 0)
<th>其他费用<i class="bi bi-question-circle text-secondary" style="font-size:13px" data-bs-toggle="tooltip" data-bs-placement="top" title="除商品金额外,其他需要支付给供应商的费用,比如物流费等"></i></th>
#end
#if(costList && costList.size() > 0)
<th>成本支出<i class="bi bi-question-circle text-secondary" style="font-size:13px" data-bs-toggle="tooltip" data-bs-placement="top" title="本次进货的成本支出,无需支付给供应商,用于内部记账"></i></th>
#end
<th>进货员</th>
<th>单据状态</th>
<th>备注</th>
<th style="width: 10%">操作</th>
</tr>
</thead>
<tbody class="table-row" id="purchaseOrder-list">
#for (x : page.getList())
<tr data-id="#(x.id)" id="purchaseOrder-data-#(x.id)" #if(x.order_status == OrderStatusEnum.disable.value) class="disable-order" #end>
<td>#(x.order_code)</td>
<td>#date(x.order_time, "yyyy-MM-dd")</td>
<td>#(x.supplierInfo.name??)</td>
<td><span class="fw-bold text-secondary">#number(x.amount, "#.##")</span> </td>
<td><span class="fw-bold text-secondary">#number(x.paid_amount, "#.##")</span> </td>
<td><span class=" #if(x.amount > x.paid_amount) fw-bold text-danger #else fw-bold text-secondary #end ">#number(x.amount - x.paid_amount, "#.##") </span></td>
#if(feeList && feeList.size() > 0)
<td><span class="fw-bold text-secondary">#number(x.other_amount, "#.##")</span> </td>
#end
#if(costList && costList.size() > 0)
<td><span class="fw-bold text-secondary">#number(x.other_cost_amount, "#.##")</span> </td>
#end
<td>#(x.handler.real_name??)</td>
<td>
#if(x.order_status == OrderStatusEnum.disable.value)
<span class="text-decoration-line-through">已作废</span>
#elseif(x.reject_type == RejectTypeEnum.part.value)
<span class="badge bg-warning">部分退货</span>
#elseif(x.reject_type == RejectTypeEnum.all.value)
<span class="badge bg-warning">已退货</span>
#elseif(x.audit_status == AuditStatusEnum.waiting.value)
<span class="badge bg-danger">待审核</span>
#elseif(x.audit_status == AuditStatusEnum.reject.value)
<span class="badge bg-warning" data-bs-toggle="tooltip" data-bs-placement="top" title="#(x.audit_desc)">审核拒绝</span>
#else
<span class="badge bg-success">已到货</span>
#end
</td>
<td>#(x.remark)</td>
<td>
#if(x.order_status == OrderStatusEnum.disable.value)
<span class="text-decoration-line-through">已作废</span>
#else
#if(x.audit_status == AuditStatusEnum.waiting.value)
#if(session.hasOper(Permissions.inventory_purchase_order_audit))
<button type="button" class="btn btn-sm sm-more btn-outline-primary" onclick="purchaseOrder.audit(#(x.id));">审核</button>
#end
#end
#if(x.reject_type == RejectTypeEnum.no.value)
#if(!orderAuditFlag || (orderAuditFlag && (x.audit_status != AuditStatusEnum.pass.value || session.hasOper(Permissions.inventory_purchase_order_audit))))
#if(session.hasOper(Permissions.inventory_purchase_order_update))
<button type="button" class="btn btn-sm sm-more btn-outline-primary" onclick="purchaseOrder.edit(#(x.id));">修改</button>
#end
#end
#end
#end
</td>
</tr>
#end
</tbody>
</table>
<script type="application/javascript">
$(function() {
// 初始化bootstrap相关组件
common.initBootstrap();
// 滚动表头处理
common.tableFixedWidth();
common.tableFixed();
$(".main").scroll(function() {
common.tableFixed();
});
$("#purchaseOrder_pageNumber").val(#(page.pageNumber));
$("#purchaseOrder-list tr").on("dblclick", function() {
purchaseOrder.show($(this).attr("data-id"));
});
});
purchaseOrder.show = function(id) {
beekit.offcanvas("/inventory/purchase/order/show?id="+id);
};
purchaseOrder.edit = function(id) {
beekit.offcanvasClose();
beekit.modal("/inventory/purchase/order/edit?id="+id);
};
purchaseOrder.reject = function(id) {
beekit.offcanvasClose();
dashboard.linkTab('/inventory/purchase/rejectOrder/add', {"order_ids": id});
};
purchaseOrder.audit = function(id) {
beekit.offcanvasClose();
beekit.modal("/inventory/purchase/order/audit?id="+id);
};
purchaseOrder.disable = function(id) {
beekit.confirmByUrl("/inventory/purchase/order/disable", {"id":id}, "确认要作废此进货单吗?", function(ret) {
common.processRequestResult(ret, function(ret) {
beekit.msg(ret);
beekit.offcanvasClose();
purchaseOrder.list(id);
});
});
};
purchaseOrder.delete = function(id) {
beekit.focusColor("goodsInfo-data-"+id);
beekit.confirmByUrl("/inventory/purchase/order/delete", {"id":id}, "确认要删除此进货单吗?", function(ret) {
beekit.msg(ret);
beekit.offcanvasClose();
purchaseOrder.list();
});
};
purchaseOrder.export = function() {
var showAuditFlag = $("#purchaseOrder_show_audit_flag").prop("checked");
if(typeof(showAuditFlag) == 'undefined') {
showAuditFlag = false;
}
var hideDisableFlag = $("#purchaseOrder_hide_disable_flag").prop("checked");
if(typeof(hideDisableFlag) == 'undefined') {
hideDisableFlag = true;
}
var hidePayFlag = $("#purchaseOrder_hide_pay_flag").prop("checked");
if(typeof(hidePayFlag) == 'undefined') {
hidePayFlag = false;
}
beekit.confirmByUrl("/inventory/purchase/order/export?hide_disable_flag="+hideDisableFlag+"&show_audit_flag="+showAuditFlag+"&hide_pay_flag="+hidePayFlag, $("#purchaseOrder-search-form").serialize(), "确定要导出单据吗?", function(ret) {
purchaseOrder.exportLog(ret.targetId);
});
}
purchaseOrder.exportLog = function(targetId) {
beekit.modal("/export/log/?targetId="+targetId);
}
</script>
<div class="offcanvas-header">
<h6 class="text-white">
<i class="bi bi-grid"></i>进货单详情
</h6>
<i class="bi bi-x-square-fill" style="font-size: 1.5rem; color: #ffffff; cursor: pointer;" data-bs-dismiss="offcanvas" aria-label="Close"></i>
</div>
<div class="offcanvas-body pt-1">
<div class="card">
<div class="card-body" style="padding: 0.5rem 0.5rem;">
<div class="row align-items-center">
<div class="col">
#if(purchaseOrder.auditConfigFlag)
#if(purchaseOrder.order_status != OrderStatusEnum.disable.value)
#if(purchaseOrder.audit_status == AuditStatusEnum.waiting.value)
#if(session.hasOper(Permissions.inventory_purchase_order_audit))
<button type="button" class="btn btn-sm btn-outline-success" onclick="purchaseOrder.audit(#(purchaseOrder.id));">
<i class="bi bi-hand-index"></i>审核
</button> &nbsp;
#end
#end
#end
#end
#if(purchaseOrder.order_status == OrderStatusEnum.normal.value && purchaseOrder.audit_status == AuditStatusEnum.pass.value)
#if(purchaseOrder.reject_type != RejectTypeEnum.all.value)
#if(session.hasOper(Permissions.inventory_purchase_order_update))
<button type="button" class="btn btn-sm btn-outline-info" onclick="purchaseOrder.reject(#(purchaseOrder.id));">
<i class="bi bi-reply"></i>退货
</button>&nbsp;
#end
#end
#end
#if(purchaseOrder.reject_type == RejectTypeEnum.no.value)
#if(!purchaseOrder.auditConfigFlag || (purchaseOrder.auditConfigFlag && (purchaseOrder.audit_status != AuditStatusEnum.pass.value || session.hasOper(Permissions.inventory_purchase_order_audit))))
#if(session.hasOper(Permissions.inventory_purchase_order_update))
<button type="button" class="btn btn-sm btn-outline-primary" onclick="purchaseOrder.edit(#(purchaseOrder.id));">
<i class="bi bi-pencil-square"></i>修改
</button>&nbsp;
#end
#end
#end
#if(purchaseOrder.reject_type == RejectTypeEnum.no.value)
#if(!purchaseOrder.auditConfigFlag || (purchaseOrder.auditConfigFlag && purchaseOrder.audit_status != AuditStatusEnum.pass.value))
#if(session.hasOper(Permissions.inventory_purchase_order_disable))
<button type="button" class="btn btn-sm btn-outline-danger" onclick="purchaseOrder.disable(#(purchaseOrder.id));">
<i class="bi bi-trash"></i>作废
</button>&nbsp;
#end
#end
#end
#if(purchaseOrder.order_status == OrderStatusEnum.draft.value)
#if(session.hasOper(Permissions.inventory_purchase_order_disable))
<button type="button" class="btn btn-sm btn-outline-danger" onclick="purchaseOrder.delete(#(purchaseOrder.id));">
<i class="bi bi-trash"></i>删除
</button>&nbsp;
#end
#end
</div>
<div class="col text-end">
<button type="button" class="btn btn-sm btn-primary" onclick="purchaseOrder.showPrint(#(purchaseOrder.id));">
<i class="bi bi-printer"></i>打印
</button>
#if(purchaseOrder.print_count > 0)
&nbsp; <span class="btn btn-sm btn-outline-danger sm-more">已打印:#(purchaseOrder.print_count)</span>
#end
</div>
#if(purchaseOrder.order_status == OrderStatusEnum.disable.value)
<img src="#(resourceDomain)/img/disable.png" class="order-status-pic">
#elseif(purchaseOrder.audit_status == AuditStatusEnum.reject.value)
<img src="#(resourceDomain)/img/audit_reject.png" class="order-status-pic">
#elseif(purchaseOrder.reject_type == RejectTypeEnum.part.value)
<img src="#(resourceDomain)/img/reject_part.png" class="order-status-pic">
#elseif(purchaseOrder.reject_type == RejectTypeEnum.all.value)
<img src="#(resourceDomain)/img/reject_all.png" class="order-status-pic">
#else
#if(purchaseOrder.pay_status == OrderPayStatusEnum.finish.value)
<img src="#(resourceDomain)/img/payover.png" class="order-status-pic">
#elseif(purchaseOrder.pay_status == OrderPayStatusEnum.part.value)
<img src="#(resourceDomain)/img/paypart.png" class="order-status-pic">
#end
#end
</div>
</div>
</div>
<ul class="nav nav-tabs mt-2">
<li class="nav-item"><a class="nav-link active fw-bold" aria-current="page" href="javascript:void(0);" _target="showDetail" onclick="purchaseOrder.showInfo(this);">单据详情</a></li>
<li class="nav-item"><a class="nav-link fw-bold" aria-current="page" href="javascript:void(0);" _target="showPayLog" onclick="purchaseOrder.showInfo(this);">付款记录</a></li>
<li class="nav-item"><a class="nav-link fw-bold" aria-current="page" href="javascript:void(0);" _target="showOrderLog" onclick="purchaseOrder.showInfo(this);">单据日志</a></li>
</ul>
<div id="purchaseOrder_showDetail">
<div class="card mt-2">
<div class="card-body" style="padding: 1rem 1rem;">
<div class="row">
<div class="col-3">
<span class="text-secondary">单据编号:</span><span>#(purchaseOrder.order_code)</span>
</div>
<div class="col-3">
<span class="text-secondary">供应商:</span><span class="text-secondary fw-bold">#(purchaseOrder.supplierInfo.name??)</span>
</div>
</div>
<hr class="row-hr" />
<div class="row">
<div class="col-3">
<span class="text-secondary">进货员:</span><span>#(purchaseOrder.handler.real_name??)</span>
</div>
<div class="col-3">
<span class="text-secondary">到货日期:</span><span>#date(purchaseOrder.order_time, "yyyy-MM-dd")</span>
</div>
</div>
<hr class="row-hr" />
<div class="row">
<div class="col-3">
<span class="text-secondary">制单人:</span><span>#(purchaseOrder.makeMan.real_name??)</span>
</div>
<div class="col-3">
<span class="text-secondary">制单时间:</span><span>#date(purchaseOrder.created_at, "yyyy-MM-dd HH:mm:ss")</span>
</div>
<div class="col-3">
<span class="text-secondary">最近修改:</span><span>#date(purchaseOrder.updated_at, "yyyy-MM-dd HH:mm:ss")</span>
</div>
</div>
#if(purchaseOrder.auditConfigFlag)
<hr class="row-hr" />
<div class="row">
<div class="col-3">
<span class="text-secondary">审核状态:</span>
#if(purchaseOrder.audit_status == AuditStatusEnum.waiting.value)
<span class="badge bg-warning">待审核</span>
#elseif(purchaseOrder.audit_status == AuditStatusEnum.pass.value)
<span class="badge bg-success">审核通过</span>
#elseif(purchaseOrder.audit_status == AuditStatusEnum.reject.value)
<span class="badge bg-danger">审核拒绝</span>
#end
</div>
<div class="col-3">
<span class="text-secondary">审核人:</span><span>#(purchaseOrder.auditor.real_name??)</span>
</div>
<div class="col-3">
<span class="text-secondary">审核时间:</span><span>#date(purchaseOrder.audit_time, "yyyy-MM-dd HH:mm:ss")</span>
</div>
<div class="col-3">
<span class="text-secondary">审核反馈:</span><span>#(purchaseOrder.audit_desc)</span>
</div>
</div>
#end
</div>
</div>
<div class="row mt-2">
<div class="col">
<table class="table table-hover table-bordered bg-white">
<thead>
<tr class="table-header">
<th>商品名称</th>
<th>商品条码</th>
<th>规格</th>
<th style="width: 6%;">单位</th>
<th style="width: 6%;">单价</th>
#if(orderGoodsDiscountFlag)
<th style="width: 8%;">折扣(%)</th>
<th style="width: 6%;">折后价</th>
#end
<th style="width: 6%;">数量</th>
<th style="width: 6%;">金额</th>
#if(purchaseOrder.reject_type == RejectTypeEnum.part.value || purchaseOrder.reject_type == RejectTypeEnum.all.value)
<th style="width: 6%;">退货数量</th>
<th style="width: 6%;">退货金额</th>
#end
<th>备注</th>
</tr>
</thead>
<tbody class="table-row">
#for(x : purchaseOrder.orderGoodsList)
#set(goodsInfo = x.goodsInfo)
<tr>
<td>#(goodsInfo.name??)</td>
<td>#(goodsInfo.bar_code??)</td>
<td>#(x.goodsSpecNames??)</td>
<td>#(x.goodsUnit.name??)</td>
<td>#number(x.price, '#.####')</td>
#if(orderGoodsDiscountFlag)
<td>#number(x.discount, '#.####')</td>
<td>#number(x.discount_amount, '#.####')</td>
#end
<td>#number(x.buy_number, '#.####')</td>
<td>#number(x.amount, '#.####')</td>
#if(purchaseOrder.reject_type == RejectTypeEnum.part.value || purchaseOrder.reject_type == RejectTypeEnum.all.value)
<td><span class="fw-bold text-danger">#number(x.reject_number, '#.####')</span></td>
<td><span class="fw-bold text-danger">#number(x.reject_amount, '#.##')</span></td>
#end
<td>#(x.remark)</td>
</tr>
#end
</tbody>
</table>
</div>
</div>
<div class="card">
<div class="card-body" style="padding: 1rem 1rem;">
<div class="row">
<div class="col-3">
<span class="text-secondary">商品合计: </span><span class="fw-bold text-secondary">#(purchaseOrder.goods_amount)</span>
</div>
<div class="col-3">
<span class="text-secondary">折扣: </span><span class="fw-bold text-secondary">#(purchaseOrder.discount)%</span>
</div>
<div class="col-3">
<span class="text-secondary">折后金额:</span><span class="fw-bold text-secondary">#number(purchaseOrder.discount_amount, "#.##")</span>
</div>
<div class="col-3">
<span class="text-secondary">抹零金额: </span><span class="fw-bold text-secondary">#(purchaseOrder.odd_amount)</span>
</div>
</div>
#if(feeList && feeList.size() > 0)
<hr class="row-hr" />
<div class="row">
#for(x : feeList)
<div class="col-3">
<span class="text-secondary">#(x.name??): </span><span class="fw-bold text-secondary me-5">#number(purchaseOrder.getOrderFee(x.id)??, "#.##")</span>
</div>
#end
</div>
#end
#if(costList && costList.size() > 0)
<hr class="row-hr" />
<div class="row">
#for(x : costList)
<div class="col-3">
<span class="text-secondary">#(x.name??): </span><span class="fw-bold text-secondary me-5">#number(purchaseOrder.getOrderCost(x.id)??, "#.##")</span>
</div>
#end
</div>
#end
<hr class="row-hr" />
<div class="row">
<div class="col-3">
<span class="text-secondary">应付金额:</span><span class="fw-bold text-secondary">#number(purchaseOrder.amount, "#.##")</span>
</div>
<div class="col-3">
<span class="text-secondary">已付金额:</span>
#if(purchaseOrder.paid_amount > 0)
<span class="badge bg-success">#number(purchaseOrder.paid_amount, "#.##")</span>
#else
<span class="badge bg-secondary">#number(purchaseOrder.paid_amount, "#.##")</span>
#end
</div>
<div class="col-3">
#set(lastAmount = purchaseOrder.amount??0 - purchaseOrder.paid_amount??0 ) <span class="text-secondary">剩余金额:</span>
#if(lastAmount > 0)
<span class="badge bg-danger">#number(lastAmount,"#.##")</span>
#else
<span class="badge bg-secondary">0</span>
#end
</div>
#if(purchaseOrder.reject_type != RejectTypeEnum.no.value)
<div class="col-3">
<span class="text-secondary">退货金额: </span><span class="fw-bold text-secondary">#number(purchaseOrder.reject_amount, "#.##")</span>
</div>
#end
</div>
<hr class="row-hr" />
<div class="row">
<div class="col">
<span class="text-secondary">备注:</span><span>#(purchaseOrder.remark??)</span>
</div>
<div class="col text-end" id="purchaseOrder_order_img_list_preview">
#for(thumb : purchaseOrder.orderImgList)
<img class="rounded" src="#(resourceUploadDomain)#(thumb)" layer-src="#(resourceUploadDomain)#(thumb)" style="width:30px" >
#end
</div>
</div>
</div>
</div>
</div>
<div id="purchaseOrder_showPayLog" style="display:none;"></div>
<div id="purchaseOrder_showOrderLog" style="display:none;"></div>
</div>
<script type="application/javascript">
$(function() {
// 初始化bootstrap相关组件
common.initBootstrap();
beekit.photos("#purchaseOrder_order_img_list_preview");
});
purchaseOrder.showInfo = function(othis) {
var target = $(othis).attr("_target");
var targetHtml = $("#purchaseOrder_"+target).html();
if(targetHtml == '') {
if(target == 'showPayLog') {
beekit.ajaxFill("/inventory/purchase/order/showPayLog", {"id": #(purchaseOrder.id)}, "#purchaseOrder_"+target);
} else if(target == 'showOrderLog') {
beekit.ajaxFill("/inventory/purchase/order/showOrderLog", {"id": #(purchaseOrder.id)}, "#purchaseOrder_"+target);
}
}
$(othis).parent().parent().find("a").each(function() {
if(this == othis) {
$(othis).toggleClass("active");
$("#purchaseOrder_"+target).show();
} else {
$(this).removeClass("active");
$("#purchaseOrder_"+$(this).attr("_target")).hide();
}
});
}
purchaseOrder.showPrint = function(orderId) {
beekit.modal("/inventory/purchase/order/showPrint?id="+orderId);
}
</script>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册