424 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			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> |