king
2023-07-28 6b202fcb9446a289d64dd1a36e881b688c9bb72b
src/tabviews/custom/components/table/normal-table/index.jsx
@@ -401,7 +401,7 @@
    if (result.status) {
      this.loaded = true
      if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') {
        Api.writeCacheConfig(config.uuid, result.data || '')
        Api.writeCacheConfig(config.uuid, result.data || [])
      }
      if (repage === 'false' && result.data && result.data.length === 0 && result.total > 0 && pageIndex > 1) {
@@ -467,10 +467,15 @@
        return item
      })
      let total = result.total || 0
      if (config.setting.custompage && data.length) {
        total = data[data.length - 1].mk_total || 0
      }
      this.setState({
        data: data,
        selectedData: [],
        total: result.total,
        total: total,
        loading: false
      })
@@ -541,17 +546,11 @@
    let result = await Api.genericInterface(param)
    if (result.status) {
      if (!result.data || !result.data[0]) {
        this.setState({
          loading: false
        })
        return
      }
      let data = fromJS(this.state.data).toJS()
      let selectedData = fromJS(this.state.selectedData).toJS()
      if (!result.data) {
      // if (result.data && result.data[0]) {
      let _data = result.data[0]
      _data.$$uuid = _data[setting.primaryKey] || ''
      _data.$$BID = BID || ''
@@ -565,7 +564,6 @@
        })
      }
      try {
        data = data.map(item => {
          if (item.$$uuid === _data.$$uuid) {
            _data.key = item.key
@@ -576,23 +574,61 @@
            return item
          }
        })
        if (!_data.$Index) {
          this.setState({
            loading: false
          })
          return
        }
        selectedData = selectedData.map(item => {
          if (_data.$$uuid === item.$$uuid) {
            return _data
          }
          return item
        })
      } catch (e) {
        console.warn('数据查询错误')
      }
        if (selectedData.length && _data.$$uuid === selectedData[selectedData.length - 1].$$uuid) {
      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
        }
      this.setState({
        data,
        selectedData,
        loading: false
      })
        if (config.setting.$hasSyncModule) {
          MKEmitter.emit('syncBalconyData', config.uuid, selectedData, data.length === selectedData.length)
        }
      } else {
        let index = data.findIndex(item => item.$$uuid === id)
        if (index === -1) {
          this.setState({
            loading: false
          })
          return
        }
        data = data.filter(item => item.$$uuid !== id)
        data = data.map((item, i) => {
          item.key = i
          item.$$key = '' + item.key + item.$$uuid
          return item
        })
        this.setState({
          data: data,
          loading: false
        })
        setTimeout(() => {
          MKEmitter.emit('resetTable', config.uuid, 'delete', index)
        }, 20)
      }
    } else {
      this.setState({
        loading: false
@@ -845,39 +881,7 @@
      style.display = 'none'
    }
    return (
      <div className="custom-normal-table" id={'anchor' + config.uuid} style={style}>
        {config.wrap.collapse === 'true' ? <Collapse bordered={false} defaultActiveKey="1" expandIconPosition="right">
          <Panel forceRender={true} header={<NormalHeader config={config}/>} key="1">
            {config.search && config.search.length ?
              <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
            }
            {actions.length > 0 ? <MainAction
              BID={BID}
              setting={setting}
              actions={actions}
              BData={BData}
              columns={config.columns}
              selectedData={selectedData}
            /> : <div className="mk-action-space" style={{height: '25px'}}></div>}
            <div className="main-table-box">
              <MainTable
                setting={setting}
                columns={columns}
                MenuID={config.uuid}
                data={data}
                fields={config.columns}
                total={this.state.total}
                lineMarks={config.lineMarks}
                loading={this.state.loading}
                refreshdata={this.refreshbytable}
                statFValue={this.state.statFValue}
                chgSelectData={(selects) => this.setState({selectedData: selects})}
              />
            </div>
          </Panel>
        </Collapse> : <>
          <NormalHeader config={config}/>
    let content = <>
          {config.search && config.search.length ?
            <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null
          }
@@ -904,6 +908,17 @@
              chgSelectData={(selects) => this.setState({selectedData: selects})}
            />
          </div>
    </>
    return (
      <div className="custom-normal-table" id={'anchor' + config.uuid} style={style}>
        {config.wrap.collapse === 'true' ? <Collapse bordered={false} defaultActiveKey="1" expandIconPosition="right">
          <Panel forceRender={true} header={<NormalHeader config={config}/>} key="1">
            {content}
          </Panel>
        </Collapse> : <>
          <NormalHeader config={config}/>
          {content}
        </>}
      </div>
    )