ModalDelete.js 2.6 KB
Newer Older
王绍森's avatar
王绍森 committed
1 2 3 4 5 6 7 8 9
/**
 * 钟是志
 * 2019年2月26日
 * 用于 弹出提示信息 确认用户是否删除数据
 * 一个删除按钮 + 点击按钮显示的提示
 * 点确定 调接口->关闭弹窗 刷新页面
 * */
import ButtonDiy from '@/baseComponent/ButtonDiy';
import React, { Component, Fragment } from 'react';
10
import { message, Modal } from 'antd';
王绍森's avatar
王绍森 committed
11 12 13 14
import PropTypes from 'prop-types';
import * as service from '@/highOrderComponent/Service';

export default class ModalDelete extends Component {
15 16 17 18 19 20
	handleDelete = () => {
		const { selectRows, checkBeforeDelete, cannotDeleteSentence, deleteSentence } = this.props;
		if (!selectRows.length) {
			message.warning('请选择你要删除的数据');
			return false;
		}
王绍森's avatar
王绍森 committed
21

22 23 24 25 26 27 28 29 30 31 32 33
		if (checkBeforeDelete) {
			const check = checkBeforeDelete(selectRows);
			if (!check) {
				if (cannotDeleteSentence) {
					message.warning(cannotDeleteSentence);
					return false;
				} else {
					message.warning('数据关联,不能删除');
					return false;
				}
			}
		}
王绍森's avatar
王绍森 committed
34

35 36 37 38 39 40 41 42
		Modal.confirm({
			title: '删除',
			content: deleteSentence || `你确定要删除吗?`,
			onOk: this.handleOk,
			okText: '确认',
			cancelText: '取消',
		});
	};
王绍森's avatar
王绍森 committed
43

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
	handleOk = () => {
		const { selectRows, postKey, sourceKey, url, responseCallBack, getPage } = this.props;
		const data = {};
		data[postKey] = selectRows.map((item) => {
			return item[sourceKey];
		});
		data[postKey] = data[postKey].join(',');
		service.deleteData(data, url).then((response) => {
			if (!response) {
				getPage();
			}
			if (responseCallBack && !responseCallBack(response)) {
				return false;
			} else {
				message.success('删除成功');
				getPage();
			}
		});
	};
王绍森's avatar
王绍森 committed
63

64 65 66 67 68 69 70 71
	render() {
		const { name, className } = this.props;
		return (
			<Fragment>
				<ButtonDiy name={name} className={className} handleClick={this.handleDelete} />
			</Fragment>
		);
	}
王绍森's avatar
王绍森 committed
72 73
}
ModalDelete.propTypes = {
74 75 76 77 78 79 80 81 82
	name: PropTypes.string, // 按钮名称和 弹窗的标题
	selectRows: PropTypes.array.isRequired, // 选择的数据.
	className: PropTypes.string, // 按钮样式
	sourceKey: PropTypes.string.isRequired, // 通过什么字段删除
	postKey: PropTypes.string, // 提交的字段名. ids
	url: PropTypes.string.isRequired, // 接口url
	responseCallBack: PropTypes.func, // 接口返回数据检查
	getPage: PropTypes.func, // 刷新页面的方法
	checkBeforeDelete: PropTypes.func, // 在删除前对数据进行检查 如果返回false 则不能删除数据
王绍森's avatar
王绍森 committed
83 84 85
};

ModalDelete.defaultProps = {
86 87 88 89 90 91 92 93 94
	name: '删除',
	className: 'defaultRed',
	url: 'asdasd/asdasd',
	deleteKey: 'id',
	postKey: 'ids',
	selectRows: [],
	responseCallBack: (response) => {
		return !!response;
	},
王绍森's avatar
王绍森 committed
95
};