编辑独立值集

在HZERO的值集配置中,可以配置独立值集,如下图:



现在有一个需求,就是在这个值集配置页面以外的地方可以进行编辑值集的操作。
所以,事不宜迟,现在就开始找寻方法吧。

打开浏览器的检查,发现上图的数据其实是通过这个接口请求而来:




观察一下返回的数据,发现接口中2067这个其实是对应lovId的,那么有什么方法可以通过lovCode来获取这个lovId呢?
我们回到值集配置的上一个页面中:



点击这个查询时,便会请求一个接口如下图:


返回的数据中,就有我们需要的lovId了。

然后,在值集配置中尝试编辑独立值集的过程中,很容易发现编辑、删除、修改都是调用的同一个接口,只是请求方法不同,如下图:





所以,至此,所有的准备工作都已完成了,我们已经了解了整一个编辑独立值集过程中所需要的所有接口了。

接下来,就开始编码工作了,核心是一个dateSet,如下:

const modifyModalDS = () => ({
  transport: {
    read: ({ dataSet }) => {
      const { lovId } = dataSet.queryParameter;
      return {
        url: `${BASE_PATH}hpfm/v1/0/lov-headers/${lovId}/values?tenantId=0`,
        method: 'GET',
      };
    },
    create: ({ data, dataSet }) => {
      const { lovId, lovCode } = dataSet.queryParameter;

      const obj = data[0];
      obj.lovCode = lovCode;
      obj.lovId = lovId;
      obj.tenantId = currentTenantId;

      return {
        url: `${BASE_PATH}hpfm/v1/0/lov-values`,
        data: obj,
        method: 'POST',
      };
    },
    update: ({ data }) => {
      return {
        url: `${BASE_PATH}hpfm/v1/0/lov-values`,
        data: data[0],
        method: 'PUT',
      };
    },
    destroy: ({ data }) => {
      return {
        url: `${BASE_PATH}hpfm/v1/0/lov-values`,
        data,
        method: 'DELETE',
      };
    },
  },
  fields: [
    {
      name: 'meaning',
      type: 'string',
      label: '含义',
    },
    {
      name: 'orderSeq',
      type: 'number',
      label: '排序号',
    },
    {
      name: 'tenantId',
      type: 'number',
      label: 'tenantId',
    },
    {
      name: 'value',
      type: 'string',
      label: '值',
    },
    {
      name: '_token',
      type: 'string',
      label: '_token',
    },
  ],
});

然后,把它做成一个弹出框的表格:

export function showModifyModal({ dataSet, title, lovId, lovCode }) {
  const tableDS = new DataSet({
    ...dataSet(),
  });
  Modal.open({
    style: { ...constants.MODAL_DEFAULT_POSITION, width: '9.5rem' },
    title,
    closable: true,
    destroyOnClose: true,
    children: (
      <>
        <ModifyTable tableDS={tableDS} lovId={lovId} lovCode={lovCode} />
      </>
    ),
  });
}

其中的ModifyTable中代码如下:

import React, { Component } from 'react';
import { connect } from 'dva';
import { Bind } from 'lodash-decorators';
import { getCurrentOrganizationId } from 'utils/utils';
import { Table } from 'choerodon-ui/pro';

const organizationId = getCurrentOrganizationId();

@connect()
class ModifyTable extends Component {
  componentDidMount() {
    const { tableDS, lovId, lovCode } = this.props;
    if (lovId) {
      tableDS.setQueryParameter('lovId', lovId);
      tableDS.query();
      tableDS.setQueryParameter('lovCode', lovCode);
    }
  }

  get lineButtons() {
    return [['add'], ['delete']];
  }

  /**
   * 行新建
   */
  @Bind()
  handleCreateLine() {
    const { selectHeadData, lineDataSet } = this.props;
    if (selectHeadData) {
      lineDataSet.create({ doId: selectHeadData, tenantId: organizationId }, 0);
    }
  }

  get lineColumns() {
    return [
      {
        name: 'value',
        editor: true,
      },
      {
        name: 'meaning',
        editor: true,
      },
      {
        name: 'orderSeq',
        editor: true,
      },
      {
        header: '操作',
        command: () => ['edit'],
      },
    ];
  }

  render() {
    const { tableDS } = this.props;
    return (
      <Table
        dataSet={tableDS}
        buttons={this.lineButtons}
        columns={this.lineColumns}
        editMode="inline"
      />
    );
  }
}

export default ModifyTable;

最后的效果如下图:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 11,277评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 11,804评论 0 2
  • 年纪越大,人的反应就越迟钝,脑子就越不好使,计划稍有变化,就容易手忙脚乱,乱了方寸。 “玩坏了”也是如此,不但会乱...
    玩坏了阅读 6,502评论 2 1
  • 感动 我在你的眼里的样子,就是你的样子。 相互内化 没有绝对的善恶 有因必有果 当你以自己的价值观幸福感去要求其他...
    周粥粥叭阅读 5,557评论 1 5
  • 昨天考过了阿里规范,心里舒坦了好多,敲代码也犹如神助。早早完成工作回家喽
    常亚星阅读 8,130评论 0 1