349 lines
15 KiB
HTML
349 lines
15 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;
|
||
}
|
||
</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> |