|
@@ -393,102 +393,102 @@ const getcomdata = async (pcId) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const getbtnvalue = (pcaId, dataType) => {
|
|
|
+const getbtnvalue = async (pcaId, dataType) => {
|
|
|
const params = {
|
|
|
transCode: "ES0010",
|
|
|
pcaId: pcaId
|
|
|
}
|
|
|
|
|
|
- request(params)
|
|
|
- .then(async (res) => {
|
|
|
- if (dataType === 1) {
|
|
|
- // 遍历 headers,初始化单位值
|
|
|
- for (const header of res.headers) {
|
|
|
- if (header.unitType !== "无") {
|
|
|
- // 调用 getlistopt 获取单位选项并设置默认值
|
|
|
- await getlistopt(header, "unit")
|
|
|
- } else {
|
|
|
- // 如果不需要单位,直接设置为"无"
|
|
|
- header.unit = "无"
|
|
|
- header.unitoptions = [] // 保持选项列表为空
|
|
|
- }
|
|
|
+ try {
|
|
|
+ const res = await request(params)
|
|
|
+
|
|
|
+ if (dataType === 1) {
|
|
|
+ // 处理 headers - 使用 Promise.all 确保所有异步操作完成
|
|
|
+ await Promise.all(res.headers?.map(async (header) => {
|
|
|
+ if (header?.unitType !== "无") {
|
|
|
+ await getlistopt(header, "unit")
|
|
|
+ } else {
|
|
|
+ header.unit = "无"
|
|
|
+ header.unitoptions = []
|
|
|
}
|
|
|
+ }))
|
|
|
|
|
|
- // 设置表格列
|
|
|
- tableColumns.value = res.headers || []
|
|
|
+ // 设置表格列
|
|
|
+ tableColumns.value = res.headers || []
|
|
|
|
|
|
- // 将 datas 按行号(pcadgId)分组,每行是一个对象
|
|
|
- const rowMap = new Map()
|
|
|
+ // 将 datas 按行号分组
|
|
|
+ const rowMap = new Map()
|
|
|
|
|
|
- res.datas?.forEach(async (item) => {
|
|
|
- // 添加 async
|
|
|
- const rowId = item.pcadgId
|
|
|
- if (!rowMap.has(rowId)) {
|
|
|
- rowMap.set(rowId, { pcadgId: rowId })
|
|
|
- }
|
|
|
+ // 使用 Promise.all 确保所有数据项处理完成
|
|
|
+ await Promise.all(res.datas?.map(async (item) => {
|
|
|
+ if (!item?.pcadgId) return
|
|
|
+
|
|
|
+ const rowId = item.pcadgId
|
|
|
+ if (!rowMap.has(rowId)) {
|
|
|
+ rowMap.set(rowId, { pcadgId: rowId })
|
|
|
+ }
|
|
|
|
|
|
- const header = res.headers.find((h) => h.cdvId === item.cdvId)
|
|
|
- if (header) {
|
|
|
- const row = rowMap.get(rowId)
|
|
|
-
|
|
|
- // 如果是下拉类型,调用 getlistopt 获取选项
|
|
|
- if (header.valueType === 1) {
|
|
|
- await getlistopt(header, "value") // 获取选项并设置默认值
|
|
|
- // 使用从 getlistopt 获取的 value(如果 item.value 为空)
|
|
|
- row[header.code] = {
|
|
|
- value: item.value || header.value, // 优先使用 item.value
|
|
|
- unit: item.unit,
|
|
|
- options: header.options, // 添加 options 到行数据
|
|
|
- pcadgId: item.pcadgId,
|
|
|
- pcadId: item.pcadId,
|
|
|
- cdvId: item.cdvId
|
|
|
- }
|
|
|
- } else {
|
|
|
- // 非下拉类型保持原样
|
|
|
- row[header.code] = {
|
|
|
- value: item.value,
|
|
|
- unit: item.unit,
|
|
|
- pcadgId: item.pcadgId,
|
|
|
- pcadId: item.pcadId,
|
|
|
- cdvId: item.cdvId
|
|
|
- }
|
|
|
- }
|
|
|
+ const header = res.headers?.find((h) => h?.cdvId === item?.cdvId)
|
|
|
+ if (!header) return
|
|
|
+
|
|
|
+ const row = rowMap.get(rowId)
|
|
|
+
|
|
|
+ // 处理下拉类型
|
|
|
+ if (header?.valueType === 1) {
|
|
|
+ await getlistopt(header, "value")
|
|
|
+ row[header.code] = {
|
|
|
+ value: item?.value || header?.value || '',
|
|
|
+ unit: item?.unit || '无',
|
|
|
+ options: header?.options || [],
|
|
|
+ pcadgId: item.pcadgId,
|
|
|
+ pcadId: item.pcadId,
|
|
|
+ cdvId: item.cdvId
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // 非下拉类型
|
|
|
+ row[header.code] = {
|
|
|
+ value: item?.value || '',
|
|
|
+ unit: item?.unit || '无',
|
|
|
+ pcadgId: item.pcadgId,
|
|
|
+ pcadId: item.pcadId,
|
|
|
+ cdvId: item.cdvId
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }))
|
|
|
+
|
|
|
+ // 确保所有数据处理完成后再设置 tableData
|
|
|
+ tableData.value = Array.from(rowMap.values())
|
|
|
+ console.log("tableData.value", tableData.value)
|
|
|
+
|
|
|
+ } else if (dataType === 2) {
|
|
|
+ // 处理属性-值对形式
|
|
|
+ const kvData = []
|
|
|
+ let rowCount = 0
|
|
|
+
|
|
|
+ res.headers?.forEach((header) => {
|
|
|
+ if (!header?.cdvId) return
|
|
|
+
|
|
|
+ const dataItem = res.datas?.find(
|
|
|
+ (item) => item?.cdvId === header.cdvId
|
|
|
+ )
|
|
|
+ rowCount++
|
|
|
+
|
|
|
+ kvData.push({
|
|
|
+ cdvId: header.cdvId,
|
|
|
+ property: header?.name || "",
|
|
|
+ value: dataItem?.value || "",
|
|
|
+ pcadgId: dataItem?.pcadgId || "",
|
|
|
+ pcadId: rowCount,
|
|
|
+ unit: dataItem?.unit || "无"
|
|
|
})
|
|
|
+ })
|
|
|
|
|
|
- tableData.value = Array.from(rowMap.values())
|
|
|
- console.log("tableData.value", tableData.value)
|
|
|
- } else if (dataType === 2) {
|
|
|
- // 处理属性-值对形式
|
|
|
- const kvData = []
|
|
|
- // 记录行号
|
|
|
- let rowCount = 0
|
|
|
-
|
|
|
- res.headers?.forEach((header) => {
|
|
|
- // 找到对应的数据项
|
|
|
- const dataItem = res.datas?.find(
|
|
|
- (item) => item.cdvId === header.cdvId
|
|
|
- )
|
|
|
- rowCount++
|
|
|
-
|
|
|
- kvData.push({
|
|
|
- cdvId: header.cdvId,
|
|
|
- property: header.name, // 属性名称
|
|
|
- value: dataItem ? dataItem.value : "",
|
|
|
- pcadgId: dataItem ? dataItem.pcadgId : "",
|
|
|
- pcadId: rowCount,
|
|
|
- unit: dataItem ? dataItem.unit : "无"
|
|
|
- })
|
|
|
- })
|
|
|
-
|
|
|
- tableKVData.value = kvData
|
|
|
- // console.log("tableKVData.value", tableKVData.value)
|
|
|
- }
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- console.error("err", err)
|
|
|
- ElMessage.error("值初始化失败")
|
|
|
- })
|
|
|
+ tableKVData.value = kvData
|
|
|
+ }
|
|
|
+ } catch (err) {
|
|
|
+ console.error("值初始化失败:", err)
|
|
|
+ ElMessage.error("值初始化失败")
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
const getlistopt = async (item, gettype) => {
|