import { IOpenNumber, IOpenTextSegment, IOpenUser, IOpenCheckbox, bitable } from "@lark-opdev/block-bitable-api"; /** * 从模板创建的多维表格 * 可以保证字段 ID 与模板一致 */ /** 游芯 规格 ID */ // const descriptionFieldId = "fldrxqL8uz"; const tagFieldId = "fld2xdCqrs"; /** 游芯 盘库人 ID */ // const userFieldName = "fldDyaB5ev"; const userFieldName = "盘库人"; /** 游芯 外库数量 ID */ // const completedFieldId = "fldsOIpOBk"; const amountFieldId = "fldC9cnnAY"; /** 尝试一下:接入是否延期字段 ID */ // const exceedingFieldId = "todo" const checkedFieldId = "fldJkHhQgQ"; function getUserName(userValue: IOpenUser[] | null) { if (!userValue || userValue.length === 0) { return "任务执行人不存在"; } return userValue[0].name ?? "用户没有设置姓名"; } export async function getCurrentTag() { // 1. 读取选中的表和记录 // const { tableId, recordId } = await bitable.base.getSelection(); if (!tableId || !recordId) throw new Error("选区状态读取失败"); const table = await bitable.base.getTableById(tableId); // 2. 读取单元格 // const amountValue = (await table.getCellValue( amountFieldId, recordId )) as IOpenNumber; const userField = await table.getFieldByName(userFieldName); const userValue = (await table.getCellValue( userField.id, recordId )) as IOpenUser[]; const tagValue = (await table.getCellValue( tagFieldId, recordId )) as IOpenTextSegment[]; const checkedValue = (await table.getCellValue( checkedFieldId, recordId )) as IOpenCheckbox; // 尝试一下:读取是否延期字段 // 单选的值类型为 IOpenSingleSelect // const exceedingValue = (await table.getCellValue(exceedingFieldId, recordId)) as IOpenSingleSelect; // 尝试一下:将 exceedingValue 转换成选中选项的字符串 // const exceedingText = doYourCustomTransform(exceedingValue) // 3. 将单元格结构体转换成业务所需数据 // return { tag: tagValue[0]?.text ?? "error", userName: getUserName(userValue), amount: amountValue, checked: checkedValue, // 尝试一下:返回是否延期信息 // exceeding: exceedingText }; } export async function setAmount(amount: number) { // 1. 读取选中的表和记录 // const { tableId, recordId } = await bitable.base.getSelection(); if (!tableId || !recordId) throw new Error("选区状态读取失败"); const table = await bitable.base.getTableById(tableId); // 2. 将业务数据转换成单元格结构,然后写入 // table.setCellValue(amountFieldId, recordId, amount as IOpenNumber); } export async function setChecked(checked: boolean) { // 1. 读取选中的表和记录 // const { tableId, recordId } = await bitable.base.getSelection(); if (!tableId || !recordId) throw new Error("选区状态读取失败"); const table = await bitable.base.getTableById(tableId); // 2. 将业务数据转换成单元格结构,然后写入 // table.setCellValue(checkedFieldId, recordId, checked as IOpenCheckbox); }