更新数据关联查询,以及基本的数据的编辑,部分有待进一步完善。

This commit is contained in:
panx
2025-01-06 00:06:03 +08:00
parent d70fcccc1d
commit 018322d8c1
22 changed files with 1693 additions and 748 deletions

View File

@@ -44,12 +44,12 @@
<div class="layui-inline layui-hide" id="toolbar">
<!-- // 打开添加页面 -->
<button class="layui-btn icon-btn" lay-open="add" data-title="{:__('添加BOM')}" data-area="600px"
data-url="#editforms" callback="edit">
data-url="#editforms_bom" callback="edit">
<i class="layui-icon layui-icon-add-1"></i>{:__('添加')}
</button>
<!-- // 修改页面 -->
<button class="layui-btn icon-btn" lay-open="edit" data-title="{:__('修改BOM')}" data-area="600px"
data-url="#editforms" callback="edit">
data-url="#editforms_bom" callback="edit">
<i class="layui-icon layui-icon-edit"></i>{:__('修改')}
</button>
<!-- // 删除所有 -->
@@ -67,23 +67,58 @@
</div>
</div>
<div class="layui-col-md8">
<div class="layui-col-md8" >
<!-- // 展示数据 -->
<div class="layui-fluid">
<div class="layui-card">
<!-- // 默认操作按钮 -->
<div class="layui-card-header layadmin-card-header-auto ">
<div class="layui-form">
<!-- // 自定义搜索参数 -->
<div id="laytable-search" class="layui-form-item">
<div class="layui-inline">
<div class="layui-form-label">{:__('Partnumber')}</div>
<div class="layui-input-inline ">
<input name="partnumber" class="layui-input" type="text" placeholder="{:__('Partnumber')}" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">{:__('Purchasecode')}</label>
<div class="layui-input-inline ">
<input name="purchasecode" class="layui-input" type="text" placeholder="{:__('Purchasecode')}" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">{:__('Value')}</label>
<div class="layui-input-inline ">
<input name="value" class="layui-input" type="text" placeholder="{:__('Value')}" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">{:__('MPN')}</label>
<div class="layui-input-inline ">
<input name="mpn" class="layui-input" type="text" placeholder="{:__('MPN')}" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">{:__('Reference')}</label>
<div class="layui-input-inline ">
<input name="reference" class="layui-input" type="text" placeholder="{:__('Reference')}" />
</div>
</div>
</div>
<div class="layui-form-item">
<!-- <div class="layui-inline">
<div class="layui-input-inline">
<select name="status">
<option value="">{:__('按状态查询')}</option>
<option value="2" >{:__('正常')}</option>
<option value="1" >{:__('关闭')}</option>
</select>
</div>
</div> -->
<div class="layui-input-inline">
<select name="status">
<option value="">{:__('按状态查询')}</option>
<option value="2" >{:__('正常')}</option>
<option value="1" >{:__('关闭')}</option>
</select>
</div>
</div> -->
<div class="layui-inline">
<div class="layui-input-inline ">
@@ -105,6 +140,12 @@
data-url="{:url('/PdmPartlist/del')}">
<i class="layui-icon layui-icon-delete"></i>{:__('删除')}
</button>
<!-- 自定义导出按钮 -->
<button id="exportExcel" class="layui-btn layui-btn-primary">
<i class="layui-icon layui-icon-export"></i> 导出 Excel
</button>
</div>
</div>
</div>
@@ -116,6 +157,74 @@
</div>
</div>
<!-- // 添加编辑数据 -->
<section id="editforms_bom" class="layui-hide">
<div class="layui-fluid layui-bg-white">
<form class="layui-form layui-form-fixed" lay-filter="editforms_bom">
<input type="text" name="id" hidden="">
<input type="text" class="pid" name="pid" value="{$pid}" hidden="">
<!-- <div class="layui-form-item">
<label class="layui-form-label">{:__('Item')}</label>
<div class="layui-input-block">
<input name="item" placeholder="{:__('请输入item')}" type="text" class="layui-input" lay-verify="" />
</div>
</div> -->
<div class="layui-form-item">
<label class="layui-form-label"><span style="color: red; ">* </span>{:__('BOM编码')}</label>
<div class="layui-input-block">
<input name="partnumber" placeholder="{:__('请输入BOM编码')}" type="text" class="layui-input" lay-verify="required" />
</div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">{:__('位号')}</label>
<div class="layui-input-block">
<input name="reference" placeholder="{:__('请输入位号')}" class="layui-input" lay-verify="" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{:__('用量')}</label>
<div class="layui-input-block">
<input name="quantity" placeholder="{:__('请输入用量')}" class="layui-input" lay-verify="" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{:__('单位')}</label>
<div class="layui-input-block">
<input name="unit" placeholder="{:__('请输入单位')}" class="layui-input" lay-verify="" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">{:__('排序号')}</label>
<div class="layui-input-block">
<input name="sort" placeholder="{:__('默认自动生成')}" type="number" class="layui-input" />
</div>
</div> -->
<div class="layui-form-item">
<label class="layui-form-label">{:__('BOM备注')}</label>
<div class="layui-input-block">
<textarea name="content" id="content" style="min-height: 80px;" placeholder="{:__('请输入BOM备注')}"
class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-footer layui-form-item layui-center">
<button class="layui-btn layui-btn-primary" type="button"
sa-event="closePageDialog">{:__('取消')}</button>
<button class="layui-btn" lay-add="{:url('/PdmPartlist/add')}" lay-edit="{:url('/PdmPartlist/edit')}"
lay-filter="submitPage" lay-submit>{:__('提交')}</button>
</div>
</form>
</div>
</section>
<!-- // 添加编辑数据 -->
<section id="editforms" class="layui-hide">
<div class="layui-fluid layui-bg-white">
@@ -189,6 +298,13 @@
<a class="layui-table-text" data-url="{:url('/PdmPartlist/del')}?id={{d.id}}" lay-event="del" >{:__('删除')}</a>
</script>
<script type="text/html" id="tableButton"></script>
<!-- 在页面底部(通常在 </body> 标签之前)引入 SheetJS 库 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
<include file="/public/footer" />
<script>
layui.use(['admin', 'jquery', 'table', 'form'], function () {
@@ -197,6 +313,7 @@
let $ = layui.jquery;
let table = layui.table;
let form = layui.form;
let count = {$count|default=300};
// 定义表格URL
let tableURL = "{:url('/PdmPartlist/index')}";
@@ -221,7 +338,11 @@
let isTable = table.render({
elem: "#lay-tableList"
, url: tableURL
,toolbar: '#tableButton'
// ,defaultToolbar: ['filter', 'exports', 'print', 'search']
,defaultToolbar: ['filter', 'print', 'search']
, page: true
//, page: false
, limit: 18
, cols: [[
{type: 'checkbox'},
@@ -248,7 +369,7 @@
{ align: 'center', toolbar: '#tableBar', width: 135, fixed:'right', title: '{:__("操作")}' },
]]
})
// 表格选择行事件
table.on('radio(lay-tableGroup)', function (obj) {
let data = table.checkStatus('lay-tableGroup').data;
let ids = [];
@@ -265,10 +386,83 @@
// 获取最后点击
if (obj.checked === true) {
$('#editforms').find('.pid').attr('value', obj.data.id);
$('#editforms_bom').find('.pid').attr('value', obj.data.id);
}
}
});
// 自定义导出按钮点击事件
document.getElementById('exportExcel').addEventListener('click', function () {
// 确认用户希望导出全部数据
layer.confirm('确定导出所有数据到 Excel 吗?', { icon: 3, title: '导出确认' }, function(index){
layer.close(index);
exportAllDataToExcel();
});
});
// 自定义导出功能
function exportAllDataToExcel(){
// 获取当前的过滤条件例如pid
let selectedData = table.checkStatus('lay-tableGroup').data;
let pid = selectedData.length ? selectedData[0].id : 0;
// 异步获取所有数据(不分页)
layer.msg('异步获取所有数据不分页超时限制30s');
$.ajax({
url: tableURL + "?pid=" + pid + "&export=1&limit=" +count ,// 后端需要根据 'export=1' 返回所有数据
// method: 'GET',
type: 'POST',
dataType: 'json',
timeout: 30000,
success: function(res){
if(res.code === 200){
layer.msg('获取数据总数:'+ res.data.length);
let data = res.data;
if(data.length === 0){
layer.msg('没有数据可导出');
return;
}
// 转换数据为 SheetJS 格式
layer.msg('转换数据为 SheetJS 格式');
// let worksheetData = data.map(row => {
let worksheetData = data.map(row => {
return {
'Item': row.item,
'Partnumber': row.partnumber,
'Parttype': row.parttype,
'Purchasecode': row.purchasecode,
'Value': row.value,
'Description': row.description,
'MPN': row.mpn,
'MFG': row.mfgname,
'Footprint': row.footprint,
'Manufacture': row.manufacture,
'Reference': row.reference,
'Quantity': row.quantity,
'Unit': row.unit,
'备注': row.content,
// 添加其他需要导出的字段
};
});
// 创建工作簿和工作表
layer.msg('创建工作簿和工作表');
let worksheet = XLSX.utils.json_to_sheet(worksheetData);
let workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, "BOM数据");
// 生成 Excel 文件并下载,设置自定义文件名
const filename = "BOM_Export_" + new Date().toISOString().slice(0,10) + ".xlsx"; // 自定义文件名
layer.msg('生成 Excel 文件并下载,设置自定义文件名:'+filename);
XLSX.writeFile(workbook, filename);
layer.msg('生成 Excel 文件并下载,文件名:'+filename);
}
},
error: function(res){
layer.msg('数据获取失败,请稍后重试:'+res.msg);
}
});
}
// 全局回调函数
admin.callback.edit = function (clickthis, colletction, config) {
@@ -278,6 +472,7 @@
if (action === 'edit') {
status = false;
form.val('editforms', data[0]);
form.val('editforms_bom', data[0]);
}
form.on("submit(submitPage)", function (post) {