123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- import React, { Component } from "react";
- import { Button, Modal, Checkbox, } from "antd";
- import $ from "jquery/src/ajax";
- import "./index.less";
- import MySuspend from './index'; // 项目暂停
- class SelectList extends Component {
- constructor(props) {
- super(props);
- this.state = {
- plainOptions: [], // 多选渲染数据
- checkedList: [], // 选中数据的id
- checkedValues: [], // 渲染数据的id
- selectedRows: [], // 项目暂停用到的选中数据
- indeterminate: false,
- checkAll: false,
- suspendVisible: false,
- };
- this.onCheckAllChange = this.onCheckAllChange.bind(this);
- this.onChange = this.onChange.bind(this);
- this.onOk = this.onOk.bind(this);
- this.subClose = this.subClose.bind(this);
- }
- componentDidMount() {
- const { list = [], type } = this.props;
- let options = [];
- let defaultValue = [];
- let arr = [];
- if (type == "suspend") {
- // 项目暂停
- arr = list.filter(v => {
- return (v.stopType != 0 && v.projectStatus != 29)
- });
- } else if (type == "restart") {
- // 项目重启
- arr = list.filter(v => {
- return (v.stopType == 0 && v.stopStatus == 1)
- });
- }
- arr.forEach(item => {
- let obj = {
- label: item.commodityName + "-" + item.id,
- value: item.id
- };
- options.push(obj)
- defaultValue.push(item.id)
- })
- this.setState({
- plainOptions: options,
- checkedValues: defaultValue,
- })
- }
- // 全选
- onCheckAllChange(e) {
- const { checkedValues } = this.state
- this.setState({
- checkedList: e.target.checked ? checkedValues : [],
- indeterminate: false,
- checkAll: e.target.checked,
- });
- }
- // 单选操作
- onChange(checkedList) {
- const { checkedValues } = this.state
- this.setState({
- checkedList,
- indeterminate: !!checkedList.length && (checkedList.length < checkedValues.length),
- checkAll: checkedList.length === checkedValues.length,
- });
- }
- // 确定
- onOk() {
- const { list } = this.props;
- const { checkedList } = this.state
- let rows = [];
- for (var i = 0; i < list.length; i++) {
- for (var j = 0; j < checkedList.length; j++) {
- if (list[i].id == checkedList[j]) {
- let obj = {
- commodityName: list[i].commodityName,
- id: list[i].id
- }
- rows.push(obj)
- }
- }
- }
- this.setState({
- selectedRows: rows,
- suspendVisible: true
- })
- }
- // 关闭
- subClose() {
- const { subClose } = this.props
- this.setState({
- suspendVisible: false,
- }, () => {
- subClose()
- })
- }
- render() {
- const { plainOptions, checkedValues, indeterminate, checkAll, checkedList } = this.state
- const { visible, subClose, } = this.props
- const CheckboxGroup = Checkbox.Group;
- return (
- <Modal
- maskClosable={false}
- visible={visible}
- width={"520px"}
- title="请勾选"
- footer=""
- onCancel={subClose}
- >
- <div>
- {
- plainOptions.length == 0
- ? <div
- style={{
- margin: 50,
- color: "red",
- fontSize: "24px",
- textAlign: "center"
- }}
- >暂无可操作的项目</div>
- : <div>
- <Checkbox
- indeterminate={indeterminate}
- onChange={this.onCheckAllChange}
- checked={checkAll}>
- 全选
- </Checkbox>
- <CheckboxGroup
- className={"selectlist"}
- options={plainOptions}
- value={checkedList}
- onChange={this.onChange}
- />
- </div>
- }
- <div style={{ height: 30 }}>
- <Button
- disabled={checkedList.length == 0}
- type="primary"
- style={{
- float: "right",
- }}
- onClick={this.onOk}
- >
- 确定
- </Button>
- </div>
- </div>
- {
- this.state.suspendVisible &&
- <MySuspend
- type={this.props.type}
- title={this.props.type == "suspend" ? "项目暂停" : "项目重启"}
- contractNo={this.props.contractNo}
- orderNo={this.props.orderNo}
- userName={this.props.userName}
- selectedRowKeys={this.state.checkedList}
- selectedRows={this.state.selectedRows}
- visible={this.state.suspendVisible}
- subClose={this.subClose}
- />
- }
- </Modal>
- );
- }
- }
- export default SelectList;
|