更新数据关联查询,以及基本的数据的编辑,部分有待进一步完善。
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user