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

349 lines
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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/editdetailitem", {
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>