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,31 +546,24 @@
    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()
      let _data = result.data[0]
      _data.$$uuid = _data[setting.primaryKey] || ''
      _data.$$BID = BID || ''
      _data.$$BData = BData || ''
      if (config.absFields) {
        config.absFields.forEach(f => {
          if (!isNaN(_data[f])) {
            _data[f] = Math.abs(_data[f])
          }
        })
      }
      try {
      if (!result.data) {
      // if (result.data && result.data[0]) {
        let _data = result.data[0]
        _data.$$uuid = _data[setting.primaryKey] || ''
        _data.$$BID = BID || ''
        _data.$$BData = BData || ''
        if (config.absFields) {
          config.absFields.forEach(f => {
            if (!isNaN(_data[f])) {
              _data[f] = Math.abs(_data[f])
            }
          })
        }
        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)
      }
      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
      this.setState({
        data,
        selectedData,
        loading: false
      })
    } else {
      this.setState({
        loading: false
@@ -845,65 +881,44 @@
      style.display = 'none'
    }
    let content = <>
      {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 ' + (!actions || actions.length === 0 ? 'no-action' : '')}>
        <MainTable
          setting={setting}
          columns={columns}
          MenuID={config.uuid}
          data={this.state.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>
    </>
    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>
            {content}
          </Panel>
        </Collapse> : <>
          <NormalHeader config={config}/>
          {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 ' + (!actions || actions.length === 0 ? 'no-action' : '')}>
            <MainTable
              setting={setting}
              columns={columns}
              MenuID={config.uuid}
              data={this.state.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>
          {content}
        </>}
      </div>
    )