2026821
This commit is contained in:
@@ -0,0 +1,925 @@
|
||||
const { createApp, ref, reactive, computed, onMounted, onBeforeUnmount } = Vue;
|
||||
function getControlValue(controlId) {
|
||||
const exact = document.getElementById(controlId);
|
||||
if (exact && typeof exact.value !== 'undefined') {
|
||||
return exact.value || '';
|
||||
}
|
||||
const bySuffix = document.querySelector(`[id$="${controlId}"]`);
|
||||
if (bySuffix && typeof bySuffix.value !== 'undefined') {
|
||||
return bySuffix.value || '';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
const BJU061 = getControlValue('txtBJU061');
|
||||
|
||||
const app = createApp({
|
||||
setup() {
|
||||
|
||||
/* ===== 基础状态 ===== */
|
||||
const loading = ref(false);
|
||||
const enableSJDC = ref(false);
|
||||
const queryDrawerVisible = ref(false);
|
||||
const tableContainer = ref(null);
|
||||
|
||||
const detailDialogVisible = ref(false);
|
||||
const detailBasicInfo = ref({});
|
||||
const detailMaterialList = ref([]);
|
||||
|
||||
/* ===== 表格 ===== */
|
||||
const tableWidth = ref(1600);
|
||||
const tableHeight = ref(800);
|
||||
const tableVersion = ref(0);
|
||||
|
||||
const dicCLMC = ref({});
|
||||
const dicCLJG = ref({});
|
||||
const dicCLWL = ref({});
|
||||
|
||||
const items = ref([]);
|
||||
const filteredItems = ref([]);
|
||||
|
||||
/* ===== 分页 ===== */
|
||||
const currentPage = ref(1);
|
||||
const pageSize = ref(5000);
|
||||
|
||||
const total = computed(() => filteredItems.value.length);
|
||||
|
||||
const pagedData = computed(() => {
|
||||
const start = (currentPage.value - 1) * pageSize.value;
|
||||
const end = start + pageSize.value;
|
||||
return filteredItems.value.slice(start, end);
|
||||
});
|
||||
|
||||
const handleSizeChange = (val) => {
|
||||
pageSize.value = val;
|
||||
currentPage.value = 1;
|
||||
};
|
||||
|
||||
const calcTableSize = () => {
|
||||
const container = tableContainer.value;
|
||||
if (!container) return;
|
||||
|
||||
tableWidth.value = container.clientWidth;
|
||||
tableHeight.value = container.clientHeight;
|
||||
|
||||
console.log('calcTableSize', tableWidth.value, tableHeight.value);
|
||||
};
|
||||
|
||||
const handleCurrentChange = (val) => {
|
||||
currentPage.value = val;
|
||||
};
|
||||
|
||||
/* ===== 动态列 ===== */
|
||||
|
||||
const COLUMN_MIN_WIDTH_MAP = {
|
||||
|
||||
};
|
||||
|
||||
const dynamicWidths = reactive({});
|
||||
const dynamicColumns = ref([]);
|
||||
|
||||
const columns = computed(() => {
|
||||
return dynamicColumns.value.map(col => ({
|
||||
key: col.prop,
|
||||
dataKey: col.prop,
|
||||
title: col.label,
|
||||
width:
|
||||
dynamicWidths[col.prop] ||
|
||||
COLUMN_MIN_WIDTH_MAP[col.prop] ||
|
||||
120
|
||||
}));
|
||||
});
|
||||
|
||||
const generateColumns = () => {
|
||||
|
||||
const cols = [];
|
||||
// ===== 固定基础列 =====
|
||||
cols.push(
|
||||
{ label: '型号', prop: 'XLXSCLQD_XLXHID', width: 120 },
|
||||
{ label: '规格', prop: 'XLXSCLQD_XLGGID', width: 120 },
|
||||
{ label: '标准', prop: 'XLBZ', width: 60 },
|
||||
{ label: '电压等级', prop: 'XLXSCLQD_DYDJID', width: 80 },
|
||||
{ label: '物料编码', prop: 'WLID', width: 80 },
|
||||
{ label: '物料信息', prop: 'WLXX', width: 180 },
|
||||
{ label: '计量单位', prop: 'JLDW', width: 60 },
|
||||
{ label: '材料重量', prop: 'XLXSCLQD_CLZL', width: 80 },
|
||||
{ label: '材料成本', prop: 'CLCB', width: 80 }
|
||||
);
|
||||
|
||||
// ===== 动态 01~10 列 =====
|
||||
for (let i = 1; i <= 80; i++) {
|
||||
const index = i.toString().padStart(2, '0');
|
||||
|
||||
cols.push(
|
||||
{ label: `第${index}列`, prop: `XLXSCLQD_SL${index}`, width: 80 },
|
||||
{ label: `第${index}列价格`, prop: `CLJG${index}`, width: 100 },
|
||||
{ label: '材料物料', prop: `XLXSCLWL${index}`, width: 100 },
|
||||
{ label: '物料价格(元/Kg)', prop: `XLXSCLWLJG${index}`, width: 120 },
|
||||
{ label: '物料成本', prop: `XLXSCLWLCB${index}`, width: 100 }
|
||||
);
|
||||
}
|
||||
|
||||
// ===== 尾部列 =====
|
||||
cols.push(
|
||||
{ label: '备注', prop: 'XLXSCLQD_BZ', width: 150 },
|
||||
{ label: '维护人', prop: 'XLXSCLQD_WHR', width: 80 },
|
||||
{ label: '维护时间', prop: 'XLXSCLQD_WHSJ', width: 150 }
|
||||
);
|
||||
|
||||
dynamicColumns.value = cols;
|
||||
|
||||
|
||||
|
||||
tableVersion.value++;
|
||||
};
|
||||
|
||||
const buildDynamicMaterialColumns = () => {
|
||||
|
||||
const cols = [];
|
||||
// ===== 固定基础列 =====
|
||||
cols.push(
|
||||
{ label: '型号', prop: 'XLXSCLQD_XLXHID', width: 120 },
|
||||
{ label: '规格', prop: 'XLXSCLQD_XLGGID', width: 120 },
|
||||
{ label: '标准', prop: 'XLBZ', width: 60 },
|
||||
{ label: '电压等级', prop: 'XLXSCLQD_DYDJID', width: 80 },
|
||||
{ label: '物料编码', prop: 'WLID', width: 80 },
|
||||
{ label: '物料信息', prop: 'WLXX', width: 180 },
|
||||
{ label: '计量单位', prop: 'JLDW', width: 60 },
|
||||
{ label: '材料重量', prop: 'XLXSCLQD_CLZL', width: 80 },
|
||||
{ label: '材料成本', prop: 'CLCB', width: 80 }
|
||||
);
|
||||
|
||||
// ===== 动态 01~10 列 =====
|
||||
for (let i = 1; i <= 80; i++) {
|
||||
|
||||
const index = i.toString().padStart(2, '0');
|
||||
const key = `第${index}列`;
|
||||
|
||||
const hasCLMC = dicCLMC.value[key] && dicCLMC.value[key].trim() !== '';
|
||||
const hasCLWL = dicCLWL.value[key];
|
||||
|
||||
// ===== 如果 CLMC 不存在 → 整组隐藏 =====
|
||||
if (!hasCLMC) continue;
|
||||
|
||||
// ===== 1️⃣ 材料数量列 =====
|
||||
cols.push({
|
||||
label: dicCLMC.value[key] || `第${index}列`,
|
||||
prop: `XLXSCLQD_SL${index}`,
|
||||
width: 80
|
||||
});
|
||||
|
||||
// ===== 2️⃣ 材料价格列 =====
|
||||
if (!hasCLWL) {
|
||||
cols.push({
|
||||
label: dicCLJG.value[key] || `价格`,
|
||||
prop: `CLJG${index}`,
|
||||
width: 100
|
||||
});
|
||||
}
|
||||
|
||||
// ===== 3️⃣ 物料列 =====
|
||||
if (hasCLWL) {
|
||||
|
||||
cols.push(
|
||||
{
|
||||
label: dicCLWL.value[key] || '材料物料',
|
||||
prop: `XLXSCLWL${index}`,
|
||||
width: 100
|
||||
},
|
||||
{
|
||||
label: '物料价格(元/Kg)',
|
||||
prop: `XLXSCLWLJG${index}`,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
label: '物料成本',
|
||||
prop: `XLXSCLWLCB${index}`,
|
||||
width: 100
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// ===== 尾部列 =====
|
||||
cols.push(
|
||||
{ label: '备注', prop: 'XLXSCLQD_BZ', width: 150 },
|
||||
{ label: '维护人', prop: 'XLXSCLQD_WHR', width: 80 },
|
||||
{ label: '维护时间', prop: 'XLXSCLQD_WHSJ', width: 150 }
|
||||
);
|
||||
|
||||
dynamicColumns.value = cols;
|
||||
|
||||
|
||||
|
||||
tableVersion.value++;
|
||||
};
|
||||
|
||||
const handleRowDblClick = (row) => {
|
||||
//查询条件尺重表号为空
|
||||
if (!queryConditions.structureWeightTableCode) return;
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetCLCBMX',
|
||||
false,
|
||||
{
|
||||
sXLXHID: row.XLXSCLQD_XLXHID,
|
||||
sXLGGID: row.XLXSCLQD_XLGGID,
|
||||
sXLBZID: row.XLBZ ? row.XLBZ.split('|')[0] : '',
|
||||
sDYDJID: row.XLXSCLQD_DYDJID,
|
||||
sHSJGBZ: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
sJGBID:queryConditions.jgbid
|
||||
},
|
||||
(result) => {
|
||||
|
||||
if (!result) return;
|
||||
|
||||
/* ========= 基本信息 ========= */
|
||||
detailBasicInfo.value = {
|
||||
型号: result.Model,
|
||||
规格: result.Specification,
|
||||
标准: row.XLBZ,
|
||||
电压等级: result.VoltageLevel,
|
||||
计量单位: result.Unit,
|
||||
材料重量: result.MaterialWeight,
|
||||
材料成本: result.MaterialCost,
|
||||
结构尺重表: jgczbOptions.value.find(
|
||||
item => item.value === queryConditions.structureWeightTableValue
|
||||
)?.label || '',
|
||||
备注: result.Remark,
|
||||
维护人: result.Maintainer,
|
||||
维护时间: result.MaintainTime
|
||||
};
|
||||
|
||||
/* ========= 明细表 ========= */
|
||||
detailMaterialList.value = result.Materials.map(item => ({
|
||||
材料编码: item.MaterialCode,
|
||||
材料名称: item.MaterialName,
|
||||
物料信息: item.MaterialInfo,
|
||||
材料用量: item.MaterialUsage,
|
||||
材料比例: item.MaterialUsageRatio,
|
||||
材料损耗率: item.MaterialLossRate,
|
||||
材料价格: item.MaterialPrice,
|
||||
材料成本: item.MaterialCost
|
||||
}));
|
||||
|
||||
detailDialogVisible.value = true;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
const rowEventHandlers = {
|
||||
onDblclick: ({ rowData }) => {
|
||||
handleRowDblClick(rowData);
|
||||
}
|
||||
};
|
||||
|
||||
const getDic = () => {
|
||||
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || '',
|
||||
Standard: queryConditions.standard || '',
|
||||
Specification: queryConditions.specification || '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: queryConditions.orderOption || '',
|
||||
PageSize: queryConditions.pageSize || 5000,
|
||||
PageNum: queryConditions.pageNum || 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.servicePath =
|
||||
'S_XLXSBJ/102373017.ashx';
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetDic',
|
||||
false,
|
||||
{ condition: condition },
|
||||
(result) => {
|
||||
|
||||
dicCLMC.value = result.CLMC || {};
|
||||
dicCLJG.value = result.CLJG || {};
|
||||
dicCLWL.value = result.CLWL || {};
|
||||
console.log(dicCLMC);
|
||||
console.log(dicCLJG);
|
||||
console.log(dicCLWL);
|
||||
|
||||
|
||||
buildDynamicMaterialColumns(); // 字典拿到后重新生成列
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const getCLCBResults = () => {
|
||||
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || '',
|
||||
Standard: queryConditions.standard || '',
|
||||
Specification: queryConditions.specification || '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: queryConditions.orderOption || '',
|
||||
PageSize: queryConditions.pageSize || 5000,
|
||||
PageNum: queryConditions.pageNum || 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
loading.value = true;
|
||||
console.log('helloworld');
|
||||
GThinking.Web.AjaxServiceProxy.servicePath =
|
||||
'S_XLXSBJ/102373017.ashx';
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetCLCBResults',
|
||||
false,
|
||||
{ condition: condition },
|
||||
(result) => {
|
||||
console.log(result);
|
||||
loading.value = false;
|
||||
|
||||
if (!result || result.length === 0) {
|
||||
items.value = [];
|
||||
filteredItems.value = [];
|
||||
return;
|
||||
}
|
||||
|
||||
// 现在 result 本身就是数组
|
||||
items.value = result;
|
||||
filteredItems.value = result;
|
||||
|
||||
currentPage.value = 1;
|
||||
}
|
||||
);
|
||||
};
|
||||
/* ===== 查询条件 ===== */
|
||||
|
||||
const queryConditions = reactive({
|
||||
structureWeightTableValue: '',
|
||||
structureWeightTableCode: '',
|
||||
structureWeightTableVersion: '',
|
||||
models: [],
|
||||
specification: '',
|
||||
standard: '',
|
||||
voltageLevel: '',
|
||||
iSHSJGCheck: true,
|
||||
iSWLCBCheck: false,
|
||||
orderOption: '型号+序号',
|
||||
pageSize: 5000,
|
||||
pageNum: 0,
|
||||
jgbid:'',
|
||||
fileContent: '',
|
||||
fileName: '',
|
||||
iSDRCX: 'N',
|
||||
iSDRCXChecked: false
|
||||
});
|
||||
|
||||
const handleResetFilter = () => {
|
||||
Object.keys(queryConditions).forEach(k => {
|
||||
if (Array.isArray(queryConditions[k])) {
|
||||
queryConditions[k] = [];
|
||||
} else if (typeof queryConditions[k] === 'boolean') {
|
||||
queryConditions[k] = false;
|
||||
} else {
|
||||
queryConditions[k] = '';
|
||||
}
|
||||
});
|
||||
queryConditions.iSDRCX = 'N';
|
||||
queryConditions.iSDRCXChecked = false;
|
||||
uploadRef.value?.clearFiles();
|
||||
};
|
||||
|
||||
const confirmQueryDrawer = () => {
|
||||
queryConditions.iSDRCX = queryConditions.iSDRCXChecked ? 'Y' : 'N';
|
||||
|
||||
queryDrawerVisible.value = false;
|
||||
getDic();
|
||||
buildDynamicMaterialColumns();
|
||||
getCLCBResults();
|
||||
};
|
||||
|
||||
const openQueryDrawer = () => {
|
||||
queryDrawerVisible.value = true;
|
||||
};
|
||||
|
||||
const sjdc = () => {
|
||||
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || '',
|
||||
Standard: queryConditions.standard || '',
|
||||
Specification: queryConditions.specification || '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: queryConditions.orderOption || '',
|
||||
PageSize: queryConditions.pageSize || 5000,
|
||||
PageNum: queryConditions.pageNum || 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'SJDC',
|
||||
false,
|
||||
{ condition: condition },
|
||||
(result) => {
|
||||
|
||||
if (!result) {
|
||||
alert("导出失败或没有数据");
|
||||
return;
|
||||
}
|
||||
|
||||
// 🔥 直接下载
|
||||
const a = document.createElement("a");
|
||||
a.href = result;
|
||||
a.download = ""; // 让浏览器自动用服务器文件名
|
||||
document.body.appendChild(a);
|
||||
a.click();
|
||||
document.body.removeChild(a);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ===== 下拉 ===== */
|
||||
const jgbOptions = ref([]);
|
||||
const jgczbOptions = ref([]);
|
||||
const xhOptions = ref([]);
|
||||
const filteredXhOptions = ref([]);
|
||||
const modelLoading = ref(false);
|
||||
const standardOptions = ref([]);
|
||||
const dydjOptions = ref([]);
|
||||
const pxfsOptions = ref([
|
||||
{ label: '型号+序号', value: '型号+序号' },
|
||||
{ label: '尺重表内容导入行号', value: '尺重表内容导入行号' }
|
||||
]);
|
||||
|
||||
const uploadRef = ref(null);
|
||||
|
||||
const readExcelAsBase64 = (file) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
const base64 = e.target.result.split(',')[1];
|
||||
resolve(base64);
|
||||
};
|
||||
reader.onerror = reject;
|
||||
reader.readAsDataURL(file);
|
||||
});
|
||||
};
|
||||
|
||||
const validateExcelHeaders = async (file) => {
|
||||
return new Promise((resolve) => {
|
||||
const reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
try {
|
||||
const data = new Uint8Array(e.target.result);
|
||||
const workbook = XLSX.read(data, { type: 'array' });
|
||||
const firstSheetName = workbook.SheetNames[0];
|
||||
const worksheet = workbook.Sheets[firstSheetName];
|
||||
const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
|
||||
|
||||
if (jsonData.length === 0) {
|
||||
resolve({ valid: false, message: 'Excel文件为空' });
|
||||
return;
|
||||
}
|
||||
|
||||
const headers = jsonData[0].map(h => String(h).trim());
|
||||
const requiredHeaders = ['型号', '规格', '标准', '电压等级'];
|
||||
const missingHeaders = requiredHeaders.filter(h => !headers.includes(h));
|
||||
|
||||
if (missingHeaders.length > 0) {
|
||||
resolve({ valid: false, message: `缺少必要栏目:${missingHeaders.join(', ')}` });
|
||||
return;
|
||||
}
|
||||
|
||||
resolve({ valid: true });
|
||||
} catch (err) {
|
||||
resolve({ valid: false, message: '读取Excel文件失败' });
|
||||
}
|
||||
};
|
||||
reader.onerror = () => resolve({ valid: false, message: '读取文件失败' });
|
||||
reader.readAsArrayBuffer(file);
|
||||
});
|
||||
};
|
||||
|
||||
const handleFileChange = async (file, fileList) => {
|
||||
if (!file || !file.raw) return;
|
||||
|
||||
const fileName = file.raw.name;
|
||||
const extension = fileName.substring(fileName.lastIndexOf('.')).toLowerCase();
|
||||
|
||||
if (extension !== '.xlsx' && extension !== '.xls') {
|
||||
ElMessage.error('只能上传Excel文件(.xlsx, .xls)');
|
||||
uploadRef.value?.clearFiles();
|
||||
return;
|
||||
}
|
||||
|
||||
const validation = await validateExcelHeaders(file.raw);
|
||||
if (!validation.valid) {
|
||||
ElMessage.error(validation.message);
|
||||
uploadRef.value?.clearFiles();
|
||||
return;
|
||||
}
|
||||
|
||||
queryConditions.fileName = fileName;
|
||||
|
||||
const base64 = await readExcelAsBase64(file.raw);
|
||||
queryConditions.fileContent = base64;
|
||||
|
||||
ElMessage.success('文件上传成功');
|
||||
};
|
||||
|
||||
const handleFileRemove = () => {
|
||||
queryConditions.fileName = '';
|
||||
queryConditions.fileContent = '';
|
||||
};
|
||||
|
||||
const initOptionsData = () => {
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetJGBOptions',
|
||||
false,
|
||||
'',
|
||||
(result) => {
|
||||
if (!result || result.length === 0) {
|
||||
jgbOptions.value = [];
|
||||
queryConditions.jgbid = '';
|
||||
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || '',
|
||||
Standard: queryConditions.standard || '',
|
||||
Specification: queryConditions.specification || '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: queryConditions.orderOption || '',
|
||||
PageSize: queryConditions.pageSize || 5000,
|
||||
PageNum: queryConditions.pageNum || 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
loadOtherOptions(condition);
|
||||
return;
|
||||
}
|
||||
jgbOptions.value = result.map(item => ({
|
||||
value: item.Code, // 注意大小写
|
||||
label: item.Name
|
||||
}));
|
||||
queryConditions.jgbid = result[0].Code;
|
||||
console.log(result[0].Code)
|
||||
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || '',
|
||||
Standard: queryConditions.standard || '',
|
||||
Specification: queryConditions.specification || '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: queryConditions.orderOption || '',
|
||||
PageSize: queryConditions.pageSize || 5000,
|
||||
PageNum: queryConditions.pageNum || 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
loadOtherOptions(condition);
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const loadOtherOptions = (condition) => {
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetStructureWeightTableOptions',
|
||||
false,
|
||||
{ conditon: condition },
|
||||
(result) => {
|
||||
const allowedCodes = new Set(BJU061.split(',').map(code => code.trim()));
|
||||
// 2. 过滤结果:排除Code不在允许列表中的项,得到过滤后的有效数据
|
||||
const filteredResult =BJU061==''?result: result ? result.filter(item => allowedCodes.has(item.Code.split('|')[0])) : [];
|
||||
if (!filteredResult) {
|
||||
jgczbOptions.value = [];
|
||||
return;
|
||||
}
|
||||
jgczbOptions.value = filteredResult.map(item => ({
|
||||
value: item.Code, // 注意大小写
|
||||
label: item.Name
|
||||
}));
|
||||
}
|
||||
);
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetStandardOptions',
|
||||
false,
|
||||
false,
|
||||
(result) => {
|
||||
if (!result) {
|
||||
standardOptions.value = [];
|
||||
return;
|
||||
}
|
||||
standardOptions.value = result.map(item => ({
|
||||
value: item.Code, // 注意大小写
|
||||
label: item.Name
|
||||
}));
|
||||
}
|
||||
);
|
||||
|
||||
xhOptions.value = [];
|
||||
filteredXhOptions.value = [];
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetVoltageLevelOptions',
|
||||
false,
|
||||
{ conditon: condition },
|
||||
(result) => {
|
||||
if (!result) {
|
||||
dydjOptions.value = [];
|
||||
return;
|
||||
}
|
||||
dydjOptions.value = result.map(item => ({
|
||||
value: item.Code, // 注意大小写
|
||||
label: item.Name
|
||||
}));
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const remoteSearchModel = (query) => {
|
||||
if (!query) {
|
||||
filteredXhOptions.value = [];
|
||||
xhOptions.value = [];
|
||||
return;
|
||||
}
|
||||
|
||||
modelLoading.value = true;
|
||||
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: query,
|
||||
VoltageLevel: '',
|
||||
Standard: '',
|
||||
Specification: '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: '',
|
||||
PageSize: 100,
|
||||
PageNum: 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetModelOptions',
|
||||
false,
|
||||
{ conditon: condition },
|
||||
(result) => {
|
||||
modelLoading.value = false;
|
||||
if (!result) {
|
||||
filteredXhOptions.value = [];
|
||||
return;
|
||||
}
|
||||
const options = result.map(item => ({
|
||||
value: item.Code,
|
||||
label: item.Name
|
||||
}));
|
||||
filteredXhOptions.value = options;
|
||||
xhOptions.value = [...options];
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const handleStructureWeightChange = (val) => {
|
||||
if (!val) return;
|
||||
const arr = val.split('|');
|
||||
queryConditions.structureWeightTableCode = arr[0] || '';
|
||||
queryConditions.structureWeightTableVersion = arr[1] || '';
|
||||
const condition = {
|
||||
StructureWeightTableCode: queryConditions.structureWeightTableCode || '',
|
||||
StructureWeightTableVersion: queryConditions.structureWeightTableVersion || '',
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || '',
|
||||
Standard: queryConditions.standard || '',
|
||||
Specification: queryConditions.specification || '',
|
||||
ISHSJGCheck: queryConditions.iSHSJGCheck ? 'Y' : 'N',
|
||||
ISWLCBCheck: queryConditions.iSWLCBCheck ? 'Y' : 'N',
|
||||
OrderOption: queryConditions.orderOption || '',
|
||||
PageSize: queryConditions.pageSize || 5000,
|
||||
PageNum: queryConditions.pageNum || 0,
|
||||
JGBID: queryConditions.jgbid || '',
|
||||
ISDRCX:queryConditions.iSDRCX,
|
||||
FileContent:queryConditions.fileContent,
|
||||
FileName:queryConditions.fileName
|
||||
};
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
|
||||
xhOptions.value = [];
|
||||
filteredXhOptions.value = [];
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetVoltageLevelOptions',
|
||||
false,
|
||||
{ conditon: condition },
|
||||
(result) => {
|
||||
if (!result) {
|
||||
dydjOptions.value = [];
|
||||
return;
|
||||
}
|
||||
dydjOptions.value = result.map(item => ({
|
||||
value: item.Code, // 注意大小写
|
||||
label: item.Name
|
||||
}));
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
const loadStructureWeightTableOptions = () => {
|
||||
const condition = {
|
||||
Models: Array.isArray(queryConditions.models)
|
||||
? queryConditions.models.join(',')
|
||||
: (queryConditions.models || ''),
|
||||
VoltageLevel: queryConditions.voltageLevel || ''
|
||||
};
|
||||
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'GetStructureWeightTableOptions',
|
||||
false,
|
||||
{ conditon: condition },
|
||||
(result) => {
|
||||
const allowedCodes = new Set(BJU061.split(',').map(code => code.trim()));
|
||||
// 2. 过滤结果:排除Code不在允许列表中的项,得到过滤后的有效数据
|
||||
const filteredResult =BJU061==''?result:result ? result.filter(item => allowedCodes.has(item.Code.split('|')[0])) : [];
|
||||
|
||||
|
||||
if (!filteredResult || filteredResult.length === 0) {
|
||||
jgczbOptions.value = [];
|
||||
queryConditions.structureWeightTableValue = '';
|
||||
queryConditions.structureWeightTableCode = '';
|
||||
queryConditions.structureWeightTableVersion = '';
|
||||
return;
|
||||
}
|
||||
|
||||
jgczbOptions.value = filteredResult.map(item => ({
|
||||
value: item.Code,
|
||||
label: item.Name
|
||||
}));
|
||||
|
||||
if (filteredResult.length === 1) {
|
||||
queryConditions.structureWeightTableValue = filteredResult[0].Code;
|
||||
const arr = filteredResult[0].Code.split('|');
|
||||
queryConditions.structureWeightTableCode = arr[0] || '';
|
||||
queryConditions.structureWeightTableVersion = arr[1] || '';
|
||||
} else {
|
||||
queryConditions.structureWeightTableValue = '';
|
||||
queryConditions.structureWeightTableCode = '';
|
||||
queryConditions.structureWeightTableVersion = '';
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const handleModelChange = () => {
|
||||
loadStructureWeightTableOptions();
|
||||
};
|
||||
|
||||
const handleVoltageLevelChange = () => {
|
||||
loadStructureWeightTableOptions();
|
||||
};
|
||||
|
||||
/* ===== 自适应 ===== */
|
||||
|
||||
|
||||
|
||||
const checkEnableSJDC = () => {
|
||||
GThinking.Web.AjaxServiceProxy.servicePath = 'S_XLXSBJ/102373017.ashx';
|
||||
GThinking.Web.AjaxServiceProxy.invoke(
|
||||
'EnableSJDC',
|
||||
false,
|
||||
'',
|
||||
(result) => {
|
||||
enableSJDC.value = result === true;
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
calcTableSize();
|
||||
generateColumns();
|
||||
checkEnableSJDC();
|
||||
initOptionsData();
|
||||
|
||||
});
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
|
||||
});
|
||||
|
||||
return {
|
||||
loading,
|
||||
enableSJDC,
|
||||
queryDrawerVisible,
|
||||
tableContainer,
|
||||
jgbOptions,
|
||||
|
||||
tableWidth,
|
||||
tableHeight,
|
||||
tableVersion,
|
||||
columns,
|
||||
sjdc,
|
||||
handleRowDblClick,
|
||||
detailDialogVisible,
|
||||
detailBasicInfo,
|
||||
detailMaterialList,
|
||||
rowEventHandlers,
|
||||
currentPage,
|
||||
pageSize,
|
||||
total,
|
||||
pagedData,
|
||||
handleSizeChange,
|
||||
handleCurrentChange,
|
||||
dicCLMC,
|
||||
dicCLJG,
|
||||
dicCLWL,
|
||||
buildDynamicMaterialColumns,
|
||||
|
||||
queryConditions,
|
||||
jgczbOptions,
|
||||
xhOptions,
|
||||
filteredXhOptions,
|
||||
modelLoading,
|
||||
standardOptions,
|
||||
dydjOptions,
|
||||
pxfsOptions,
|
||||
handleStructureWeightChange,
|
||||
handleModelChange,
|
||||
handleVoltageLevelChange,
|
||||
remoteSearchModel,
|
||||
getDic,
|
||||
calcTableSize,
|
||||
|
||||
handleResetFilter,
|
||||
confirmQueryDrawer,
|
||||
openQueryDrawer,
|
||||
uploadRef,
|
||||
handleFileChange,
|
||||
handleFileRemove
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
app.use(ElementPlus);
|
||||
app.mount('#app');
|
||||
Reference in New Issue
Block a user