import React, { useState } from 'react' import { Button, Table, Input, Message } from '@alifd/next'; export default function DesignPic() { const [uploadUrl, setUploadUrl] = useState(""); // 添加状态管理表格数据 const [tableData, setTableData] = useState([]); const pic_render = (value: any, index: any, record: any) => { return ( {record.cur_index} ); } // 修改图片名称渲染函数 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].title = value; setTableData(newData); }; // 添加标签变化处理函数 const handleLabelChange = (value: string, index: number) => { const newData = [...tableData]; newData[index].label = 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 { // 获取上传路径 fetch('http://merchant.landwu.com/api/photo/getUploadUrl', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ api_token: localStorage.getItem('access_token'), }), }).then(resjson => { return resjson.json(); }).then(res => { if (res.data) { const { data = {} } = res; const { url = null } = data; setUploadUrl(url) } }) // 获取当前活动标签页 const [tab] = await browser.tabs.query({ active: true, currentWindow: true }); if (tab.id) { // 发送消息到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, cur_index: number }[]; }[] = []; let table_boj: { good_info: any; sku_info: any; design_info: { region: any; text: any; picture: any, cur_index: number }[]; } = { good_info: null, sku_info: null, design_info: [] }; response.tables.forEach((table_node: any, index: number) => { console.log(`表格 ${index + 1}:`, table_node); // 处理成接口参数 // 处理成数组对象 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],//11 cur_index: index + 1, }] } } else { table_boj.design_info.push({ region: table_node[0], text: table_node[1], picture: table_node[2],//2 cur_index: index + 1, }) } // good_info sku_info design_info: region text picture cur_index }); console.log(tables_arr, "tables_arrddd") let params_arr: any[] = [] tables_arr.forEach(item => { const sku_info = item.sku_info?.text?.split('SKU:') if (item.design_info.length) { item.design_info.forEach(design_item => { const prarm = { title: '', label: '', file: '', cur_index: '' }; if (design_item.picture && design_item.picture != '-') { // const text = design_item.text.split('}') const bg_pic = (design_item.picture.backgroundImages as { url: string }[] | undefined)?.[0]?.url; prarm.title = `${sku_info[1]}-${design_item.region}` prarm.label = `${sku_info[1]}-${design_item.region}` prarm.file = bg_pic ?? ''; params_arr.push(prarm) } }) } }) console.log(params_arr, "params_arr") setTableData(params_arr) // const table_arrs = response.tables // 表格数组 // let i = 0, table_node = table_arrs[i], tables_arr = []; // 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: [] // }; // while (i < response.tables.length) { // // 长度大于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], // }] // } // i++ // table_node = table_arrs[i] // } else { // table_boj.design_info.push({ // region: table_node[0], // text: table_node[1], // picture: table_node[2], // }) // i++ // table_node = table_arrs[i] // } // } } else { console.log("页面上未找到表格数据"); } } } catch (error) { console.error("获取表格数据失败:", error); } }; const uploadPic = () => { const token = localStorage.getItem("access_token"); // 在此处添加下标索引参数 const table_datas = tableData.map((item, index) => { item.cur_index = index + 1 item.api_token = token return item }) let fetch_url = "", arr_index = 0 if (uploadUrl.includes('http')) { fetch_url = `${uploadUrl}sheInPhoto/upload` } else { fetch_url = `http:${uploadUrl}sheInPhoto/upload` } const fetch_fn = (data: any) => { console.log(data,"data") const formData = new FormData() for (var key in data) { formData.append(key, data[key]) } fetch(fetch_url, { method: 'POST', // headers: { // 'Content-Type': 'application/json', // }, body: formData, mode: 'cors' }).then(resjson => { return resjson.json(); }).then(res => { if (res.code == -1) { Message.error(res.msg) return } arr_index++ if (arr_index < table_datas.length) { fetch_fn(table_datas[arr_index]) } else { // 上传完成 Message.success(res.msg) } }).catch(error => { Message.error(error.message) }) } console.log(table_datas,"table_datasss") fetch_fn(table_datas[arr_index]) // setTableData(tableData) } return (
) }