220 lines
8.6 KiB
JavaScript
Raw Normal View History

2025-08-13 11:14:39 +08:00
/* * PIT-ADMS V7.0.3 敏捷开发框架
* Copyright (c) 2013-2018 Hexagon PPM
* 创建人超级管理员
* 2022-02-24 11:10
* LOOKUP
*/
var ProjectId = request('ProjectId');
var SP_ID = request('SP_ID');
var table;
var bootstrap = function ($, learun) {
"use strict";
var page = {
init: function () {
page.bind();
page.initData();
},
bind: function () {
// 新增
$('#lr_add').on('click', function () {
let newRowData = {};
// **获取表格的所有列名**
let columnNames = table.columns().header().toArray().map(th => $(th).text().trim());
let firstColumn = columnNames[0]; // 第一列 (recordNumber)
columnNames = columnNames.slice(1); // 移除第一列,用户不输入它
// **获取当前最大 recordNumber 并 +1**
let maxRecordNum = 0;
table.rows().data().each(row => {
let recordNum = parseInt(row[firstColumn]) || 0;
if (recordNum > maxRecordNum) maxRecordNum = recordNum;
});
newRowData[firstColumn] = maxRecordNum + 1; // 生成新的 recordNumber
// **让用户输入每列的数据**
for (let col of columnNames) {
if (col != firstColumn) {
let value = prompt(`请输入 ${col} 的值:`);
if (value === null) return; // 取消输入则终止
newRowData[col] = value;
}
}
// **1. 添加到 DataTable**
table.row.add(newRowData).draw(false);
//// **2. 发送数据到后端**
//$.ajax({
// type: "POST",
// url: "/ZZDT_EC/ec_LookupTable/AddData",
// contentType: "application/json",
// data: JSON.stringify(newRowData),
// success: function (response) {
// alert("数据添加成功!");
// },
// error: function (xhr, status, error) {
// console.error("添加失败:", error);
// alert("数据添加失败!");
// }
//});
});
// 删除
$('#lr_delete').on('click', function () {
let selectedRow = table.row(".selected");
if (!selectedRow.data()) {
alert("请先选择一行数据!");
return;
}
let rowData = selectedRow.data(); // 获取选中行数据
console.log("最终要删除的 JSON 数据:", rowData);
// 发送 AJAX 请求给后端
$.ajax({
type: "POST",
url: top.$.rootUrl + '/ZZDT_EC/ec_LookupTable/DeleteData',
contentType: "application/json",
data: JSON.stringify({ ProjectId: ProjectId, lookupTableId: SP_ID, strEntity: JSON.stringify(rowData) }),
success: function (response) {
learun.alert.success("删除成功!");
selectedRow.remove().draw(false); // **从表格中移除行**
},
error: function (xhr, status, error) {
console.error("删除失败:", error);
alert("数据保存失败!");
}
});
});
// 保存
$('#lr_save').on('click', function () {
let tableData = [];
$('#dynamicTable tbody tr').each(function () {
let rowData = {};
$(this).find('td').each(function (index) {
let colName = table.column(index).header().textContent.trim(); // 获取列名
let cellValue = $(this).find('input').length ? $(this).find('input').val() : $(this).text().trim(); // 获取值
rowData[colName] = cellValue;
});
tableData.push(rowData);
});
console.log("最终要提交的 JSON 数据:", tableData);
// 发送 AJAX 请求给后端
$.ajax({
type: "POST",
url: top.$.rootUrl + '/ZZDT_EC/ec_LookupTable/SaveData',
contentType: "application/json",
data: JSON.stringify({ ProjectId: ProjectId, lookupTableId: SP_ID, strEntity: JSON.stringify(tableData) }),
success: function (response) {
learun.alert.success("数据保存成功!");
},
error: function (xhr, status, error) {
console.error("保存失败:", error);
alert("数据保存失败!");
}
});
});
},
initData: function () {
// 初始化下拉列表并配置数据
$.ajax({
type: 'GET',
url: top.$.rootUrl + '/ZZDT_EC/ec_LookupTable/GetDataRecord?ProjectId=' + ProjectId + '&lookupTableId=' + SP_ID,
traditional: true,
success: function (response) {
if (typeof response === "string") {
console.log("response 是字符串,尝试解析 JSON");
response = JSON.parse(response);
}
if (!response || !response.data) {
console.error("response.data 为空!完整 response", response);
alert("数据为空!");
return;
}
var data = response.data;
// 获取列名(从返回的第一条数据提取字段)
const columns = Object.keys(data[0]).map(col => ({
title: col, data: col
}));
// 销毁已有的 DataTable避免重复初始化
if ($.fn.DataTable.isDataTable("#dynamicTable")) {
$("#dynamicTable").DataTable().destroy();
}
// 渲染 DataTable
table = $("#dynamicTable").DataTable({
data: data,
columns: columns,
destroy: true, // 允许销毁旧表格重新渲染
searching: true, // 开启搜索
sort: false,
columnDefs: [
{ width: "80px", targets: 0 }, // 第一列宽度 80px
]
});
// 双击编辑(除了第一列)
$('#dynamicTable tbody').on('dblclick', 'td:not(.no-edit)', function () {
let colIndex = table.cell(this).index().column;
if (colIndex === 0) {
return; // **第一列不允许编辑,直接返回**
}
let cell = table.cell(this);
let oldValue = cell.data();
let input = `<input type="text" value="${oldValue}" class="editing-input">`;
// 替换单元格为输入框
cell.data(input).draw(false);
// 自动聚焦并处理失去焦点或回车保存
let inputField = $(this).find('input');
inputField.focus().select();
inputField.on('blur keypress', function (e) {
if (e.type === 'blur' || (e.type === 'keypress' && e.which === 13)) {
let newValue = $(this).val();
cell.data(newValue).draw(false); // 更新 DataTable 数据
}
});
});
},
error: function (msg) {
console.log('2');
learun.loading(false);
},
complete: function (data) {
console.log('3');
}
});
}
};
page.init();
}
//文字特殊字符及最大长度检测
function verify() {
return true;
}