# 一、表单

## 1、通过ecode可以拦截复写EB表单按钮

> *最低版本：10.0.2404.01*

> 拦截项目名称：weappEbdfpage

### 1.1 移动端

#### 1.1.1 拦截说明

> 组件：MCardDetailDlg
> 
> 属性：props.mCardStore

#### 1.1.2 拦截示例

```javascript
// 最低版本：10.0.2404.01
import { regOvProps } from '@weapp/utils';
regOvProps('weappEbdfpage', 'MCardDetailDlg', (props) => {
  //针对某个表单744193007985672193，屏蔽转发到会话，转发到微信按钮，如果需要根据其他条件判断，可以根据props.comParams或props.urlParams中的属性去对比。
  if(['886379175877476352','886379175877476353'].includes(props.comParams?.objid)){ 
    props.mCardStore.SdkStore.registerOvDataEvent('OvButtons',(buttons,info)=>{
      return buttons.filter((btn)=>{
        //屏蔽指定的按钮-转发到会话，转发到微信，如需要屏蔽其他按钮，可以在此打印btn看下具体的buttonKey
        return !['sendSession','sendWechat'].includes(btn.buttonKey)
      })
    })
  }
  return props;
}, 0)
```

### 1.2 PC端

#### 1.2.1 拦截说明

> 组件名称：CardDetailDlg
> 
> 属性：props.cardStore

#### 1.2.2 拦截示例

```javascript
// 最低版本：10.0.2404.01
//ecode 复写组件属性的方法
import { regOvProps } from '@weapp/utils';
regOvProps(
  'weappEbdfpage',
  'CardDetailDlg',
  (props) => {
    //针对某个表单744193007985672193,744193007985672194，屏蔽“外部分享”，“评论”按钮
    if (['744193007985672193','744193007985672194'].includes(props.comParams?.objid)) {
      props.cardStore.SdkStore.registerOvDataEvent('OvButtons', (buttons, info) => {
        //如果是直接移除：
        return buttons.filter((btn) => {
          return !['ExternalShare','CommentBtn'].includes(btn.buttonKey);
        });
        //如果只是暂时隐藏:
        // return buttons.map((btn) => {
        //   if (['ExternalShare','CommentBtn'].includes(btn.buttonKey)) {
        //     return { ...btn, hidden: true };
        //   }
        //   return btn;
        // });
      });
    }
    return props;
  },
  0,
);
```

### 1.3 表单按钮名称对照列表

**注：小写部分是实际值，例如，’保存’按钮的buttonKey是’save’**

```typescript
/**
 * 卡片按钮方法常量
 */
export enum CardButtonType {
  Comment = 'comment',
  View = 'view',
  OperationLog = 'operationLog', // 操作日志
  FormLog = 'formlog',
  Save = 'save',
  SaveAndCreate = 'saveAndCreate',
  SaveAndCopy = 'saveAndCopy',
  EditSave = 'editSave',
  TempSave = 'tempSave',
  Edit = 'edit',
  Copy = 'copy',
  Delete = 'delete',
  Print = 'print',
  Cancel = 'cancel',
  GoBack = 'goBack', // 返回
  Chart = 'chart', // 流程图
  Status = 'status', // 流程状态
  Follow = 'follow',
  Unfollow = 'unfollow',
  LikeBtn = 'likeBtn', // 赞
  DislikeBtn = 'disLikeBtn', // 踩
  CommentBtn = 'commentBtn', // 评论
  Remove = 'remove', // 彻底删除
  MonitorRemove = 'monitorRemove', // 监控列表-彻底删除
  Restore = 'restore', // 还原
  Share = 'share', // 共享
  ExternalShare = 'externalShare', // 外部分享
  MattersForward = 'mattersForward', // 事项转发
  EncryptForward = 'encryptForward', // 加密转发
  MessageReceiveSet = 'messageReceiveSet', // 消息免打扰
  CopyUrl = 'copyUrl', // 复制链接

  PrevData = 'prevData', // 上一条
  NextData = 'nextData', // 下一条
  ExportPDF = 'exportPDF', // 导出PDF
  TodoListBtn = 'todoListBtn', // 设为待办事项
  TodoBtn = 'todoBtn', // 已设为待办
  CreateGroupChat = 'issueGroupChat', // 创建事项群聊
  Urge = 'urge', // 催办提醒
  DataAnalyze = 'dataAnalysis', // 数据分析

  // 企业微信环境下
  SendSession = 'sendSession', // 转发到会话
  SendWechat = 'sendWechat', // 转发到微信
  WeComGoback = 'wecomGoback', // 企业微信回退

  ViewWorkflow = 'viewWorkflow', // 查看流程
  AssociationSetting = 'associationSetting', // 关联设置
  DataVersion = 'dataVersion', // 存为新版

  /** 系统帮助 */
  SystemHelp = 'help',
}
```

