first commit

This commit is contained in:
2025-06-25 10:53:11 +08:00
commit 9f374011ae
1240 changed files with 181139 additions and 0 deletions
+242
View File
@@ -0,0 +1,242 @@
<style>
.layui-table-cell {
overflow: visible;
text-overflow: inherit;
height: auto !important;
line-height: 38px;
}
.layui-table-box {
min-height: 400px !important;
}
.layui-table-body {
height: 400px;
}
</style>
<form class="layui-form page-content p-4">
<h3 class="h3-title">新建报销</h3>
<div class="p-4 border-b">
<h3 class="h3-title hover">
<span>基本信息</span>
</h3>
</div>
<div class="layui-row border-b">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账单编号<font>*</font>
</td>
<td>
<input type="text" name="order" lay-verify="required" disabled class="layui-input"
value="{{ generateBillNumber() }}" />
</td>
<td class="layui-td-gray-2">隶属部门<font>*</font>
</td>
<td colspan="3">
<select name="department" lay-verify="required" lay-reqText="请选择项目类型" class="layui-select" lay-search=""
lay-filter="department"></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">隶属项目<font>*</font>
</td>
<td colspan="4">
<select name="project" lay-verify="required" lay-reqText="请选择项目类型" class="layui-select" lay-search=""
lay-filter="project"></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注
</td>
<td colspan="4">
<textarea name="schedule" lay-verify="" lay-reqText="请输入" placeholder="请输入备注" class="layui-textarea" value=""
rows="1"></textarea>
</td>
</tr>
</table>
</div>
<div class="p-4 border-b">
<h3 class="h3-title hover">
<span>报销信息</span>
<button class="layui-btn layui-btn-normal" id="addRowBtn">增加条目</button>
</h3>
</div>
<div class="layui-row border-b">
<table class="layui-table" id="editableTable"></table>
</div>
<div class="pt-1">
<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>
<!-- 模态框 -->
<div id="myModal" style="display:none;">
<div class="layui-form layui-form-pane" style="padding: 20px;">
<!-- 在这里放置你的表单内容 -->
<div class="layui-form-item">
<label class="layui-form-label">报销类别</label>
<div class="layui-input-block">
<select name="reimcate" lay-verify="required">
<option value=""></option>
<!-- 这里放置报销类别的选项 -->
</select>
</div>
</div>
<!-- 其他表单项 -->
</div>
</div>
<script>
//生成账单编号
function generateBillNumber() {
var currentDate = new Date();
var year = currentDate.getFullYear().toString().slice(-2);
var month = ('0' + (currentDate.getMonth() + 1)).slice(-2);
var day = ('0' + currentDate.getDate()).slice(-2);
var hours = ('0' + currentDate.getHours()).slice(-2);
var minutes = ('0' + currentDate.getMinutes()).slice(-2);
var seconds = ('0' + currentDate.getSeconds()).slice(-2);
var milliseconds = ('00' + currentDate.getMilliseconds()).slice(-3);
return year + month + day + hours + minutes + seconds + milliseconds;
}
// 修改生成账单编号的函数,直接设置到对应的input元素的value属性上
function setBillNumber() {
var billNumber = generateBillNumber();
document.querySelector('input[name="order"]').value = billNumber;
}
// 调用函数设置账单编号
setBillNumber();
</script>
<script>
layui.use(["form", "layer", "table", "jquery"], function () {
var form = layui.form,
layer = layui.layer,
table = layui.table,
$ = layui.jquery;
// 初始化表格
var editableTable = table.render({
elem: '#editableTable',
cols: [[
{
field: 'cate', title: '报销类别', templet: function (d) {
return `<select name="reimcate${d.LAY_INDEX}" class="layui-select" lay-filter="reimcateSelects"></select>`;
}
},
{ field: 'price', title: '报销金额', edit: 'text' },
{ field: 'haveticket', title: '是否有票', edit: 'text' },
{ field: 'tickets', title: '发票查看', edit: 'text' },
{ field: 'remark', title: '备注', edit: 'text' },
{ fixed: 'right', title: "操作", align: "center", toolbar: "#barDemo" },
]],
data: []
});
// 点击按钮打开模态框
$("#addRowBtn").on("click", function (event) {
event.preventDefault(); // 阻止默认的点击行为
layer.open({
type: 2,
title: '新增条目',
shade: 0.8,
area: ['70%', '90%'], // 宽高
content: '/reimbursement/index/additem',//
success: function (layero, index) {
// 弹出层加载成功后的回调,可在此处进行其他操作
}
});
});
// 获取项目类别
fetch("/reimbursement/index/getproject")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="project"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((project) => {
var option = document.createElement("option");
option.value = project.id;
option.innerText = project.project;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 获取部门
fetch("/reimbursement/index/getdepartment")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="department"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((department) => {
var option = document.createElement("option");
option.value = department.id;
option.innerText = department.department;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 获取报销类别
// fetch("/reimbursement/index/reimcate")
// .then((response) => response.json())
// .then((data) => {
// var select = document.querySelector('select[name="reimcate"]');
// select.innerHTML = '<option value="">请选择项目类型</option>';
// data.data.forEach((reimcate) => {
// var option = document.createElement("option");
// option.value = reimcate.id;
// option.innerText = reimcate.reimcate;
// select.appendChild(option);
// });
// form.render("select");
// })
// .catch((error) => {
// console.error("Error:", error);
// });
// 监听提交事件
form.on("submit(webform)", function (data) {
// 发送请求并处理响应
fetch("/reimbursement/index/add", {
method: "POST",
body: JSON.stringify(data.field),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg);
if (result.code === 2) {
setTimeout(function () {
document.querySelector("form").reset(); // Reset the form
location.reload(); // 刷新页面
}, 1000);
}
});
return false;
});
});
</script>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete">删除</a>
</script>
+158
View File
@@ -0,0 +1,158 @@
<form class="layui-form page-content p-4">
<h3 class="h3-title">新建报销</h3>
<div class="p-4 border-b">
<h3 class="h3-title hover">
<span>基本信息</span>
</h3>
</div>
<div class="layui-row border-b">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">账单编号<font>*</font>
</td>
<td>
<input type="text" name="order" lay-verify="required" disabled class="layui-input"
value="{{ generateBillNumber() }}" />
</td>
<td class="layui-td-gray-2">隶属部门<font>*</font>
</td>
<td colspan="3">
<select name="department" lay-verify="required" lay-reqText="请选择项目类型" class="layui-select" lay-search=""
lay-filter="department"></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">创建者
</td>
<td colspan="4">
<input type="hidden" name="creater" lay-verify="required" disabled class="layui-input" value="" />
<input type="text" name="creatername" required disabled class="layui-input" value="" />
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注
</td>
<td colspan="4">
<textarea name="schedule" lay-verify="" lay-reqText="请输入" placeholder="请输入备注" class="layui-textarea" value=""
rows="1"></textarea>
</td>
</tr>
</table>
</div>
<div class="pt-1">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">
立即提交
</button>
</div>
</form>
<script>
//生成账单编号
function generateBillNumber() {
var currentDate = new Date();
var year = currentDate.getFullYear().toString().slice(-2);
var month = ('0' + (currentDate.getMonth() + 1)).slice(-2);
var day = ('0' + currentDate.getDate()).slice(-2);
var hours = ('0' + currentDate.getHours()).slice(-2);
var minutes = ('0' + currentDate.getMinutes()).slice(-2);
var seconds = ('0' + currentDate.getSeconds()).slice(-2);
var milliseconds = ('00' + currentDate.getMilliseconds()).slice(-3);
return year + month + day + hours + minutes + seconds + milliseconds;
}
// 修改生成账单编号的函数,直接设置到对应的input元素的value属性上
function setBillNumber() {
var billNumber = generateBillNumber();
document.querySelector('input[name="order"]').value = billNumber;
}
// 调用函数设置账单编号
setBillNumber();
</script>
<script>
layui.use(["form"], function () {
var form = layui.form;
// 获取项目类别
// fetch("/reimbursement/index/getproject")
// .then((response) => response.json())
// .then((data) => {
// var select = document.querySelector('select[name="project"]');
// select.innerHTML = '<option value="">请选择项目类型</option>';
// data.data.forEach((project) => {
// var option = document.createElement("option");
// option.value = project.id;
// option.innerText = project.project;
// select.appendChild(option);
// });
// form.render("select");
// })
// .catch((error) => {
// console.error("Error:", error);
// });
// 获取部门
fetch("/reimbursement/index/getdepartment")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="department"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((department) => {
var option = document.createElement("option");
option.value = department.id;
option.innerText = department.department;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
// 获取创建者
const apiUrl = '/reimbursement/index/getcreater';
fetch(apiUrl)
.then(response => {
if (!response.ok) {
throw new Error('接口反馈有误!');
}
return response.json();
})
.then(data => {
// 假设返回的数据中创建者的名字存储在 data.createrId
document.querySelector('input[name="creater"]').value = data.createrId;
document.querySelector('input[name="creatername"]').value = data.createrName;
})
.catch(error => {
console.error('获取操作出现问题:', error);
});
// 监听提交事件
form.on("submit(webform)", function (data) {
// 发送请求并处理响应
fetch("/reimbursement/index/add", {
method: "POST",
body: JSON.stringify(data.field),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg);
if (result.code === 2) {
setTimeout(function () {
document.querySelector("form").reset(); // Reset the form
location.reload(); // 刷新页面
}, 1000);
}
});
return false;
});
});
</script>
+385
View File
@@ -0,0 +1,385 @@
<!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">
<!-- <link rel="stylesheet" href="/static/assets/gougu/css/layout.css"> -->
<style>
.close {
width: 100%;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<form action="">
<div class="page-content">
<div class="p-4 border-b">
<h3 class="h3-title hover">
<span>增加报销</span>
</h3>
<!-- pid等参数 -->
<input type="text" name="pid" lay-verify="" class="layui-input" value="" id="pid" style="display: none;" />
<input type="text" name="department" lay-verify="" class="layui-input" value="" id="department"
style="display: none;" />
<input type="text" name="project" lay-verify="" class="layui-input" value="" id="project"
style="display: none;" />
<input type="text" name="dates" lay-verify="" class="layui-input" value="" id="dates" style="display: none;" />
</div>
<div class="layui-row border-b">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">费用类型
</td>
<td>
<select name="cate" lay-verify="required" lay-reqText="请选择费用类型" class="layui-select" lay-search
lay-filter="cate" style="width: 100%;" id="cate"></select>
</td>
<td class="layui-td-gray-2">隶属项目
</td>
<td>
<select name="project" lay-verify="required" class="layui-select" lay-search=""
lay-filter="project" style="width: 100%;" id="project"></select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">报销金额
</td>
<td>
<input type="text" name="price" lay-verify="" lay-reqText="请填入报销金额,例如:52.00"
placeholder="请填入报销金额,例如:52.00" class="layui-input" value="" id="price" />
</td>
<td class="layui-td-gray-2">是否有票
</td>
<td>
<select name="haveticket" lay-verify="required" lay-reqText="请选择" class="layui-select" lay-search
lay-filter="haveticket" style="width: 100%;">
<option value="">请选择</option>
<option value="无"></option>
<option value="有"></option>
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">发生时间
</td>
<td>
<div class="layui-input-inline">
<input type="text" name="times" class="layui-input" id="times" placeholder="yyyy年MM月dd日">
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">上传票据
</td>
<td colspan="4">
<input type="hidden" name="tickets" id="ticketsInput" value="">
<div id="no-ticket-msg" style="color: red;">当前无票,不可上传</div>
<div class="layui-upload-drag" style="display: block;" id="ID-upload-demo-drag">
<i class="layui-icon layui-icon-upload"></i>
<div>点击上传,或将文件拖拽到此处</div>
<div class="layui-hide" id="tickets">
<hr> <img src="{{#tickets}}" alt="上传成功后渲染" style="max-width: 100%">
</div>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">上传附件
</td>
<td colspan="4">
<div class="layui-upload">
<button type="button" class="layui-btn layui-btn-normal" id="uploadfile">选择多文件</button>
<div class="layui-upload-list">
<table class="layui-table">
<colgroup>
<col style="min-width: 100px;">
<col width="150">
<col width="260">
<col width="150">
</colgroup>
<thead>
<th>文件名</th>
<th>大小</th>
<th>上传进度</th>
<th>操作</th>
</thead>
<tbody id="update"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="uploadfileaction">开始上传</button>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注
</td>
<td colspan="4">
<input type="text" name="remark" lay-verify="" lay-reqText="" placeholder="" class="layui-input" value=""
id="remark" />
</td>
</tr>
</table>
</div>
</div>
<div class="close">
<button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="webform">
立即提交
</button>
</div>
</form>
</body>
<script>
// 获取URL参数中的pid的值
const urlParams = new URLSearchParams(window.location.search);
const pidValue = urlParams.get('pid');
const departmentValue = urlParams.get('department');
const projectValue = urlParams.get('project');
// 将获取的日期时间数据格式转换为日期数据格式
const datesValue = urlParams.get('dates');
const dates = new Date(datesValue);
console.log(dates);
const formattedDate = dates.toISOString().split('T')[0];
// 将pid的值设置给id为pid的input元素
document.getElementById('pid').value = pidValue;
document.getElementById('department').value = departmentValue;
document.getElementById('project').value = projectValue;
document.getElementById('dates').value = formattedDate;
// 获取是否有票选择框元素
const haveticketSelect = document.querySelector('select[name="haveticket"]');
// 获取上传票据区域元素
const uploadSection = document.querySelector('#ID-upload-demo-drag');
// 获取无票提示信息元素
const noTicketMsg = document.getElementById('no-ticket-msg');
// 初始隐藏上传票据区域
uploadSection.style.display = 'none';
// 监听是否有票选择框的change事件
haveticketSelect.addEventListener('change', function () {
// 如果选择了有票
if (haveticketSelect.value === '有') {
// 显示上传票据区域
uploadSection.style.display = 'block';
// 隐藏无票提示信息
noTicketMsg.style.display = 'none';
} else {
// 否则隐藏上传票据区域
uploadSection.style.display = 'none';
// 显示无票提示信息
noTicketMsg.style.display = 'block';
}
});
</script>
<script>
const moduleInit = ["tool", "gouguEdit", "gouguComment"];
function gouguInit() {
var table = layui.table;
var tool = layui.tool;
var dropdown = layui.dropdown;
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var upload = layui.upload;
var element = layui.element;
var laydate = layui.laydate;
upload.render({
elem: '#ID-upload-demo-drag',
url: '/api/index/upload',
done: function (res) {
layer.msg('上传成功');
// 将图片路径赋值给隐藏的 input 元素
document.getElementById('ticketsInput').value = res.data.filepath;
console.log(res);
}
});
// 获取项目类别
fetch("/reimbursement/index/getproject")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="project"]');
select.innerHTML = '<option value=""></option>';
data.data.forEach((project) => {
var option = document.createElement("option");
option.value = project.id;
option.innerText = project.project;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
//渲染日期选择
laydate.render({
elem: '#times',
format: 'yyyy年MM月dd日',
done: function(value){
console.log('您选择的日期是:' + value);
times = value.replace(/年|月/g, '-').replace('日', '');
}
});
// 上传附件渲染
// 制作多文件上传表格
var uploadListIns = upload.render({
elem: '#uploadfile',
elemList: $('#update'),
url: '/api/index/upload',
accept: 'file',
multiple: true,
number: 3,
auto: false,
bindAction: '#uploadfileaction',
choose: function (obj) {
var that = this;
var files = this.files = obj.pushFile();
// 读取本地文件
obj.preview(function (index, file, result) {
var tr = $('<tr id="upload-' + index + '">' +
'<td>' + file.name + '</td>' +
'<td>' + (file.size / 1024).toFixed(1) + 'kb</td>' +
'<td><div class="layui-progress" lay-filter="progress-demo-' + index + '"><div class="layui-progress-bar" lay-percent=""></div></div></td>' +
'<td>' +
'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>' +
'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>' +
'</td>' +
'</tr>');
// 单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
// 删除
tr.find('.demo-delete').on('click', function () {
delete files[index];
tr.remove();
// 清空 input file 值,以免删除后出现同名文件不可选
uploadListIns.config.elem.next()[0].value = '';
});
$('#update').append(tr);
element.render('progress');
});
},
done: function (res, index, upload) {
var that = this;
var tr = $('#update').find('tr#upload-' + index);
var tds = tr.children();
tds.eq(3).html('');
delete this.files[index];
return;
//}
this.error(index, upload);
},
allDone: function (obj) {
console.log(obj);
},
error: function (index, upload) {
var that = this;
var tr = $('#update').find('tr#upload-' + index);
var tds = tr.children();
// 显示重传
tds.eq(3).find('.demo-reload').removeClass('layui-hide');
},
progress: function (n, elem, e, index) {
element.progress('progress-demo-' + index, n + '%');
}
});
// 获取费用类型
fetch("/reimbursement/index/reimcate")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="cate"]');
select.innerHTML = '<option value="">请选择费用类型</option>';
data.data.forEach((cate) => {
var option = document.createElement("option");
option.value = cate.id;
option.innerText = cate.cate;
select.appendChild(option);
});
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
//监听提交结果
form.on("submit(webform)", function (data) {
fetch("/reimbursement/index/additem", {
method: "POST",
body: JSON.stringify({
pid: document.getElementById('pid').value,
project: document.querySelector('select[name="project"]').value,
department: document.getElementById('department').value,
cate: document.querySelector('select[name="cate"]').value,
haveticket: document.querySelector('select[name="haveticket"]').value,
price: document.getElementById('price').value,
remark:document.getElementById('remark').value,
times: times,
// 使用隐藏的 input 元素的值
tickets: document.getElementById('ticketsInput').value,
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
// 显示提示消息
layer.msg(result.msg, {
time: 1000,
end: function () {
// 检查后端返回的 code,如果等于 2 则关闭 #additem 的 layer
if (result.code === 2) {
var index = window.parent.layer.getFrameIndex(window.name);
window.parent.layer.close(index);
// 向父页面返回值999
if (window.parent.opener) {
window.parent.opener.returnValue = 999;
console.log(window.parent.opener.returnValue);
} else {
console.log("No parent opener found.");
}
}
}
});
});
return false;
});
}
</script>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs " lay-event="edit">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete">删除</a>
</script>
<script src="/static/assets/layui/layui.js"></script>
<script src="/static/assets/gougu/gouguInit.js"></script>
+121
View File
@@ -0,0 +1,121 @@
<!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="/layui/css/layui.css" media="all" />
<style>
body{margin: 10px;}
</style>
</head>
<body class="childrenBody">
<form class="layui-form changePwd">
<input type="hidden" name="id" id="id" th:value="${id}">
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-block">
<input type="text" name="name" value="" placeholder="姓名" id="name" lay-verify="required|name" class="layui-input pwd">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性别</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="0" title="女" checked="">
<input type="radio" name="sex" value="1" title="男" >
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">年龄</label>
<div class="layui-input-block">
<input type="text" name="age" value="" placeholder="年龄" id="age" class="layui-input pwd">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit="" lay-filter="*">保存</button>
<button type="button" class="layui-btn layui-btn-primary" onclick="layerclose();">关闭</button>
</div>
</div>
</form>
<script type="text/javascript" src="/layui/layui.js"></script>
<script type="text/javascript" src="/js/jquery-3.3.1.min.js"></script>
<script>
$(function(){
var id = $("#id").val();
if(id != ""){
$.ajax({
url: "/user/queryById",
data:{"id":id},
dataType:"json",
success: function(data){
$("#name").val(data.name);
$("#age").val(data.age);
$("input[name='sex']").eq(data.sex).attr("checked",'checked');
},error:function(){
}
});
}
})
function layerclose() {
layui.use(['layer' ], function() {
var layer = layui.layer;
var index=parent.layer.getFrameIndex(window.name);//获取当前弹出层的层级
parent.layer.close(index);//关闭弹出层
location.reload();//刷新父页面
})
}
layui.use(['form','layer' ], function() {
var form = layui.form;
var layer = layui.layer;
// 添加验证规则
form.verify({
name : function(value, item) {
value = value.trim();
if (value.length < 0) {
return "请输入教师名称";
}
}
});
form.on('submit(*)', function(data) {
var index = layer.msg('提交中,请稍候',{icon: 16,time:false,shade:0.8});
var d = data.field;
var url = "/user/add";
if(d.id != ""){
url = "/user/edit";
}
$.ajax({
url: url,
data:d,
dataType:"text",
success: function(data){
layer.close(index);
if(data == 0){
layer.msg("保存成功!");
parent.queryTea();
parent.close();
}else{
layer.msg("保存失败!");
}
},error:function(){
layer.close(index);
layer.msg("保存失败!");
}
});
return false;
});
});
</script>
</body>
</html>
@@ -0,0 +1,349 @@
<!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;
}
</style>
</head>
<body>
<form action="">
<div class="page-content">
<div class="p-4 border-b">
<h3 class="h3-title hover">
<span>项目编号 - </span><span>{$detail.id}</span>
</h3>
<input type="text" name="pid" lay-verify="" class="layui-input" value="{$detail.pid}" id="pid"
style="display: none;"/>
<input type="text" name="department" lay-verify="" class="layui-input" value="{$detail.department}"
id="department" style="display: none;"/>
<input type="text" name="project" lay-verify="" class="layui-input" value="{$detail.project}"
id="project" style="display: none;"/>
<input type="text" name="dates" lay-verify="" class="layui-input" value="" id="dates"
style="display: none;"/>
<input type="text" name="id" lay-verify="" class="layui-input" value="{$detail.id}" id="id"
style="display: none;"/>
</div>
<div class="layui-row border-b">
<table class="layui-table layui-table-form">
<tr>
<td class="layui-td-gray-2">费用类型</td>
<td>
<select name="cate" lay-verify="required" lay-reqText="请选择费用类型" class="layui-select"
lay-search lay-filter="cate" style="width: 100%;" id="cate">
<option value="">请选择费用类型</option>
</select>
</td>
<td class="layui-td-gray-2">隶属项目</td>
<td>
<select name="project" lay-verify="required" lay-reqText="请选择隶属项目" class="layui-select"
lay-search lay-filter="cate" style="width: 100%;" id="project">
<option value="">请选择隶属项目</option>
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">报销金额</td>
<td>
<input type="text" name="price" lay-verify="" lay-reqText="请填入报销金额,例如:52.00"
placeholder="请填入报销金额,例如:52.00" class="layui-input" value="{$detail.price}"
id="price"/>
</td>
<td class="layui-td-gray-2">是否有票</td>
<td>
<select name="haveticket" lay-verify="required" lay-reqText="请选择" class="layui-select"
lay-search lay-filter="haveticket" style="width: 100%;">
<option value="无"></option>
<option value="有"></option>
</select>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">发生时间</td>
<td>
<div class="layui-input-inline">
<input type="text" name="times" class="layui-input" id="times" placeholder="yyyy年MM月dd日"
value="{$detail.times}">
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">上传票据</td>
<td colspan="4">
<input type="hidden" name="tickets" id="ticketsInput" value="{$detail.tickets}">
<div id="no-ticket-msg" style="color: red;">当前无票,不可上传</div>
<div class="layui-upload-drag" style="display: block;" id="ID-upload-demo-drag">
<i class="layui-icon layui-icon-upload"></i>
<div>点击上传,或将文件拖拽到此处</div>
<div class="layui-hide" id="tickets">
<hr>
<img src="{#tickets}" alt="上传成功后渲染" style="max-width: 100%">
</div>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">上传附件</td>
<td colspan="4">
<div class="layui-upload">
<button type="button" class="layui-btn layui-btn-normal" id="uploadfile">选择多文件</button>
<div class="layui-upload-list">
<table class="layui-table">
<colgroup>
<col style="min-width: 100px;">
<col width="150">
<col width="260">
<col width="150">
</colgroup>
<thead>
<th>文件名</th>
<th>大小</th>
<th>上传进度</th>
<th>操作</th>
</thead>
<tbody id="update"></tbody>
</table>
</div>
<button type="button" class="layui-btn" id="uploadfileaction">开始上传</button>
</div>
</td>
</tr>
<tr>
<td class="layui-td-gray-2">备注</td>
<td colspan="4">
<input type="text" name="remark" lay-verify="" lay-reqText="" placeholder=""
class="layui-input" value="{$detail.remark}" id="remark"/>
</td>
</tr>
</table>
</div>
</div>
<div class="close">
<button class="layui-btn layui-btn-normal" lay-filter="webform" lay-submit="">
立即提交
</button>
</div>
</form>
</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 form = layui.form;
var layer = layui.layer;
var upload = layui.upload;
var element = layui.element;
var laydate = layui.laydate;
upload.render({
elem: '#ID-upload-demo-drag',
url: '/api/index/upload',
done: function (res) {
layer.msg('上传成功');
// 将图片路径赋值给隐藏的 input 元素
document.getElementById('ticketsInput').value = res.data.filepath;
console.log(res);
}
});
// 获取项目类别
fetch("/reimbursement/index/getproject")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="project"]');
select.innerHTML = '<option value="">请选择项目类型</option>';
data.data.forEach((project) => {
var option = document.createElement("option");
option.value = project.id;
option.innerText = project.project;
select.appendChild(option);
});
select.value = '{$detail.project}';
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
//渲染日期选择
// laydate.render({
// elem: '#times',
// format: 'yyyy年MM月dd日',
// done: function (value) {
// console.log('您选择的日期是:' + value);
// times = value.replace(/年|月/g, '-').replace('日', '');
// }
// });
// 上传附件渲染
// 制作多文件上传表格
var uploadListIns = upload.render({
elem: '#uploadfile',
elemList: $('#update'),
url: '/api/index/upload',
accept: 'file',
multiple: true,
number: 3,
auto: false,
bindAction: '#uploadfileaction',
choose: function (obj) {
var that = this;
var files = this.files = obj.pushFile();
// 读取本地文件
obj.preview(function (index, file, result) {
var tr = $('<tr id="upload-' + index + '">' +
'<td>' + file.name + '</td>' +
'<td>' + (file.size / 1024).toFixed(1) + 'kb</td>' +
'<td><div class="layui-progress" lay-filter="progress-demo-' + index + '"><div class="layui-progress-bar" lay-percent=""></div></div></td>' +
'<td>' +
'<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>' +
'<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>' +
'</td>' +
'</tr>');
// 单个重传
tr.find('.demo-reload').on('click', function () {
obj.upload(index, file);
});
// 删除
tr.find('.demo-delete').on('click', function () {
delete files[index];
tr.remove();
// 清空 input file 值,以免删除后出现同名文件不可选
uploadListIns.config.elem.next()[0].value = '';
});
$('#update').append(tr);
element.render('progress');
});
},
done: function (res, index, upload) {
var that = this;
var tr = $('#update').find('tr#upload-' + index);
var tds = tr.children();
tds.eq(3).html('');
delete this.files[index];
return;
//}
this.error(index, upload);
},
allDone: function (obj) {
console.log(obj);
},
error: function (index, upload) {
var that = this;
var tr = $('#update').find('tr#upload-' + index);
var tds = tr.children();
// 显示重传
tds.eq(3).find('.demo-reload').removeClass('layui-hide');
},
progress: function (n, elem, e, index) {
element.progress('progress-demo-' + index, n + '%');
}
});
// 获取费用类型
fetch("/reimbursement/index/reimcate")
.then((response) => response.json())
.then((data) => {
var select = document.querySelector('select[name="cate"]');
select.innerHTML = '<option value="">请选择费用类型</option>';
data.data.forEach((cate) => {
var option = document.createElement("option");
option.value = cate.id;
option.innerText = cate.cate;
select.appendChild(option);
});
select.value = '{$detail.cate}';
form.render("select");
})
.catch((error) => {
console.error("Error:", error);
});
//监听提交结果
form.on("submit(webform)", function (data) {
fetch("/reimbursement/index/edititem", {
method: "POST",
body: JSON.stringify({
id: document.getElementById('id').value,
pid: document.getElementById('pid').value,
project: document.querySelector('select[name="project"]').value,
department: document.getElementById('department').value,
cate: document.querySelector('select[name="cate"]').value,
haveticket: document.querySelector('select[name="haveticket"]').value,
price: document.getElementById('price').value,
remark: document.getElementById('remark').value,
times: document.getElementById('times').value,
tickets: document.getElementById('ticketsInput').value,
}),
headers: {
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((result) => {
layer.msg(result.msg, {
time: 1000,
end: function () {
if (result.code === 0) {
var index = window.parent.layer.getFrameIndex(window.name);
window.parent.layer.close(index);
window.parent.layui.table.reload('reimbursementdetail'); // 刷新表格
}
}
});
});
return false;
});
}
</script>
<script>
// 获取是否有票选择框元素
const haveticketSelect = document.querySelector('select[name="haveticket"]');
// 获取上传票据区域元素
const uploadSection = document.querySelector('#ID-upload-demo-drag');
// 获取无票提示信息元素
const noTicketMsg = document.getElementById('no-ticket-msg');
// 初始隐藏上传票据区域
uploadSection.style.display = 'none';
// 监听是否有票选择框的change事件
haveticketSelect.addEventListener('change', function () {
// 如果选择了有票
if (haveticketSelect.value === '有') {
// 显示上传票据区域
uploadSection.style.display = 'block';
// 隐藏无票提示信息
noTicketMsg.style.display = 'none';
} else {
// 否则隐藏上传票据区域
uploadSection.style.display = 'none';
// 显示无票提示信息
noTicketMsg.style.display = 'block';
}
});
</script>
<script src="/static/assets/layui/layui.js"></script>
<script src="/static/assets/gougu/gouguInit.js"></script>
+257
View File
@@ -0,0 +1,257 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/application/nav/index"><cite>应用</cite></a>
<a><cite>报销管理</cite></a>
</span>
{/block} {block name="body"}
<div class="table-content p-3">
<div class="table_bar sticky-bar">
<div class="layui-form-bar border-t border-x">
<button class="layui-btn layui-btn-sm add-new">+ 新建报销</button>
<button class="layui-btn layui-btn-sm" id="refresh-btn">刷新</button>
<button class="layui-btn layui-btn-sm" id="batch_delete">批量删除</button>
</div>
</div>
<table class="layui-hide" id="reimbursement" lay-filter="reimbursement"></table>
<span id="total-price"></span>
</div>
{/block}
<!-- 脚本 -->
{block name="script"}
<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;
// 刷新按钮
$("#refresh-btn").on("click", function () {
location.reload();
});
//新增报销
$(".add-new").on("click", function () {
tool.open("/reimbursement/index/add");
});
layui.table.on('checkbox(reimbursement)', function (obj) {
var checkStatus = layui.table.checkStatus('reimbursement');
var data = checkStatus.data;
// 修改开始:计算合计金额并显示
var totalPrice = data.reduce((acc, curr) => acc + parseFloat(curr.price || 0), 0).toFixed(2); // 确保结果为两位小数
document.getElementById('total-price').innerText = '合计金额:¥' + totalPrice;
// 修改结束
});
//查看详情唤醒view界面
table.on('tool(reimbursement)', function (obj) {
var data = obj.data; // 获取当前行的数据
// console.log(data);
if (obj.event === 'view') {
var id = data.id; // 获取当前行数据的id
// console.log(id);
// 使用layer弹出层来显示详情页面
layui.layer.open({
type: 2, // iframe层
title: '报销详情',
shadeClose: true,
shade: 0.8,
area: ['70%', '90%'], // 宽高
content: '/reimbursement/index/view?id=' + id,
end: function () {
// 弹出层关闭时刷新当前页面
layui.table.reload('reimbursement');
}
});
} else if (obj.event === 'delete') {
layui.layer.confirm(
"确定删除该条数据吗?",
{ icon: 3, title: "提示" },
function (index) {
$.post(
"/reimbursement/index/delete",
{ id: data.id },
function (res) {
if (res.code === 1) {
layui.layer.confirm("该表单含有内部数据,确定要删除吗?", { icon: 3, title: "提示" }, function (innerIndex) {
$.post(
"/reimbursement/index/delete",
{ id: data.id },
function (innerRes) {
if (innerRes.code === 1) {
layui.layer.msg("删除成功");
obj.del(); // 删除行数据
} else {
layui.layer.msg(innerRes.msg);
}
}
);
layui.layer.close(innerIndex);
});
} else if (res.code === 0) {
layui.layer.msg("删除成功");
obj.del(); // 删除行数据
} else {
layui.layer.msg(res.msg);
}
}
);
layui.layer.close(index);
}
);
}
});
//批量删除数据
$("#batch_delete").on("click", function () {
var checkStatus = table.checkStatus('reimbursement');
var data = checkStatus.data;
var ids = data.map(item => item.id);
if (ids.length === 0) {
layui.layer.msg("请选择要删除的数据");
return;
}
layui.layer.confirm(
"确定删除选中的计划吗?",
{ icon: 3, title: "提示" },
function (index) {
$.post(
"/reimbursement/index/batch_delete",
{ ids: ids },
function (res) {
if (res.code === 0) {
layui.layer.msg("批量删除成功");
loadTableData(); // 重新加载表格数据
} else {
layui.layer.msg(res.msg);
}
}
);
layui.layer.close(index);
}
);
});
// 重载表格
function loadTableData() {
layui.pageTable.reload();
}
// 渲染表格
layui.pageTable = layui.table.render({
elem: "#reimbursement",
toolbar: '#toolbarDemo',
defaultToolbar: ['filter', 'exports', 'print', {
title: '计划列表',
layEvent: 'LAYTABLE_TIPS',
icon: 'layui-icon-tips'
}],
cellMinWidth: 80,
url: "/reimbursement/index/index", // 数据接口
page: true,
limit: 50,
// totalRow: true,
cols: [
[
{ type: 'checkbox' },
{ field: 'id', width: 80, title: '编号', sort: true, align: "center", totalRowText: '合计:' },
{
field: "order",
title: "账单编号",
align: "center",
width: 180,
rowspan: 2,
templet: function (d) {
var html =
'<span class="a1-' + d.order + '">' + d.order + "</span>";
return html;
},
},
{
field: "create_time",
title: "创建时间",
align: "center",
width: 180,
rowspan: 2,
},
{
field: "status",
title: "报销状态",
align: "center",
width: 120,
rowspan: 2,
},
{
field: "lock",
title: "账单状态",
align: "center",
width: 120,
rowspan: 2,
},
{
field: "department",
title: "隶属部门",
align: "center",
width: 120,
rowspan: 2,
},
{
field: "total",
title: "报销金额",
width: 120,
align: "center",
rowspan: 2,
},
{
field: "creater",
title: "创建者",
width: 120,
align: "center",
rowspan: 2,
},
{
field: "remark",
title: "备注",
align: "center",
rowspan: 2,
},
{
fixed: 'right',
title: "操作",
align: "center",
width: 220,
minWidth: 220,
toolbar: "#barDemo",
},
],
],
});
// 每隔5秒刷新表格数据
// setInterval(function () {
// loadTableData();
// }, 5000);
}
</script>
<script type="text/html" id="barDemo">
<a class="layui-btn layui-btn-xs " id="view" lay-event="view">查看详情</a>
<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="delete">删除</a>
</script>
{/block}
+428
View File
@@ -0,0 +1,428 @@
<!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">
<h3 class="h3-title hover">
<span>基本信息</span>
</h3>
</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.create_time}
</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>
{$detail.creater}
</td>
<td class="layui-td-gray-2">账单状态
</td>
<td>
{$detail.lock}
<a href="javascript:;" onclick="editlock('{$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/viewitem?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",
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",
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>
+43
View File
@@ -0,0 +1,43 @@
{extend name="../../base/view/common/base" /}
<!-- 主体 -->
{block name="breadcrumb"}
<span class="layui-breadcrumb">
<a href="http://www.meteteme.com/" target="_blank">江苏美天科技</a>
<a href="/application/nav/index"><cite>应用</cite></a>
</span>
{/block}
{block name="body"}
<div class="table-content p-3">
<div class="layui-form-bar border-t border-x" style="display: flex; justify-content: center;align-items: center;height: 94vh !important;">
<div class="btn_l">
<button class="layui-btn diy-button">
<strong>文件中转</strong>
<p>服务器内部资源跳转外部</p>
</button>
</div>
<div class="btn_r">
<button class="layui-btn diy-button layui-bg-purple">
<strong>报销管理</strong>
<p>存储员工报销数据电子档</p>
</button>
</div>
</div>
</div>
{/block}
<!-- /主体 -->
<!-- 脚本 -->
{block name="script"}
<script>
//跳转文件中转
$('.btn_l button').click(function(){
window.location.href = '/picbed/index/index';
});
//跳转Demos管理
$('.btn_r button').click(function(){
window.location.href = '/reimbursement/index/index';
});
</script>
{/block}
<!-- /脚本 -->