element()

in src/ui/editor/complex/ACnAddress.tsx [17:55]


  element() {
    const gb2260 = super.getValue() ?? {};
    // 当传入的 database,没有 code,但有 province 时,反查 code 
    if (gb2260.province && !gb2260.code) {
      for (const p of MGB2260Type.gb2260) {
        if (p.label === gb2260.province) {
          if (gb2260.city && p.children) {
            for (const c of p.children) {
              if (c.label === gb2260.city) {
                if (gb2260.district && c.children) {
                  for (const d of c.children) {
                    if (d.label === gb2260.district) {
                      gb2260.code = d.value
                      break
                    }
                  }
                } else {
                  gb2260.code = c.value
                  break
                }
              }
            }
          } else {
            gb2260.code = p.value
            break
          }
        }
      }
    }
    return <Input.Group compact key={this.props.path} className={MUtil.phoneLike() ? "ACnAddress_p" : "ACnAddress"}>
      <AGB2260 morph="editor" schema={{ type: "gb2260", placeholder: super.getPlaceholder(0) }} database={gb2260} path={"code"} disable={this.props.disable} afterChange={(path, code, final):void => {
        const info = MGB2260Type.lookup(code);
        if (info) {
          _.set(gb2260, "province", info.label[0]);
          _.set(gb2260, "city", info.label[1]);
          _.set(gb2260, "district", info.label[2]);
        }
        super.changeValueEx(gb2260, false, final);
      }} />