import React, { useState } from 'react'
import { Button, Table, Input, Message } from '@alifd/next';
export default function DesignPic() {
// 添加状态管理表格数据
const [tableData, setTableData] = useState(() => {
const result = [];
for (let i = 0; i < 5; i++) {
result.push({
title: { name: `Quotation for 1PCS Nano ${3 + i}.0 controller compatible` },
id: 100306660940 + i,
time: 2e3 + i,
// 添加名称和标签字段
picName: '1235',
picLabel: ''
});
}
return result;
});
const pic_render = (value: any, index: any, record: any) => {
return (
);
}
// 修改图片名称渲染函数
const name_render = (value: any, index: number, record: any) => {
return <>
handleNameChange(value, index)}
composition
placeholder={'请输入图片名称'}
/>
>
};
// 修改图片标签渲染函数
const label_render = (value: any, index: number, record: any) => {
return <>
handleLabelChange(value, index)}
composition
placeholder={'请输入图片标签'}
/>
>
};
// 添加名称变化处理函数
const handleNameChange = (value: string, index: number) => {
const newData = [...tableData];
newData[index].picName = value;
setTableData(newData);
};
// 添加标签变化处理函数
const handleLabelChange = (value: string, index: number) => {
const newData = [...tableData];
newData[index].picLabel = value;
setTableData(newData);
};
// 完善删除功能
const handleDelete = (index: number, record: any) => {
// 方案1: 直接删除
const newData = [...tableData];
newData.splice(index, 1);
setTableData(newData);
// 方案2: 带确认的删除 (可选)
// if (window.confirm(`确定要删除 "${record.title.name}" 吗?`)) {
// const newData = [...tableData];
// newData.splice(index, 1);
// setTableData(newData);
// Message.success('删除成功');
// }
};
// 删除操作渲染函数
const option_render = (value: any, index: number, record: any) => {
return (
handleDelete(index, record)}
>
删除
);
};
// 添加行索引以确保正确删除
const dataSourceWithIndex = tableData.map((item, index) => ({
...item,
index
}));
const getPicData = async () => {
try {
// 获取当前活动标签页
const [tab] = await browser.tabs.query({ active: true, currentWindow: true });
console.log(tab, "tab");
if (!tab.id) {
Message.error('无法获取当前标签页信息');
return;
}
try {
// 发送消息到content script请求获取tbody数据
const response = await browser.tabs.sendMessage(tab.id, { action: "getTbodyData" });
const table_datas = []
// 在控制台输出结果
if (response.tables && response.tables.length > 0) {
console.log("找到的表格数据(包含背景图片):");
// 显式声明类型
let tables_arr: {
good_info: any;
sku_info: any;
design_info: { region: any; text: any; picture: any }[];
}[] = [];
let table_boj: {
good_info: any;
sku_info: any;
design_info: { region: any; text: any; picture: any }[];
} = {
good_info: null,
sku_info: null,
design_info: []
};
response.tables.forEach((table_node: any, index: number) => {
console.log(`表格 ${index + 1}:`, table_node);
// 长度大于4时,指针改变
if (table_node.length > 4) {
if (table_boj.design_info.length) {
// 一个商品的定制信息
tables_arr.push(table_boj)
// 重置
table_boj = {
good_info: null,
sku_info: null,
design_info: []
}
}
table_boj = {
good_info: table_node[1],
sku_info: table_node[2],
design_info: [{
region: table_node[9],
text: table_node[10],
picture: table_node[11],
}]
}
} else {
table_boj.design_info.push({
region: table_node[0],
text: table_node[1],
picture: table_node[2],
})
}
// good_info sku_info design_info: region text picture
});
console.log(tables_arr, "tables_arrddd")
Message.success('成功获取表格数据');
} else {
console.log("页面上未找到表格数据");
Message.warning('页面上未找到表格数据');
}
} catch (sendMessageError: any) {
console.error("发送消息失败:", sendMessageError);
if (sendMessageError?.message?.includes('Could not establish connection') ||
sendMessageError?.message?.includes('Receiving end does not exist')) {
Message.error('无法连接到页面内容脚本,请确保已在支持的页面上运行此扩展,或刷新页面后重试');
} else {
Message.error('获取数据时发生错误: ' + sendMessageError.message);
}
}
} catch (error: any) {
console.error("获取表格数据失败:", error);
Message.error('获取标签页信息失败: ' + error.message);
}
}
return (
)
}