95 lines
3.0 KiB
TypeScript
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);
|
|
} |