2025-06-25 11:52:01 +08:00

424 lines
16 KiB
HTML

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<title></title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="stylesheet" href="/static/assets/gougu/css/gougu.css">
<style>
.close {
width: 100%;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
}
#statusSelect,
#lockSelect {
display: inline-block;
width: 150px;
}
.status-button {
display: inline-block;
margin-left: 20px;
}
</style>
</head>
<body>
<div class="page-content">
<div class="p-4 border-b">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div>
<h3 class="h3-title hover">
<span>基本信息</span>
</h3>
</div>
<div style="color: #b3b3b3;">
创建时间:{$detail.create_time}
</div>
</div>
</div>
<input type="text" value="{$detail.id}" id="pid" style="display: none;">
<div class="layui-row border-b">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账单号
</td>
<td>
{$detail.order}
</td>
<td class="layui-td-gray-2">创建者
</td>
<td>
{$detail.creater}
</td>
</tr>
<tr>
<td class="layui-td-gray-2">隶属部门
</td>
<td>
{$detail.department}
</td>
<td class="layui-td-gray-2">报销状态
</td>
<td>
{$detail.status}
<a href="javascript:;" onclick="editstatus('{$detail.id}')" style="margin-left: 20px;">修改</a>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注
</td>
<td colspan="4">
{$detail.remark}
</td>
</tr>
</table>
</div>
<div class="p-4 border-b">
<h3 class="h3-title hover">
<span>详细信息</span>
<span>
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="additem" id="additem">增加报销</a>
<a class="layui-btn layui-btn-xs" lay-event="edititem" id="edititem">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete" id="delete">删除</a>
</span>
</h3>
</div>
<div class="layui-row border-b">
<table class="layui-table layui-table-form" id="reimbursementdetail"></table>
</div>
</div>
<div class="close">
<button class="layui-btn" onclick="printPage()">打印本页</button>
<button class="layui-btn layui-bg-blue" id="refresh">刷新</button>
</div>
</body>
<script>
const moduleInit = ["tool", "gouguEdit", "gouguComment"];
function gouguInit() {
var table = layui.table;
var tool = layui.tool;
var dropdown = layui.dropdown;
var $ = layui.jquery;
var layer = layui.layer;
var pid = document.getElementById('pid').value;
var project = "{$detail.project}";
var department = "{$detail.department}";
var lock = "{$detail.lock}";
var dates = "{$detail.create_time}";
var currentStatus = "{$detail.status}";
// var id = pid;
// 检查状态并设置按钮状态
if (currentStatus === "已报销") {
$("#additem").prop("disabled", true).addClass("layui-btn-disabled");
$("#edititem").prop("disabled", true).addClass("layui-btn-disabled");
$("#delete").prop("disabled", true).addClass("layui-btn-disabled");
}
//增加报销
$("#additem").on("click", function () {
// 只有在未报销状态下才允许增加报销
if (currentStatus === "已报销") return;
var layerIndex = layui.layer.open({
type: 2,
title: '增加报销',
shadeClose: true,
shade: 0.8,
area: ['70%', '90%'],
content: '/reimbursement/index/additem?pid=' + pid + '&project=' + project + '&department=' + department + '&dates=' + dates,
end: function () {
// 弹出层关闭时刷新当前页面
layui.table.reload('reimbursementdetail');
}
});
});
//修改报销
$("#edititem").on("click", function () {
// 只有在未报销状态下才允许编辑
if (currentStatus === "已报销") return;
var checkStatus = layui.table.checkStatus('reimbursementdetail'); // 获取选中行的状态
var data = checkStatus.data; // 获取选中的数据
if (data.length === 0) {
layer.msg('请先选择要编辑的项'); // 如果没有选中项,提示用户
return;
}
var id = data[0].id; // 获取第一个选中项的 ID
console.log(id);
var layerIndex = layui.layer.open({
type: 2,
title: '编辑报销',
shadeClose: true,
shade: 0.8,
area: ['70%', '90%'],
content: '/reimbursement/index/edititem?id=' + id,
end: function () {
// 弹出层关闭时刷新当前页面
layui.table.reload('reimbursementdetail');
}
});
});
//删除报销
$("#delete").on("click", function () {
// 只有在未报销状态下才允许删除
if (currentStatus === "已报销") return;
layui.layer.confirm("确定删除该内容吗?", { icon: 3, title: "提示" }, function (index) {
var checkStatus = layui.table.checkStatus('reimbursementdetail'); // 获取选中行的状态
var data = checkStatus.data; // 获取选中的数据
if (data.length === 0) {
layer.msg('请先选择要删除的项'); // 如果没有选中项,提示用户
return;
}
var id = data[0].id; // 获取第一个选中项的 ID
$.post("/reimbursement/index/delete", { id: id }, function (res) {
if (res.code === 0) {
layui.layer.msg(res.msg);
layui.table.reload('reimbursementdetail'); // 刷新表格
} else {
layui.layer.msg(res.msg);
}
});
layui.layer.close(index);
});
});
//刷新表格
$("#refresh").on("click", function () {
layui.table.reload('reimbursementdetail', {
url: '/reimbursement/index/viewitem?id=' + pid, // 替换为你的数据接口URL
page: {
curr: 1 // 重新从第一页开始加载
}
});
});
//渲染表格
layui.pageTable = layui.table.render({
elem: "#reimbursementdetail",
// toolbar: '#toolbarDemo',
// cellMinWidth: 80,
url: "/reimbursement/index/viewitemlist?id=" + pid,// 数据接口
page: true,
limit: 50,
totalRow: true,
filter: "reimbursementdetail",
cols: [
[
{ type: 'checkbox', },
{
field: 'id',
width: 100,
title: '编号',
sort: true,
align: "center",
totalRowText: '合计:',
},
{
field: "times",
title: "发生日期",
width: 120,
align: "center",
rowspan: 2,
templet: function (d) {
return '<span>' + d.times + "</span>";
},
},
{
field: "cate",
title: "报销类别",
width: 120,
align: "center",
rowspan: 2,
templet: function (d) {
return '<span>' + d.cate + "</span>";
},
},
{
field: "project",
title: "隶属项目",
width: 180,
align: "center",
rowspan: 2,
sort: true,
templet: function (d) {
return '<span>' + (d.project !== null && d.project !== undefined ? d.project : '无') + "</span>";
},
},
{
field: "price",
title: "报销金额",
align: "center",
width: 120,
rowspan: 2,
templet: function (d) {
return '<span>' + d.price + "</span>";
},
totalRow: true, // 添加此行以计算总计
},
// {
// field: "haveticket",
// title: "是否有票",
// width: 120,
// align: "center",
// rowspan: 2,
// templet: function (d) {
// return '<span>' + d.haveticket + "</span>";
// },
// },
{
field: "tickets",
title: "发票查看",
align: "center",
width: 120,
rowspan: 2,
templet: function (d) {
if (d.tickets) {
return `<span><img src="${d.tickets}" alt="" style="cursor: pointer;" onclick="viewImage('${d.tickets}')"></span>`;
} else {
return "<span>无</span>";
}
},
},
{
field: "remark",
title: "备注",
align: "center",
rowspan: 2,
templet: function (d) {
if (d.remark) {
return '<span>' + d.remark + "</span>";
} else {
return "";
}
},
},
],
],
});
}
</script>
<script src="/static/assets/layui/layui.js"></script>
<script src="/static/assets/gougu/gouguInit.js"></script>
<script>
//打印数据
function printPage() {
var content = document.querySelector('.page-content').innerHTML;
var originalContent = document.body.innerHTML;
document.body.innerHTML = content;
window.print();
document.body.innerHTML = originalContent;
}
//发票查看大图
function viewImage(src) {
var img = new Image();
img.src = src;
var imgHtml = "<img src='" + src + "' style='width:100%;'/>";
layer.open({
type: 1,
shade: 0.8,
title: false,
area: ['80%', '80%'],
content: imgHtml,
});
}
//修改报销状态
function editstatus(id) {
layui.use('layer', function () {
var layer = layui.layer;
var id = document.getElementById('pid').value;
var currentStatus = "{$detail.status}";
layer.open({
type: 1,
title: '修改报销状态',
content: '<div style="padding: 20px;">' +
'<select id="statusSelect" lay-filter="statusSelect" class="layui-input">' +
'<option value="未报销" ' + (currentStatus === '未报销' ? 'selected' : '') + '>未报销</option>' +
'<option value="已报销" ' + (currentStatus === '已报销' ? 'selected' : '') + '>已报销</option>' +
'</select>' +
'<button class="layui-btn layui-btn-sm" onclick="updateStatus(' + id + ')" style="margin-left: 20px;">确定</button>' +
'</div>'
});
});
}
//修改账单状态
function editlock(id) {
var id = document.getElementById('pid').value;
// console.log(id);
var currentlock = "{$detail.lock}";
layui.use('layer', function () {
var layer = layui.layer;
layer.open({
type: 1,
title: '修改账单状态',
content: '<div style="padding: 20px; display: flex; align-items: center;">' +
'<select id="lockSelect" class="layui-input">' +
'<option value="未锁定" ' + (currentlock === '未锁定' ? 'selected' : '') + '>未锁定</option>' +
'<option value="锁定" ' + (currentlock === '锁定' ? 'selected' : '') + '>锁定</option>' +
'</select>' +
'<button class="layui-btn layui-btn-sm" onclick="updatelocks(' + id + ')" style="margin-left: 20px;">确定</button>' +
'</div>'
});
});
}
//更新报销状态接口
function updateStatus(id) {
var status = $('#statusSelect').val();
$.ajax({
url: '/reimbursement/index/editstatus',
type: 'POST',
data: { id: id, status: status },
success: function (response) {
if (response.code === 0) {
layer.closeAll();
layer.msg(response.msg, { icon: 1 });
} else {
layer.msg(response.msg, { icon: 2 });
}
},
error: function () {
layer.msg('请求失败', { icon: 2 });
}
});
}
//更新账单状态接口
function updatelocks(id) {
var lock = $('#lockSelect').val();
$.ajax({
url: '/reimbursement/index/editlock',
type: 'POST',
data: { id: id, lock: lock },
success: function (response) {
if (response.code === 0) {
layer.closeAll();
layer.msg(response.msg, { icon: 1 });
} else {
layer.msg(response.msg, { icon: 2 });
}
},
error: function () {
layer.msg('请求失败', { icon: 2 });
}
});
}
</script>