385 lines
14 KiB
HTML
385 lines
14 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">
|
||
<!-- <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> |