first commit

This commit is contained in:
2026-07-23 09:40:36 +08:00
commit 090abf48fa
989 changed files with 145728 additions and 0 deletions
+166
View File
@@ -0,0 +1,166 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">新增开票申请</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">开票金额<font>*</font></td>
<td><input type="text" class="layui-input" name="amount" lay-verify="required|number" placeholder="请输入开票金额" lay-reqText="请输入开票金额" value=""></td>
<td class="layui-td-gray">开票类型<font>*</font></td>
<td>
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1">增值税专用发票</option>
<option value="2">普通发票</option>
<option value="3">专业发票</option>
</select>
</td>
<td class="layui-td-gray">开票主体<font>*</font></td>
<td>
<select name="invoice_subject" lay-verify="required" lay-reqText="请选择开票主体">
<option value="">请选择开票主体</option>
{volist name=":get_base_data('enterprise')" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">抬头类型<font>*</font></td>
<td>
<input type="radio" name="types" lay-filter="type" value="1" title="企业" checked>
<input type="radio" name="types" lay-filter="type" value="2" title="个人">
</td>
<td class="layui-td-gray-2">开票抬头<span class="layui-btn layui-btn-xs invoice-qiye customer-picker">选择</span></td>
<td><input type="text" name="invoice_title" class="layui-input" value="" placeholder="请输入开票抬头" lay-verify="required" lay-reqText="请输入开票抬头"></td>
<td class="layui-td-gray-2">纳税人识别号<font>*</font></td>
<td><input type="text" name="invoice_tax" class="layui-input" value="" placeholder="请输入纳税人识别号,个人输入身份证号码"lay-verify="required" lay-reqText="请输入纳税人识别号,个人输入身份证号码"></td>
</tr>
<tr class="invoice-qiye">
<td class="layui-td-gray">开户行<font>*</font></td>
<td><input type="text" name="invoice_bank" class="layui-input" value=""></td>
<td class="layui-td-gray">银行账号<font>*</font></td>
<td><input type="text" name="invoice_account" class="layui-input" value=""></td>
<td class="layui-td-gray-2">银行营业网点</td>
<td><input type="text" name="invoice_banking" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray">电话号码</td>
<td><input type="text" name="invoice_phone" class="layui-input" value=""></td>
<td class="layui-td-gray">地址</td>
<td colspan="3"><input type="text" name="invoice_address" class="layui-input" value=""></td>
</tr>
<tr>
<td class="layui-td-gray">关联合同</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="contract" name="contract_name" placeholder="请选择需要关联的合同" readonly value="">
<input type="hidden" class="layui-input" name="contract_id" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray">关联项目</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="project" name="project_name" placeholder="请选择需要关联的项目" readonly value="">
<input type="hidden" class="layui-input" name="project_id" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray">
<div class="layui-input-inline">附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea></td>
</tr>
</table>
<div id="checkBox" data-status="0" data-id="0" data-checkflowid="0" class="pt-3"></div>
<div class="pt-4">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var moduleInit = ['tool','oaPicker','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form, tool = layui.tool, oaPicker = layui.oaPicker,oaCheck = layui.oaCheck,uploadPlus = layui.uploadPlus;
//选择抬头类型
form.on('radio(type)', function (data) {
if(data.value==2){
$('.invoice-qiye').hide();
}
else{
$('.invoice-qiye').show();
}
});
//相关附件上传
var attachment = new uploadPlus();
//审批相关
oaCheck.init({
check_name:'invoice',
check_btn:0
});
$('.customer-picker').on('click',function(){
let that = $(this),ids = [],titles=[],tax_num=[],tax_bank=[],tax_banksn=[],tax_mobile=[],tax_address=[];
let callback = function(data){
for ( var i = 0; i <data.length; i++){
ids.push(data[i].id);
titles.push(data[i].name);
tax_num.push(data[i].tax_num);
tax_bank.push(data[i].tax_bank);
tax_banksn.push(data[i].tax_banksn);
tax_mobile.push(data[i].tax_mobile);
tax_address.push(data[i].tax_address);
}
//that.val(titles.join(','));
//that.next().val(ids.join(','));
$('[name="invoice_title"]').val(titles.join(','));
$('[name="invoice_tax"]').val(tax_num.join(','));
$('[name="invoice_bank"]').val(tax_bank.join(','));
$('[name="invoice_account"]').val(tax_banksn.join(','));
$('[name="invoice_phone"]').val(tax_mobile.join(','));
$('[name="invoice_address"]').val(tax_address.join(','));
}
oaPicker.picker('customer',1,callback,{});
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
let checkCallback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
data.field.check_name = 'invoice';
data.field.action_id = e.data.return_id;
oaCheck.submit(data.field,checkCallback);
}
}
let clickbtn = $(this);
tool.post("/finance/invoice/add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+143
View File
@@ -0,0 +1,143 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">新增无发票回款申请</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">预回款金额<font>*</font></td>
<td><input type="text" class="layui-input" name="amount" lay-verify="required|number" placeholder="请输入预回款金额" lay-reqText="请输入预回款金额" value=""></td>
<td class="layui-td-gray">收款主体<font>*</font></td>
<td colspan="3">
<select name="invoice_subject" lay-verify="required" lay-reqText="请选择收款主体">
<option value="">请选择收款主体</option>
{volist name=":get_base_data('enterprise')" id="vo"}
<option value="{$vo.id}">{$vo.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">付款主体<font>*</font></td>
<td>
<input type="radio" name="types" lay-filter="type" value="1" title="企业" checked>
<input type="radio" name="types" lay-filter="type" value="2" title="个人">
</td>
<td class="layui-td-gray-2">付款方名称<span class="layui-btn layui-btn-xs invoice-qiye customer-picker">选择</span></td>
<td><input type="text" name="invoice_title" class="layui-input" value="" placeholder="请输入付款方名称" lay-verify="required" lay-reqText="请输入付款方名称"></td>
<td class="layui-td-gray-2">纳税人识别号<font>*</font></td>
<td><input type="text" name="invoice_tax" class="layui-input" value="" placeholder="请输入纳税人识别号,个人输入身份证号码"lay-verify="required" lay-reqText="请输入纳税人识别号,个人输入身份证号码"></td>
</tr>
<tr>
<td class="layui-td-gray">关联合同</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="contract" name="contract_name" placeholder="请选择需要关联的合同" readonly value="">
<input type="hidden" class="layui-input" name="contract_id" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray">关联项目</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="project" name="project_name" placeholder="请选择需要关联的项目" readonly value="">
<input type="hidden" class="layui-input" name="project_id" value="0">
</td>
</tr>
<tr>
<td class="layui-td-gray">
<div class="layui-input-inline">附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="">
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea"></textarea></td>
</tr>
</table>
<div id="checkBox" data-status="0" data-id="0" data-checkflowid="0" class="pt-3"></div>
<div class="pt-4">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var moduleInit = ['tool','oaPicker','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form, tool = layui.tool, oaPicker = layui.oaPicker,oaCheck = layui.oaCheck,uploadPlus = layui.uploadPlus;
//选择抬头类型
form.on('radio(type)', function (data) {
if(data.value==2){
$('.invoice-qiye').hide();
}
else{
$('.invoice-qiye').show();
}
});
//相关附件上传
var attachment = new uploadPlus();
//审批相关
oaCheck.init({
check_name:'invoicea',
check_btn:0
});
$('.customer-picker').on('click',function(){
let that = $(this),ids = [],titles=[],tax_num=[],tax_bank=[],tax_banksn=[],tax_mobile=[],tax_address=[];
let callback = function(data){
for ( var i = 0; i <data.length; i++){
ids.push(data[i].id);
titles.push(data[i].name);
tax_num.push(data[i].tax_num);
tax_bank.push(data[i].tax_bank);
tax_banksn.push(data[i].tax_banksn);
tax_mobile.push(data[i].tax_mobile);
tax_address.push(data[i].tax_address);
}
//that.val(titles.join(','));
//that.next().val(ids.join(','));
$('[name="invoice_title"]').val(titles.join(','));
$('[name="invoice_tax"]').val(tax_num.join(','));
$('[name="invoice_bank"]').val(tax_bank.join(','));
$('[name="invoice_account"]').val(tax_banksn.join(','));
$('[name="invoice_phone"]').val(tax_mobile.join(','));
$('[name="invoice_address"]').val(tax_address.join(','));
}
oaPicker.picker('customer',1,callback,{});
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
let checkCallback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
data.field.check_name = 'invoicea';
data.field.action_id = e.data.return_id;
oaCheck.submit(data.field,checkCallback);
}
}
let clickbtn = $(this);
tool.post("/finance/invoice/add_a", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+237
View File
@@ -0,0 +1,237 @@
{extend name="../../base/view/common/base" /}
{block name="style"}
<style>
.tab-5 .search-item,.tab-6 .search-item{display:none;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">全部</li>
<li>我申请的</li>
<li>待我审批</li>
<li>我已审批</li>
<li>抄送我的</li>
<li>已开具</li>
<li>已作废</li>
</ul>
</div>
</div>
<form class="layui-form gg-form-bar border-x tab-0" id="barsearchform">
<div class="layui-input-inline" style="width:175px;">
<input type="text" class="layui-input" id="diff_time" placeholder="选择开票时间区间" readonly name="diff_time">
</div>
<div class="layui-input-inline search-item" style="width:120px;">
<select name="check_status">
<option value="">选择审批状态</option>
{volist name=":get_check_status()" id="vo"}
<option value="{$key}">{$vo}</option>
{/volist}
</select>
</div>
<div class="layui-input-inline search-item" style="width:120px;">
<select name="open_status">
<option value="">开票状态</option>
<option value="0">未开票</option>
<option value="1">已开票</option>
<option value="2">已作废</option>
</select>
</div>
<div class="layui-input-inline" style="width:150px">
<input type="hidden" name="tab" value="0"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
</div>
</form>
<table class="layui-hide" id="table_invoice" lay-filter="table_invoice"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/finance/invoice/add">+ 添加开票申请</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const moduleInit = ['tool','tablePlus','laydatePlus'];
function gouguInit() {
var table = layui.tablePlus, tool = layui.tool, laydatePlus = layui.laydatePlus, element = layui.element;
//tab切换
element.on('tab(tab)', function(data){
$('[name="tab"]').val(data.index);
$("#barsearchform")[0].reset();
$("#barsearchform").attr('class','layui-form gg-form-bar border-x tab-'+data.index);
layui.pageTable.reload({where:{tab:data.index},page:{curr:1}});
return false;
});
//日期范围
var diff_time = new laydatePlus({'target':'diff_time'});
layui.pageTable = table.render({
elem: "#table_invoice"
,toolbar: "#toolbarDemo"
,title: '发票列表'
,url: "/finance/invoice/datalist"
,page: true
,limit: 20
,cellMinWidth: 80
,height: 'full-154'
,cols: [[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
},{
field: 'invoice_title',
title: '开票抬头',
minWidth: 240,
templet:function(d){
var html='<span class="layui-badge layui-bg-blue">企业</span> '+d.invoice_title;
if(d.types==2){
html='<span class="layui-badge layui-bg-green">个人</span> '+d.invoice_title;
}
return html;
}
}, {
field: 'amount',
title: '发票金额(元)',
align: 'right',
width: 100,
},{
field: 'invoice_type',
title: '开票类型',
align: 'center',
width: 120,
templet:function(d){
var html='-';
if(d.invoice_type==1){
html='<span class="green">增值税专用发票</span>';
}
else if(d.invoice_type==2){
html='<span class="blue">普通发票</span>';
}
else if(d.invoice_type==3){
html='<span class="red">专业发票</span>';
}
return html;
}
},{
field:'check_status',title: '审批状态',width:100, align:'center',templet: function(d){
var html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
return html;
}
},
{
field: 'admin_name',
title: '发票申请员工',
align: 'center',
width: 100
},{
field: 'department',
title: '发票申请部门',
align: 'center',
width: 120
},{
field: 'create_time',
title: '申请时间',
align: 'center',
width: 150
},{
field: 'check_user',
title: '当前审核人'
},{
field: 'open_status',
title: '开票状态',
align: 'center',
width: 90,
templet:function(d){
var html='';
if(d.check_status==2){
html = '<span class="red">『未开票』</span>';
if(d.open_status==1){
html = '<span class="green">『已开票』</span>';
}
}
else{
html='-';
}
return html;
}
},{
field: 'open_name',
title: '开票人',
align: 'center',
width: 90
},{
field: 'open_time',
title: '开票日期',
align: 'center',
width: 100
},{
field: 'code',
title: '发票号码',
align: 'center',
width: 120
},{
field: 'right',
fixed: 'right',
title: '操作',
width: 130,
align: 'center',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
var btn2='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
var btn3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</span>';
html+=btn1;
if((d.check_status==0 ||d.check_status==4) && d.admin_id==login_admin){
html+=btn2+btn3;
}
html+='</div>';
return html;
}
}
]
]
});
table.on('tool(table_invoice)',function (obj) {
var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
var data = obj.data;
if (obj.event === 'view') {
tool.side("/finance/invoice/view?id="+data.id);
return;
}
if (obj.event === 'edit') {
tool.side("/finance/invoice/add?id="+data.id);
return;
}
if (obj.event === 'del') {
layer.confirm('确定要删除该内容吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/finance/invoice/del", { id: data.id }, callback);
layer.close(index);
});
return;
}
});
}
</script>
{/block}
<!-- /脚本 -->
+270
View File
@@ -0,0 +1,270 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li><a href="/finance/income/datalist">有发票回款</a></li>
<li class="layui-this"><a href="/finance/invoice/datalist_a">无发票回款</a></li>
</ul>
</div>
</div>
<form class="layui-form gg-form-bar border-x" id="barsearchform">
<div class="layui-input-inline" style="width:175px;">
<input type="text" class="layui-input" id="diff_time" placeholder="选择回款时间区间" readonly name="diff_time">
</div>
<div class="layui-input-inline" style="width:120px;">
<select name="enter_status">
<option value="">请选择状态</option>
<option value="0">未回款</option>
<option value="1">部分回款</option>
<option value="2">全部回款</option>
</select>
</div>
<div class="layui-input-inline search-item" style="width:120px;">
<select name="check_status">
<option value="">选择审批状态</option>
{volist name=":get_check_status()" id="vo"}
<option value="{$key}">{$vo}</option>
{/volist}
</select>
</div>
<div class="layui-input-inline" style="width:150px">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm tool-add" type="button" data-href="/finance/invoice/add_a">+ 添加无发票回款申请</button>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const auth = "{$auth}";
const moduleInit = ['tool','tablePlus','laydatePlus'];
function gouguInit() {
var table = layui.tablePlus, tool = layui.tool, laydatePlus = layui.laydatePlus, element = layui.element;
//日期范围
var diff_time = new laydatePlus({'target':'diff_time'});
layui.pageTable = table.render({
elem: "#test"
,toolbar: "#toolbarDemo"
,url: "/finance/invoice/datalist_a"
,page: true
,limit: 20
,cellMinWidth: 80
,height: 'full-154'
,cellMinWidth: 80
,page: true //开启分页
,limit: 20
,cols: [
[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
},{
field: 'enter_status',
title: '回款状态',
align: 'center',
width: 100,
templet:function(d){
var html='<span class="red">『未回款』</span>';
if(d.enter_status==1){
html='<span class="blue">『部分回款』</span>';
}
else if(d.enter_status==2){
html='<span class="green">『全部回款』</span>';
}
return html;
}
},{
field: 'enter_amount',
title: '回款金额(元)',
align: 'right',
width: 100,
},{
field: 'enter_time',
title: '最新回款时间',
align: 'center',
width: 136
},{
field: 'invoice_title',
minWidth: 240,
title: '回款方名称',
templet:function(d){
var html='<span class="layui-badge layui-bg-blue">企业</span> '+d.invoice_title;
if(d.types==2){
html='<span class="layui-badge layui-bg-green">个人</span> '+d.invoice_title;
}
return html;
}
},{field:'check_status',title: '审批状态',width:110, align:'center',templet: function(d){
let html='';
if(d.open_status==2){
html = '<span class="check-status-color-3">『已作废』</span>';
}
else{
html = '<span class="check-status-color-'+d.check_status+'">『'+d.check_status_str+'』</span>';
}
return html;
}
},{
field: 'amount',
title: '申请回款金额(元)',
align: 'right',
width: 120,
},{
field: 'admin_name',
title: '申请回款人',
align: 'center',
width: 90
},{
field: 'department',
title: '所属部门',
align: 'center',
width: 120
},{
field: 'create_time',
title: '申请时间',
align: 'center',
width: 150
},{
field: 'check_user',
title: '当前审核人'
},{
field: 'right',
fixed: 'right',
title: '操作',
width: 180,
align: 'center',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-xs" lay-event="add">回款管理</span>';
var btn2='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">回款详情</span>';
var btn3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="tovoid">作废</span>';
var btn4='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="novoid">反作废</span>';
var btna1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view_a">详情</span>';
var btna2='<span class="layui-btn layui-btn-xs" lay-event="edit_a">编辑</span>';
var btna3='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del_a">删除</span>';
if(d.check_status==2){
if(auth == 1){
if(d.enter_status==0){
if(d.open_status==2){
html+=btn4+'</div>';
}
else{
html+=btn1+btn2+btn3+'</div>';
}
}
else{
html+=btn1+btn2+'</div>';
}
}
else{
html+=btn2+'</div>';
}
}
else{
html+=btna1;
if((d.check_status==0 ||d.check_status==4) && d.admin_id==login_admin){
html+=btna2+btna3;
}
html+='</div>';
}
return html;
}
}
]
]
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'add') {
tool.side("/finance/income/add?id="+data.id);
return;
}
if (obj.event === 'view') {
tool.side("/finance/income/view?id="+data.id);
return;
}
if (obj.event === 'tovoid') {
layer.confirm('确定作废该无发票回款吗?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "/finance/api/tovoid",
type:'post',
data: {
id: data.id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
layui.pageTable.reload();
}
}
})
layer.close(index);
});
}
if (obj.event === 'novoid') {
layer.confirm('确定反作废该无发票回款吗?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "/finance/api/novoid",
type:'post',
data: {
id: data.id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
layui.pageTable.reload();
}
}
})
layer.close(index);
});
}
if (obj.event === 'view_a') {
tool.side("/finance/invoice/view_a?id="+data.id);
return;
}
if (obj.event === 'edit_a') {
tool.side("/finance/invoice/add_a?id="+data.id);
return;
}
if (obj.event === 'del_a') {
layer.confirm('确定要删除该内容吗?', { icon: 3, title: '提示' }, function (index) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
obj.del();
}
}
tool.delete("/finance/invoice/del_a", { id: data.id }, callback);
layer.close(index);
});
return;
}
});
}
</script>
{/block}
<!-- /脚本 -->
+174
View File
@@ -0,0 +1,174 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">编辑开票申请</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">开票金额<font>*</font></td>
<td>
<input type="text" class="layui-input" name="amount" lay-verify="required|number" placeholder="请输入开票金额" lay-reqText="请输入开票金额" value="{$detail.amount}">
</td>
<td class="layui-td-gray">开票类型<font>*</font></td>
<td>
<select name="invoice_type" lay-verify="required" lay-reqText="请选择开票类型">
<option value="">请选择开票类型</option>
<option value="1" {eq name="$detail.invoice_type" value="1"}selected{/eq}>增值税专用发票</option>
<option value="2" {eq name="$detail.invoice_type" value="2"}selected{/eq}>普通发票</option>
<option value="3" {eq name="$detail.invoice_type" value="3"}selected{/eq}>专业发票</option>
</select>
</td>
<td class="layui-td-gray">开票主体<font>*</font></td>
<td>
<select name="invoice_subject" lay-verify="required" lay-reqText="请选择开票主体">
<option value="">请选择开票主体</option>
{volist name=":get_base_data('enterprise')" id="vo"}
<option value="{$vo.id}" {eq name="$vo.id" value="$detail.invoice_subject"}selected{/eq}>{$vo.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">抬头类型<font>*</font></td>
<td>
<input type="radio" name="types" lay-filter="type" value="1" title="企业" {eq name="$detail.types" value="1"}checked{/eq}>
<input type="radio" name="types" lay-filter="type" value="2" title="个人" {eq name="$detail.types" value="2"}checked{/eq}>
</td>
<td class="layui-td-gray-2">开票抬头<span class="layui-btn layui-btn-xs invoice-qiye customer-picker">选择</span></td>
<td><input type="text" name="invoice_title" class="layui-input" placeholder="请输入开票抬头" lay-verify="required" lay-reqText="请输入开票抬头" value="{$detail.invoice_title}"></td>
<td class="layui-td-gray-2">纳税人识别号<font>*</font></td>
<td><input type="text" name="invoice_tax" class="layui-input" placeholder="请输入纳税人识别号,个人输入身份证号码"lay-verify="required" lay-reqText="请输入纳税人识别号,个人输入身份证号码" value="{$detail.invoice_tax}"></td>
</tr>
<tr class="invoice-qiye">
<td class="layui-td-gray">开户行<font>*</font></td>
<td><input type="text" name="invoice_bank" class="layui-input" value="{$detail.invoice_bank}"></td>
<td class="layui-td-gray">银行账号<font>*</font></td>
<td><input type="text" name="invoice_account" class="layui-input" value="{$detail.invoice_account}"></td>
<td class="layui-td-gray-2">银行营业网点</td>
<td><input type="text" name="invoice_banking" class="layui-input" value="{$detail.invoice_banking}"></td>
</tr>
<tr>
<td class="layui-td-gray">电话号码</td>
<td><input type="text" name="invoice_phone" class="layui-input" value="{$detail.invoice_phone}"></td>
<td class="layui-td-gray">地址</td>
<td colspan="3"><input type="text" name="invoice_address" class="layui-input" value="{$detail.invoice_address}"></td>
</tr>
<tr>
<td class="layui-td-gray">关联合同</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="contract" name="contract_name" placeholder="请选择需要关联的合同" readonly value="{$detail.contract_name|default=''}">
<input type="hidden" class="layui-input" name="contract_id" value="{$detail.contract_id}">
</td>
</tr>
<tr>
<td class="layui-td-gray">关联项目</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="project" name="project_name" placeholder="请选择需要关联的项目" readonly value="{$detail.project_name|default=''}">
<input type="hidden" class="layui-input" name="project_id" value="{$detail.project_id}">
</td>
</tr>
<tr>
<td class="layui-td-gray">
<div class="layui-input-inline">附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"}
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea">{$detail.remark|default=''}</textarea></td>
</tr>
</table>
<div id="checkBox" class="pt-3" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}"></div>
<div class="pt-4">
<input type="hidden" name="id" value="{$detail.id}"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var moduleInit = ['tool','oaPicker','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form, tool = layui.tool, oaPicker = layui.oaPicker,oaCheck = layui.oaCheck,uploadPlus = layui.uploadPlus;
//选择抬头类型
form.on('radio(type)', function (data) {
if(data.value==2){
$('.invoice-qiye').hide();
}
else{
$('.invoice-qiye').show();
}
});
//相关附件上传
var attachment = new uploadPlus();
//审批相关
oaCheck.init({
check_name:'invoice',
check_btn:0
});
$('.customer-picker').on('click',function(){
let that = $(this),ids = [],titles=[];
let callback = function(data){
for ( var i = 0; i <data.length; i++){
ids.push(data[i].id);
titles.push(data[i].name);
tax_num.push(data[i].tax_num);
tax_bank.push(data[i].tax_bank);
tax_banksn.push(data[i].tax_banksn);
tax_mobile.push(data[i].tax_mobile);
tax_address.push(data[i].tax_address);
}
//that.val(titles.join(','));
//that.next().val(ids.join(','));
$('[name="invoice_title"]').val(titles.join(','));
$('[name="invoice_tax"]').val(tax_num.join(','));
$('[name="invoice_bank"]').val(tax_bank.join(','));
$('[name="invoice_account"]').val(tax_banksn.join(','));
$('[name="invoice_phone"]').val(tax_mobile.join(','));
$('[name="invoice_address"]').val(tax_address.join(','));
}
oaPicker.picker('customer',1,callback,{});
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
let checkCallback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
data.field.check_name = 'invoice';
data.field.action_id = e.data.return_id;
oaCheck.submit(data.field,checkCallback);
}
}
let clickbtn = $(this);
tool.post("/finance/invoice/add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+151
View File
@@ -0,0 +1,151 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<form class="layui-form p-page">
<h3 class="pb-2">编辑无发票回款申请</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">预回款金额<font>*</font></td>
<td>
<input type="text" class="layui-input" name="amount" lay-verify="required|number" placeholder="请输入预回款金额" lay-reqText="请输入预回款金额" value="{$detail.amount}">
</td>
<td class="layui-td-gray">收款主体<font>*</font></td>
<td colspan="3">
<select name="invoice_subject" lay-verify="required" lay-reqText="请选择收款主体">
<option value="">请选择收款主体</option>
{volist name=":get_base_data('enterprise')" id="vo"}
<option value="{$vo.id}" {eq name="$vo.id" value="$detail.invoice_subject"}selected{/eq}>{$vo.title}</option>
{/volist}
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray">付款主体<font>*</font></td>
<td>
<input type="radio" name="types" lay-filter="type" value="1" title="企业" {eq name="$detail.types" value="1"}checked{/eq}>
<input type="radio" name="types" lay-filter="type" value="2" title="个人" {eq name="$detail.types" value="2"}checked{/eq}>
</td>
<td class="layui-td-gray-2">付款方名称<span class="layui-btn layui-btn-xs invoice-qiye customer-picker">选择</span></td>
<td><input type="text" name="invoice_title" class="layui-input" placeholder="请输入付款方名称" lay-verify="required" lay-reqText="请输入付款方名称" value="{$detail.invoice_title}"></td>
<td class="layui-td-gray-2">纳税人识别号<font>*</font></td>
<td><input type="text" name="invoice_tax" class="layui-input" placeholder="请输入纳税人识别号,个人输入身份证号码"lay-verify="required" lay-reqText="请输入纳税人识别号,个人输入身份证号码" value="{$detail.invoice_tax}"></td>
</tr>
<tr>
<td class="layui-td-gray">关联合同</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="contract" name="contract_name" placeholder="请选择需要关联的合同" readonly value="{$detail.contract_name|default=''}">
<input type="hidden" class="layui-input" name="contract_id" value="{$detail.contract_id}">
</td>
</tr>
<tr>
<td class="layui-td-gray">关联项目</td>
<td colspan="5">
<input type="text" class="layui-input picker-oa" data-types="project" name="project_name" placeholder="请选择需要关联的项目" readonly value="{$detail.project_name|default=''}">
<input type="hidden" class="layui-input" name="project_id" value="{$detail.project_id}">
</td>
</tr>
<tr>
<td class="layui-td-gray">
<div class="layui-input-inline">附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="file_ids" value="{$detail.file_ids}">
{notempty name="$detail.file_ids"}
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5"><textarea name="remark" placeholder="请输入备注信息" class="layui-textarea">{$detail.remark|default=''}</textarea></td>
</tr>
</table>
<div id="checkBox" class="pt-3" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}"></div>
<div class="pt-4">
<input type="hidden" name="id" value="{$detail.id}"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
var moduleInit = ['tool','oaPicker','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form, tool = layui.tool, oaPicker = layui.oaPicker,oaCheck = layui.oaCheck,uploadPlus = layui.uploadPlus;
//选择抬头类型
form.on('radio(type)', function (data) {
if(data.value==2){
$('.invoice-qiye').hide();
}
else{
$('.invoice-qiye').show();
}
});
//相关附件上传
var attachment = new uploadPlus();
//审批相关
oaCheck.init({
check_name:'invoice',
check_btn:0
});
$('.customer-picker').on('click',function(){
let that = $(this),ids = [],titles=[];
let callback = function(data){
for ( var i = 0; i <data.length; i++){
ids.push(data[i].id);
titles.push(data[i].name);
tax_num.push(data[i].tax_num);
tax_bank.push(data[i].tax_bank);
tax_banksn.push(data[i].tax_banksn);
tax_mobile.push(data[i].tax_mobile);
tax_address.push(data[i].tax_address);
}
//that.val(titles.join(','));
//that.next().val(ids.join(','));
$('[name="invoice_title"]').val(titles.join(','));
$('[name="invoice_tax"]').val(tax_num.join(','));
$('[name="invoice_bank"]').val(tax_bank.join(','));
$('[name="invoice_account"]').val(tax_banksn.join(','));
$('[name="invoice_phone"]').val(tax_mobile.join(','));
$('[name="invoice_address"]').val(tax_address.join(','));
}
oaPicker.picker('customer',1,callback,{});
});
//监听提交
form.on('submit(webform)', function (data) {
let callback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
let checkCallback = function (e) {
layer.msg(e.msg);
if (e.code == 0) {
tool.sideClose(1000);
}
}
data.field.check_name = 'invoice';
data.field.action_id = e.data.return_id;
oaCheck.submit(data.field,checkCallback);
}
}
let clickbtn = $(this);
tool.post("/finance/invoice/add", data.field, callback,clickbtn);
return false;
});
}
</script>
{/block}
<!-- /脚本 -->
+319
View File
@@ -0,0 +1,319 @@
{extend name="../../base/view/common/base" /}
{block name="style"}
<style>
.tab-1 .search-item{display:none;}
</style>
{/block}
<!-- 主体 -->
{block name="body"}
<div class="p-page">
<div class="layui-card border-x border-t" style="margin-bottom:0; box-shadow:0 0 0 0 rgb(5 32 96 / 0%)">
<div class="body-table layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">正常</li>
<li>已作废</li>
</ul>
</div>
</div>
<form class="layui-form gg-form-bar border-x tab-0" id="barsearchform">
<div class="layui-input-inline" style="width:175px;">
<input type="text" class="layui-input" id="diff_time" placeholder="选择时间区间" readonly name="diff_time">
</div>
<div class="layui-input-inline search-item">
<select name="open_status">
<option value="">请选择状态</option>
<option value="0">待开具</option>
<option value="1">已开具</option>
</select>
</div>
<div class="layui-input-inline" style="width:150px">
<input type="hidden" name="tab" value="0"/>
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
<button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
</div>
</form>
<table class="layui-hide" id="test" lay-filter="test"></table>
</div>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<h3 class="h3-title" style="height:32px;">发票列表</h3>
</div>
</script>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const auth = {$authInvoice};
const moduleInit = ['tool','tablePlus','laydatePlus'];
function gouguInit() {
var table = layui.tablePlus, tool = layui.tool, laydatePlus = layui.laydatePlus, element = layui.element;
//tab切换
element.on('tab(tab)', function(data){
$('[name="tab"]').val(data.index);
$("#barsearchform")[0].reset();
$("#barsearchform").attr('class','layui-form gg-form-bar border-x tab-'+data.index);
layui.pageTable.reload({where:{tab:data.index},page:{curr:1}});
return false;
});
//日期范围
var diff_time = new laydatePlus({'target':'diff_time'});
layui.pageTable = table.render({
elem: '#test',
title: '开票记录列表',
toolbar: '#toolbarDemo',
url: "/finance/invoice/record", //数据接口
cellMinWidth: 80,
page: true, //开启分页
limit: 20,
height: 'full-154',
totalRow: true,
cols: [[
{
field: 'id',
title: 'ID号',
align: 'center',
width: 80
},{
field: 'invoice_title',
title: '开票抬头',
minWidth: 240,
templet:function(d){
var html='<span class="layui-badge layui-bg-blue">企业</span> '+d.invoice_title;
if(d.types==2){
html='<span class="layui-badge layui-bg-green">个人</span> '+d.invoice_title;
}
return html;
},
totalRowText: '<div style="text-align:right">合计</div>'
}, {
field: 'amount',
title: '发票金额(元)',
align: 'right',
width: 120,
totalRow: function (d) {return d.TOTAL_ROW.amount}
},{
field: 'invoice_type',
title: '开票类型',
align: 'center',
width: 120,
templet:function(d){
var html='-';
if(d.invoice_type==1){
html='<span class="green">增值税专用发票</span>';
}
else if(d.invoice_type==2){
html='<span class="blue">普通发票</span>';
}
else if(d.invoice_type==3){
html='<span class="red">专业发票</span>';
}
return html;
}
},{
field: 'open_status',
title: '开票状态',
align: 'center',
width: 90,
templet:function(d){
var html='<span class="red">『未开具』</span>';
if(d.open_status==1){
html='<span class="green">『已开具』</span>';
}
else if(d.open_status==2){
html='<span class="yellow">『已作废』</span>';
}
return html;
}
},{
field: 'admin_name',
title: '发票申请员工',
align: 'center',
width: 100
},{
field: 'department',
title: '发票申请部门',
align: 'center',
width: 120
},{
field: 'create_time',
title: '申请时间',
align: 'center',
width: 150
},{
field: 'check_user',
title: '当前审核人'
},{
field: 'open_name',
title: '开票人',
align: 'center',
width: 90
},{
field: 'open_time',
title: '开票日期',
align: 'center',
width: 100
},{
field: 'code',
title: '发票号码',
align: 'center',
width: 120
}, {
field: 'right',
fixed: 'right',
title: '操作',
width: 170,
align: 'center',
templet:function(d){
var html='<div class="layui-btn-group">';
var btn1='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="view">详情</span>';
var btn2='<span class="layui-btn layui-btn-warm layui-btn-xs" lay-event="open">标记为开票</span>';
var btn3='<span class="layui-btn layui-btn-xs" lay-event="open">修改开票信息</span>';
var btn4='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="tovoid">作废</span>';
var btn5='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="novoid">反作废</span>';
html+=btn1;
if(auth==1){
if(d.open_status==0){
html+=btn2;
}
if(d.open_status==1){
html+=btn3+btn4;
}
if(d.open_status==2){
html+=btn5;
}
}
html+='</div>';
return html;
}
}
]
]
});
//监听行工具事件
table.on('tool(test)', function(obj) {
var data = obj.data;
if (obj.event === 'view') {
tool.side("/finance/invoice/view?id="+data.id);
return;
}
if(obj.event === 'open'){
layer.open({
type: 1
,title: '标记为已开票'
,area: '368px;'
,id: 'LAY_module' //设定一个id,防止重复弹出
,btn: ['确定', '取消']
,btnAlign: 'c'
,content: '<div style="padding-top:15px;">\
<div class="layui-form-item">\
<label class="layui-form-label">发票号码</label>\
<div class="layui-input-inline">\
<input type="text" name="code" autocomplete="off" value="'+data.code+'" placeholder="请输入发票号码" class="layui-input">\
</div>\
</div>\
<div class="layui-form-item">\
<label class="layui-form-label">开票日期</label>\
<div class="layui-input-inline">\
<input type="text" id="open_time" name="open_time" autocomplete="off" value="'+data.open_time+'" placeholder="请选择实际开票日期" class="layui-input">\
</div>\
</div>\
<div class="layui-form-item">\
<label class="layui-form-label">物流单号</label>\
<div class="layui-input-inline">\
<input type="text" name="delivery" autocomplete="off" value="'+data.delivery+'" placeholder="请输入物流快递单号" class="layui-input">\
</div>\
</div>\
</div>'
,success:function(){
layui.laydate.render({
elem: '#open_time',
showBottom:false
});
}
,yes: function(index){
let code = $('#LAY_module').find('[name="code"]').val();
let open_time = $('#LAY_module').find('[name="open_time"]').val();
let delivery = $('#LAY_module').find('[name="delivery"]').val();
if(code == ''){
layer.msg('请输入发票号码');
return false;
}
if(open_time == ''){
layer.msg('请选择开票时间');
return false;
}
$.ajax({
url: "/finance/api/open",
type: 'post',
data: {
id: data.id,
code: code,
open_time: open_time,
delivery: delivery
},
success: function(e) {
layer.msg(e.msg);
if (e.code == 0) {
layer.close(index);
layui.pageTable.reload();
}
}
})
}
,btn2: function(){
layer.closeAll();
}
});
}
if (obj.event === 'tovoid') {
layer.confirm('确定作废该发票吗?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "/finance/api/tovoid",
type:'post',
data: {
id: data.id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
layui.pageTable.reload();
}
}
})
layer.close(index);
});
}
if (obj.event === 'novoid') {
layer.confirm('确定反作废该发票吗?', {
icon: 3,
title: '提示'
}, function(index) {
$.ajax({
url: "/finance/api/novoid",
type:'post',
data: {
id: data.id
},
success: function(res) {
layer.msg(res.msg);
if (res.code == 0) {
layui.pageTable.reload();
}
}
})
layer.close(index);
});
}
});
}
</script>
{/block}
<!-- /脚本 -->
+157
View File
@@ -0,0 +1,157 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="layui-form p-page">
<h3 class="pb-2">发票详情</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">开票金额</td>
<td class="blue">{$detail.amount} 元</td>
<td class="layui-td-gray">开票类型</td>
<td>
{eq name="$detail.invoice_type" value="1"}增值税专用发票{/eq}
{eq name="$detail.invoice_type" value="2"}普通发票{/eq}
{eq name="$detail.invoice_type" value="3"}专业发票{/eq}
</td>
<td class="layui-td-gray">开票主体</td>
<td>{$detail.subject}</td>
</tr>
<tr>
<td class="layui-td-gray">抬头类型</td>
<td>
{eq name="$detail.types" value="1"}企业{/eq}
{eq name="$detail.types" value="2"}个人{/eq}
</td>
<td class="layui-td-gray">开票抬头</td>
<td>{$detail.invoice_title}</td>
<td class="layui-td-gray">电话号码</td>
<td>{$detail.invoice_phone}</td>
</tr>
<tr class="invoice-type" {eq name="$detail.types" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray-2">纳税人识别号</td>
<td>{$detail.invoice_tax}</td>
<td class="layui-td-gray">开户行</td>
<td>{$detail.invoice_bank}</td>
<td class="layui-td-gray">银行账号</td>
<td>{$detail.invoice_account}</td>
</tr>
<tr class="invoice-type" {eq name="$detail.types" value="2"}style="display:none"{/eq}>
<td class="layui-td-gray-2">银行营业网点</td>
<td>{$detail.invoice_banking}</td>
<td class="layui-td-gray">地址</td>
<td colspan="3">{$detail.invoice_address}</td>
</tr>
{if condition="$detail.contract_id > 0"}
<tr>
<td class="layui-td-gray">关联的合同</td>
<td colspan="5">{$detail.contract_name|default=''}</td>
</tr>
{/if}
{if condition="$detail.project_id > 0"}
<tr>
<td class="layui-td-gray">关联的项目</td>
<td colspan="5">{$detail.project_name|default=''}</td>
</tr>
{/if}
{notempty name="$detail.remark"}
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5">{$detail.remark}</td>
</tr>
{/notempty}
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">关联附件</td>
<td colspan="5">
<div class="layui-row">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
{if ( $detail.open_status gt 0)}
<tr>
<td class="layui-td-gray">发票号码</td>
<td>{$detail.code}{eq name="$detail.open_status" value="2"}<span class="yellow">『已作废』</span>{/eq}</td>
<td class="layui-td-gray">开票人</td>
<td>{$detail.open_admin_name}</td>
<td class="layui-td-gray">开票日期</td>
<td colspan="3">{$detail.open_time|date='Y-m-d'}</td>
</tr>
<tr>
<td class="layui-td-gray">物流单号</td>
<td colspan="5">{$detail.delivery}</td>
</tr>
<tr>
<td class="layui-td-gray">
<div class="layui-input-inline">发票附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="other_file_ids" value="{$detail.other_file_ids}">
{notempty name="$detail.other_file_ids"}
{volist name="$detail.other_file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
{/if}
</table>
<div id="checkBox" class="pt-3" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}"></div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const invoice_id = {$detail.id};
const moduleInit = ['tool','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool, oaCheck=layui.oaCheck,uploadPlus = layui.uploadPlus;
oaCheck.init({
check_name:'invoice'
});
//相关附件上传
var attachment = new uploadPlus({
"attachment":{
uidDelete:true,
ajaxSave:function(val){
$.ajax({
url: "/finance/api/upload_invoice",
type:'post',
data:{
id:invoice_id,
other_file_ids:val
},
success: function (e) {
location.reload();
}
})
},
ajaxDelete:function(val){
$.ajax({
url: "/finance/api/upload_invoice",
type:'post',
data:{
id:invoice_id,
other_file_ids:val
},
success: function (e) {
location.reload();
}
})
}
}
})
}
</script>
{/block}
<!-- /脚本 -->
+137
View File
@@ -0,0 +1,137 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="body"}
<div class="layui-form p-page">
<h3 class="pb-3">无发票回款详情</h3>
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">预回款金额</td>
<td class="blue">{$detail.amount} 元</td>
<td class="layui-td-gray">收款主体</td>
<td colspan="3">{$detail.subject}</td>
</tr>
<tr>
<td class="layui-td-gray">付款主体</td>
<td>
{eq name="$detail.types" value="1"}企业{/eq}
{eq name="$detail.types" value="2"}个人{/eq}
</td>
<td class="layui-td-gray-2">付款方名称</td>
<td>{$detail.invoice_title}</td>
<td class="layui-td-gray">纳税人识别号</td>
<td>{$detail.invoice_tax}</td>
</tr>
{if condition="$detail.contract_id > 0"}
<tr>
<td class="layui-td-gray">关联的合同</td>
<td colspan="5">{$detail.contract_name|default=''}</td>
</tr>
{/if}
{if condition="$detail.project_id > 0"}
<tr>
<td class="layui-td-gray">关联的项目</td>
<td colspan="5">{$detail.project_name|default=''}</td>
</tr>
{/if}
{notempty name="$detail.remark"}
<tr>
<td class="layui-td-gray">备注信息</td>
<td colspan="5">{$detail.remark}</td>
</tr>
{/notempty}
{notempty name="$detail.file_ids"}
<tr>
<td class="layui-td-gray">关联附件</td>
<td colspan="5">
<div class="layui-row">
{volist name="$detail.file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo,'view')}</div>
{/volist}
</div>
</td>
</tr>
{/notempty}
{if ( $detail.open_status gt 0)}
<tr>
<td class="layui-td-gray">发票号码</td>
<td>{$detail.code}{eq name="$detail.open_status" value="2"}<span class="yellow">『已作废』</span>{/eq}</td>
<td class="layui-td-gray">开票人</td>
<td>{$detail.open_admin_name}</td>
<td class="layui-td-gray">开票日期</td>
<td colspan="3">{$detail.open_time|date='Y-m-d'}</td>
</tr>
<tr>
<td class="layui-td-gray">物流单号</td>
<td colspan="5">{$detail.delivery}</td>
</tr>
<tr>
<td class="layui-td-gray">
<div class="layui-input-inline">发票附件</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn layui-btn-xs" id="uploadBtn"><i class="layui-icon"></i></button>
</div>
</td>
<td colspan="5">
<div class="layui-row" id="uploadBox">
<input type="hidden" data-type="file" name="other_file_ids" value="{$detail.other_file_ids}">
{notempty name="$detail.other_file_ids"}
{volist name="$detail.other_file_array" id="vo"}
<div class="layui-col-md4" id="uploadFile{$vo.id}">{:file_card($vo)}</div>
{/volist}
{/notempty}
</div>
</td>
</tr>
{/if}
</table>
<div id="checkBox" class="pt-3" data-status="{$detail.check_status}" data-id="{$detail.id}" data-checkflowid="{$detail.check_flow_id}"></div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
const invoice_id = {$detail.id};
const moduleInit = ['tool','oaCheck','uploadPlus'];
function gouguInit() {
var form = layui.form,tool=layui.tool, oaCheck=layui.oaCheck,uploadPlus = layui.uploadPlus;
oaCheck.init({
check_name:'invoicea'
});
//相关附件上传
var attachment = new uploadPlus({
"attachment":{
uidDelete:true,
ajaxSave:function(val){
$.ajax({
url: "/finance/api/upload_invoice",
type:'post',
data:{
id:invoice_id,
other_file_ids:val
},
success: function (e) {
location.reload();
}
})
},
ajaxDelete:function(val){
$.ajax({
url: "/finance/api/upload_invoice",
type:'post',
data:{
id:invoice_id,
other_file_ids:val
},
success: function (e) {
location.reload();
}
})
}
}
})
}
</script>
{/block}
<!-- /脚本 -->