This commit is contained in:
2025-03-01 22:40:33 +08:00
parent e9c1a1ca1e
commit e1f4584be4
21 changed files with 12270 additions and 62 deletions

View File

@ -1,7 +1,8 @@
import {
IOpenCheckbox,
IOpenSegment,
IOpenNumber,
IOpenTextSegment,
IOpenUser,
IOpenCheckbox,
bitable
} from "@lark-opdev/block-bitable-api";
@ -10,18 +11,18 @@ import {
* 可以保证字段 ID 与模板一致
*/
/** 任务描述字段 ID */
const descriptionFieldId = "fldaxqIJ1m";
/** 任务执行人字段名称 */
const userFieldName = "任务执行人";
/** 是否完成字段 ID */
const completedFieldId = "fld9cvGzic";
/** 游芯 规格 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 "任务执行人不存在";
@ -29,33 +30,31 @@ function getUserName(userValue: IOpenUser[] | null) {
return userValue[0].name ?? "用户没有设置姓名";
}
function getDescription(descriptionValue: IOpenSegment[] | null) {
if (!descriptionValue || descriptionValue.length === 0) {
return "任务描述不存在";
}
return descriptionValue.map((segment) => segment.text).join("");
}
export async function getCurrentTask() {
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 completedValue = (await table.getCellValue(
completedFieldId,
const amountValue = (await table.getCellValue(
amountFieldId,
recordId
)) as IOpenCheckbox;
)) as IOpenNumber;
const userField = await table.getFieldByName(userFieldName);
const userValue = (await table.getCellValue(
userField.id,
recordId
)) as IOpenUser[];
const descriptionValue = (await table.getCellValue(
descriptionFieldId,
const tagValue = (await table.getCellValue(
tagFieldId,
recordId
)) as IOpenSegment[];
)) as IOpenTextSegment[];
const checkedValue = (await table.getCellValue(
checkedFieldId,
recordId
)) as IOpenCheckbox;
// 尝试一下:读取是否延期字段
// 单选的值类型为 IOpenSingleSelect
@ -66,20 +65,31 @@ export async function getCurrentTask() {
// 3. 将单元格结构体转换成业务所需数据 //
return {
description: getDescription(descriptionValue),
tag: tagValue[0]?.text ?? "error",
userName: getUserName(userValue),
completed: completedValue,
amount: amountValue,
checked: checkedValue,
// 尝试一下:返回是否延期信息
// exceeding: exceedingText
};
}
export async function setCompleted(completed: boolean) {
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(completedFieldId, recordId, completed as IOpenCheckbox);
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);
}