# 二、表格

## 2、通过ecode或代码块复写表格按钮

> *最低版本：10.0.2406.01*

### 2.1 按钮拦截

pc移动相同，都可以直接使用钩子拦截

```javascript
const ebdfListSdk = window.ebdfpageSDK.getListSDK();
if (ebdfListSdk) {
  ebdfListSdk.registerOvDataEvent('OvButtons', (buttons, info) => {
    return buttons.map((btn) => {
      return { ...btn, hidden: true };
    });
  });
}
```

### 2.2  触发按钮显隐

实时控制按钮显示和隐藏

```javascript
/**
  @function controlBtnHidden
  @description 隐藏右上角按钮
  @param isHide true:隐藏 false:显示
  @param ids '123,444，tableAdd'逗号分割的id或buttonKey
 * */
ebdfListSdk.controlBtnHidden(true,'tableAdd')
```

### 2.3 系统按钮类型定义

**注：小写部分是实际值，例如，’**新建**’按钮的buttonKey是’**tableAdd**’**

```typescript
/**
 * 列表按钮方法常量
 */
export enum ListButtonType {
  TableAdd = 'tableAdd',
  TableDelete = 'tableDelete', // 批量删除
  doImp = 'doImp',
  TableExp = 'tableExp', // 导出
  TableImp = 'tableImp', // 导入
  BatchEditValue = 'batchEditValue', // 批量编辑字段值
  BatchPrint = 'batchPrint', // 批量打印
  BatchAggregationPrint = 'batchAggregationPrint', // 批量打印
  BatchAdd = 'batchAdd', // 批量新增
  BatchEdit = 'batchEdit', // 批量编辑
  BatchFollow = 'batchFollow', // 批量关注
  BatchUnfollow = 'batchUnfollow', // 批量取消关注
  BatchMarkReadState = 'batchMarkReadState', // 批量已读
  MarkReadState = 'markReadState', // 标记为已读
  Follow = 'follow',
  Unfollow = 'unfollow',
  TodoListBtn = 'todoListBtn', // 设为待办事项
  TodoBtn = 'todoBtn', // 已设为待办
  LikeBtn = 'likeBtn', // 赞
  DislikeBtn = 'disLikeBtn', // 踩
  CommentBtn = 'commentBtn', // 评论
  MyFollows = 'myFollows',
  BatchPubTags = 'batchPubTags', // 批量设置公共标签
  BatchMyTags = 'batchMyTags', // 批量设置我的标签
  SetTop = 'setTop', // 置顶
  CancelSetTop = 'cancelSetTop', // 取消置顶
  CustomBatch = 'customBatch', // 自定义批量操作
  BatchShare = 'batchShare', // 批量共享
  ShareToMe = 'shareToMe', // 共享给我的数据
  Personalization = 'personalization', // 个性化
  InitializeColumnWidth = 'initializeColumnWidth', // 初始化列宽
  MessageReceiveSet = 'messageReceiveSet', // 消息免打扰
  CopyUrl = 'copyUrl', // 复制链接

  QuickOrder = 'quickOrder', // 快捷排序
  EditableListSave = 'editableListSave', // 列表可编辑保存(static)
  CreateGroupChat = 'issueGroupChat', // 创建事项群聊
  Urge = 'urge', // 催办提醒
  DataAnalyze = 'dataAnalysis', // 数据分析

  MonitorRemove = 'monitorRemove', // 监控列表-批量彻底删除

  /** 系统帮助 */
  SystemHelp = 'help',
  Push = 'push', // 推进
  // 数据合并
  CombineData = 'combineData',
  CombineDataLog = 'combineDataLog',
}
```
