Ben Lin
2024-07-27 a82003f4cf9ae6b69f70212374b3a71090f1770f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
 * @Description: 产品工艺路线相关
 * @Author: Ben Lin
 * @version:
 * @Date: 2024-06-19 20:34:27
 * @LastEditors: Ben Lin
 * @LastEditTime: 2024-07-22 17:51:57
 */
 
import { ActionItem, BasicColumn } from '/@/components/Table';
 
function _default() {
  const ActionColumn: BasicColumn = {
    width: 80,
    title: '操作',
    dataIndex: 'action',
    slots: { customRender: 'action' },
    fixed: undefined,
  };
 
  /**
   * @description: 一些自定义方法
   * @return {*}
   */  
  const methods = {
    /**
     * @description: 获取新增按钮的行为
     * @return {*}
     */
    CreateAction: (fnName: string) => {
      return {
        action: 'drawer', //drawer(打开左侧抽屉框) | go(跳转到新的页面)
      };
    },
    /**
     * @description: 产品绑定工艺路线操作字段自定义按钮
     * @return {*}
     */
    ActionItem: (params: Recordable<any>, data, ...args): ActionItem[] => {
      return [
        {
          icon: 'binding|svg',
          tooltip: '绑定工艺',
          onClick: handleBinding.bind(null, args[5], params),
          name: undefined
        },
      ];
    },
    KeyFieldValues: (val: string, id: string) => {
      return { RSNG_CODE: val };
    },
    GetUseForm: () => {
      return {};
    },
  };
 
  /* 以下是内部方法,不export,供上面的方法调用 */
 
  /**
   * @description: 跳转产品工艺绑定页面
   * @param {*} params
   * @return {*}
   */
  function handleBinding(go: Fn, params: Recordable<any>) {
    const id = {
      ID: params['record'].ID,
      Name: 'ProdRouteBinding',
      CODE: params['record'].ITEM_CODE,
      Title: `产品[${params['record'].ITEM_CODE}]工艺绑定`,
      colSlots: [] /* 表格内的查询表单字段的插槽列表,一般用于弹出选择框按钮 */,
      crudColSlots: [] /* 增删改表单字段的插槽列表,一般用于弹出选择框按钮 */,
      dense: true,
      pageTitle: `产品工艺绑定`,
      pageContent: `这里是管理产品的工艺绑定,一个产品可以绑定多个工艺路线`,
      SessionName: 'ProdRouteBinding_update',
    };
    // 将对象转换为JSON字符串并保存到sessionStorage
    sessionStorage.removeItem(`${id.SessionName}_params`);
    sessionStorage.setItem(`${id.SessionName}_params`, encodeURI(JSON.stringify(id)));
    go(`/ProdRouteBinding/CP/${encodeURI(JSON.stringify({ sName: id.SessionName, Name: id.Name }))}`);
    // let obj = JSON.stringify(id);
    // push({
    //   path: '/ProdRouteBinding',
    //   state: {obj}, //HTML5 History API 的传参,参数隐藏不在地址栏显示(history)
    // })
  }
 
  return [methods, ActionColumn];
}
 
export default _default;