Files
mh_feishu/blk_inventory/src/utils.ts
2025-03-01 22:40:33 +08:00

95 lines
3.0 KiB
TypeScript

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);
}