# Deny否定关键词组件

> 此组件为纯业务组件，部分内容需要注意，使用之前需要熟悉业务并对接口和回调进行扩展！！！

## Deny单计划操作API（所有参数必传）

- `normalValue: [String]` ： 现计划中的普通否定关键词,由回车分隔多个符号。
- `accurateValue: [String]` ： 现计划中的精确否定关键词,由回车分隔多个符号。
- `submitFun: [Function]` : 成功修改关键词后的调用方法，会在参数中返回修改完后的 `normalValue`, `accurateValue`。
- `cancelFun: [Function]` : 关闭否定关键词弹窗后的回调方法。
- `pid: [String]` : 计划的 `id`。

## Deny多组计划批量操作API（所有参数必传）

- `ids: [Arrary]` ： 批量操作的计划的一组`id`。
- `usage: [String]` ： 批量操作使用的地方，可选：`group`,`batch-plan`,`batch-group`。
- `submitFun: [Function]` : 成功修改关键词后的调用方法，会在参数中返回修改完后的 `normalValue`, `accurateValue` , `multiDenyType`, `multiDenyTypeAccurate` 
- `cancelFun: [Function]` : 关闭否定关键词弹窗后的回调方法。

> `multiDenyType`, `multiDenyTypeAccurate` 对应修改方式：在原有基础上添加为`0`, 全部替换为`1`

## 切记格式！！

`normalValue` 和 `accurateValue` 多个关键词格式根据原系统为回车符号分隔，此符号在window系统为 `\r\n`;


## Deny组件使用方法（内含单计划和批量操作使用方法）

```javascript
import React, { Component } from 'react';
import Deny from './components/Deny';

class App extends Component {
   constructor(props) {
    super(props);
    this.state = {
      showDeny: false,
      showMultiDeny: false,
      alldata:[
        {
          normalValue: `123
          555
          7ad`,
          accurateValue: `a
          asdaa`,
          pid: '111'
        },{
          normalValue: `123
          555
          7aaad`,
          accurateValue: `aaa
          asdasdaa`,
          pid: '222'
        },{
          normalValue: ``,
          accurateValue: ``,
          pid: '333'
        }
      ],
      denyNow: {
        normalValue: '',
        accurateValue: ''
      }
    }
  }

  render() {
    const {denyNow, alldata, showDeny, showMultiDeny, denysIdNow} = this.state;

    return (
      <div className="App">
        <button onClick={()=> this.startMultiDeny([0,2])}>批量修改第一个和第三个</button>
        <table>
          { alldata.map((item, i)=>{
            return <tr key={i}><td>{i+1}</td><td><button onClick={()=> this.startOneDeny(alldata[i])}>触发器和内容存储的地方</button></td></tr>
          }) }
        </table>
        { showDeny && denyNow &&
          <Deny
          normalValue={denyNow.normalValue}
          accurateValue={denyNow.accurateValue}
          pid={denyNow.pid}
          cancelFun={()=> this.cancelClick()}
          successFun={(normal, accurate, param)=> this.changeDeny(normal, accurate, param)}/>
        }
        { showMultiDeny && denysIdNow &&
          <Deny
          ids={denysIdNow}
          useage={'group'}
          cancelFun={()=> this.cancelClick()}
          successFun={(normal, accurate, param)=> this.changeDeny(normal, accurate, param)}/>
        }
      </div>
    );
  }

  startOneDeny(data) {
    if (data) {
      this.setState({
        denyNow: data,
        showDeny: true
      })
    }
  }

  startMultiDeny(indexs) {
    if(indexs && indexs.length){
      const denysIdNow = [];
      const {alldata} = this.state;
      indexs.map((item) =>{
        denysIdNow.push(alldata[item].pid);
      })
      
      this.setState({denysIdNow, showMultiDeny: true})
    }
  }

  cancelClick() {
    this.setState({showDeny: false});
    this.setState({showMultiDeny: false});
  }

  successFun(normalValue, accurateValue, param) {
    this.setState({
      normalValue: normalValue,
      accurateValue: accurateValue
    })
    this.cancelClick()
  }
}

export default App;

```