UNPKG

app-base-react

Version:
592 lines (523 loc) 19.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _table = require('antd/lib/table'); var _table2 = _interopRequireDefault(_table); var _input = require('antd/lib/input'); var _input2 = _interopRequireDefault(_input); var _row = require('antd/lib/row'); var _row2 = _interopRequireDefault(_row); var _col = require('antd/lib/col'); var _col2 = _interopRequireDefault(_col); var _modal = require('antd/lib/modal'); var _modal2 = _interopRequireDefault(_modal); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _button = require('antd/lib/button'); var _button2 = _interopRequireDefault(_button); var _message2 = require('antd/lib/message'); var _message3 = _interopRequireDefault(_message2); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); require('antd/lib/table/style/css'); require('antd/lib/input/style/css'); require('antd/lib/row/style/css'); require('antd/lib/col/style/css'); require('antd/lib/modal/style/css'); require('antd/lib/button/style/css'); require('antd/lib/message/style/css'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _index = require('../../../library/generator/index.js'); var _index2 = _interopRequireDefault(_index); var _index3 = require('../../../library/generator/index1.js'); var _index4 = _interopRequireDefault(_index3); var _utilAxios = require('../../../library/util-axios'); var _utilAxios2 = _interopRequireDefault(_utilAxios); var _utilModal = require('../../../library/util-modal'); var _utilModal2 = _interopRequireDefault(_utilModal); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // import * as api from '@/api'; // import { UtilModal } from 'app-base-react'; // 系统配置-申报模板 var title = '申报模板'; var url = 'CfgDictionary/'; // const FormView = lazy(() => import('./DeclTemplateView')); var FormEdit = (0, _react.lazy)(function () { return import('./DeclTemplateEdit'); }); var CfgDictionaryList = function (_React$Component) { _inherits(CfgDictionaryList, _React$Component); function CfgDictionaryList(props) { _classCallCheck(this, CfgDictionaryList); var _this2 = _possibleConstructorReturn(this, (CfgDictionaryList.__proto__ || Object.getPrototypeOf(CfgDictionaryList)).call(this, props)); _this2.onChange = function (pagination, filters, sorter) { var params = _this2.state.params; params.pageSize = pagination.pageSize; params.pageIndex = pagination.current; _this2.onLoad(params); }; _this2.onSearch = function (value) { var params = _this2.state.params; params.name = value; _this2.onLoad(params); }; _this2.onAdd = function () { var values = {}; Object.keys(_this2.state.values).forEach(function (key) { return values[key] = undefined; }); _this2.setState({ showView: false, showEdit: true, values: values }); }; _this2.onView = function (values) { _this2.setState({ showView: true, loading: false, values: values }); }; _this2.onEdit = function (values) { var me = _this2; _utilAxios2.default.get(url + 'getModel?id=' + values.id, {}, function (rs) { me.setState({ showEdit: true, showView: false, values: rs.data }); }); }; _this2.onSave = function (values) { _this2.onLoad(_this2.state.params); }; _this2.saveForm = function (val) { try { var options = _this2.formRef2.current.getValue(); var isEmpty = Object.keys(options).length < 2; var me = _this2; if (isEmpty) { _utilModal2.default.confirm({ content: '表单为空,确定保存吗', onOk: function onOk() { me.saveAPI(''); } }); } else { me.saveAPI(JSON.stringify(options)); } } catch (e) { console.log('ERROR:' + e); } }; _this2.saveAPI = function (values) { var me = _this2; var params = _extends({}, _this2.state.record, { memo: values }); _utilAxios2.default.post(url + 'save', params).then(function (rs) { if (rs.success) { _message3.default.info(rs.msg); me.setState({ isModalOpen: false }, function () { return me.onSave(); }); } else { _message3.default.error(rs.msg); } }); }; _this2.handleCancel = function () { _this2.setState({ isModalOpen: false }); }; _this2.onDel = function () { var me = _this2; var _this2$state = _this2.state, selected = _this2$state.selected, selectedRows = _this2$state.selectedRows; if (selected.length == 0) { _message3.default.error('请选择记录!'); return; } var text = ''; _this2.state.hasUseKey.map(function (item) { selectedRows.map(function (item2) { if (item === item2.value) { text += item2.zh_CN + '、'; } }); }); if (text) { _message3.default.error(text + '已被使用,无法删除!'); text = text.slice(-1); return; } _utilModal2.default.confirm({ content: '确定删除?', okText: '确认', cancelText: '取消', onOk: function onOk() { _utilAxios2.default.delete(url + 'delete?id=' + selected).then(function (rs) { if (rs.success) { _message3.default.info(rs.msg); me.onLoad(me.state.params || {}); } else { _message3.default.error(rs.msg); } }); } }); }; _this2.state = { params: { app: 'project', type: '表单模板' }, data: [], pagination: {}, loading: false, selected: [], //Table checked selectedRows: [], //Table checked //显藏控制 showView: false, showEdit: false, //values values: {}, tempValue: '{}', record: {}, isModalOpen: false, optionsTitle: '编辑模板', isReadOnly: false, defaultSettings: [{ title: '基础组件', widgets: [{ text: '输入框', name: 'input', schema: { title: '输入框', type: 'string' }, setting: { props: { title: '选项', type: 'object', labelWidth: 80, properties: { // allowClear: { // title: '是否带清除按钮', // description: '填写内容后才会出现x哦', // type: 'boolean', // }, addonBefore: { title: '前tab', type: 'string' }, addonAfter: { title: '后tab', type: 'string' }, prefix: { title: '前缀', type: 'string' }, suffix: { title: '后缀', type: 'string' } } }, minLength: { title: '最短字数', type: 'number' }, maxLength: { title: '最长字数', type: 'number' }, pattern: { title: '校验正则表达式', type: 'string', props: { placeholder: '填写正则表达式' } } } }], show: true, useCommon: true // TODO: 是否将common }], hasUseKey: [] }; _this2.columns = [{ title: '序号', width: 50, fixed: 'left', render: function render(text, record, index) { return index + 1; } }, { title: '模板应用', dataIndex: 'app', width: 100, render: function render(text, record) { return _react2.default.createElement( 'a', { className: 'btn-detail', onClick: function onClick() { return _this2.onEdit(record); } }, text ); } }, { title: '模板名称', dataIndex: 'zh_CN', width: 120 }, { title: '编辑/预览', dataIndex: 'memo', width: 100, render: function render(text, record) { var ifhasUse = false; _this2.state.hasUseKey.map(function (item) { if (item === record.value) { ifhasUse = true; } }); if (ifhasUse) { return _react2.default.createElement( _button2.default, { onClick: function onClick() { return _this2.setState({ isModalOpen: true, optionsTitle: record.zh_CN, record: record, tempValue: text, isReadOnly: true }); } }, '\u9884\u89C8\u8868\u5355' ); } else { return _react2.default.createElement( _button2.default, { onClick: function onClick() { return _this2.setState({ isModalOpen: true, optionsTitle: record.zh_CN, record: record, tempValue: text, isReadOnly: false }); } }, '\u7F16\u8F91/\u9884\u89C8\u8868\u5355' ); } } }]; _this2.formRef2 = _react2.default.createRef(); return _this2; } _createClass(CfgDictionaryList, [{ key: 'componentDidMount', value: function componentDidMount() { this.onLoad(this.state.params); this.getTemplateMap(); } /*** Table ***/ }, { key: 'onLoad', value: function () { var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(params) { var rs, pagination; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: this.setState({ loading: true }); _context.next = 3; return _utilAxios2.default.get(url + 'getList', params); case 3: rs = _context.sent; pagination = { pageSizeOptions: ['20', '100', '200', '500', '1000'], pageSize: params.pageSize || 20, defaultPageSize: params.pageSize || 20, showSizeChanger: true, showQuickJumper: true, total: rs.total, showTotal: function showTotal(total) { return '\u603B\u8BB0\u5F55 ' + total + ' '; } }; this.setState({ loading: false, showEdit: false, params: params, data: rs.data, pagination: pagination }); case 6: case 'end': return _context.stop(); } } }, _callee, this); })); function onLoad(_x) { return _ref.apply(this, arguments); } return onLoad; }() }, { key: 'getTemplateMap', value: function getTemplateMap() { var params = { pageIndex: 1, pageSize: 99999 }; var _this = this; _utilAxios2.default.get('ProjectManagement/getTemplateMap', params).then(function (rs) { if (rs.success) { var value = rs.data; var res = []; if (value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.constructor === Object) { for (var key in value) { if (value[key]) { res.push(key); } } } _this.setState({ hasUseKey: res }); } }); } }, { key: 'render', value: function render() { var _this3 = this; var tableCfg = { scroll: { y: this.props.height - 210 }, size: 'middle', rowKey: 'id', columns: this.columns, rowSelection: { selectedRowKeys: this.state.selected, onChange: function onChange(selectedRowKeys, selectedRows) { _this3.setState({ selected: selectedRowKeys, selectedRows: selectedRows }); } }, rowClassName: function rowClassName(record) { return record.id === _this3.state.selectedRowId ? 'row-selected' : ''; }, onRow: function onRow(record) { return { onClick: function onClick(event) { _this3.setState({ selectedRowId: record.id }); } }; }, dataSource: this.state.data, pagination: this.state.pagination, loading: this.state.loading, onChange: this.onChange }; return _react2.default.createElement( _react.Fragment, null, _react2.default.createElement( _modal2.default, { title: this.state.optionsTitle, visible: this.state.isModalOpen, onCancel: this.handleCancel, width: '90%', centered: true, destroyOnClose: true, footer: null, bodyStyle: { padding: '0' } }, _react2.default.createElement( 'div', { style: { height: '90vh' } }, this.state.isReadOnly ? _react2.default.createElement(_index4.default, { showDefaultForm: true, defaultValue: this.state.tempValue ? JSON.parse(this.state.tempValue) : undefined }) : _react2.default.createElement(_index2.default, { ref: this.formRef2, showDefaultForm: true, defaultValue: this.state.tempValue ? JSON.parse(this.state.tempValue) : undefined, settings: this.state.defaultSettings, extraButtons: [{ text: '保存', onClick: function onClick() { return _this3.saveForm(); } }] }) ) ), _react2.default.createElement( 'div', { className: 'app-admin' }, _react2.default.createElement( 'div', { className: this.state.showView || this.state.showEdit ? 'hide' : '' }, _react2.default.createElement( _row2.default, null, _react2.default.createElement( _col2.default, { className: 'main-title' }, _react2.default.createElement('i', { className: 'iconfont icon-title' }), title ) ), _react2.default.createElement( _row2.default, { className: 'main-toolbar' }, _react2.default.createElement( _col2.default, { className: 'text-left', xs: 12 }, _react2.default.createElement( _button2.default, { className: 'btn-add', onClick: this.onAdd }, _react2.default.createElement('i', { className: 'iconfont icon-add' }), '\u5F55\u5165' ), _react2.default.createElement( _button2.default, { className: 'btn-del', onClick: this.onDel }, _react2.default.createElement('i', { className: 'iconfont icon-del' }), '\u5220\u9664' ) ), _react2.default.createElement(_col2.default, { className: 'text-left', xs: 6 }), _react2.default.createElement( _col2.default, { className: 'text-right', xs: 6 }, _react2.default.createElement(_input2.default.Search, { placeholder: '\u8BF7\u8F93\u5165\u6A21\u677F\u540D\u79F0', onSearch: function onSearch(value) { var params = _this3.state.params; params.zh_CN = value; _this3.setState({ params: params }, function () { return _this3.onLoad(_this3.state.params); }); }, enterButton: true }) ) ), _react2.default.createElement(_table2.default, tableCfg) ), _react2.default.createElement( _react.Suspense, { fallback: _react2.default.createElement('div', null) }, this.state.showEdit ? _react2.default.createElement(FormEdit, { height: this.props.height - 140, values: this.state.values, onSave: this.onSave, onCancel: function onCancel() { _this3.setState({ showEdit: false }); }, onEditReturn: function onEditReturn() { _this3.setState({ showEdit: false, showView: true }); } }) : '' ) ) ); } }]); return CfgDictionaryList; }(_react2.default.Component); exports.default = CfgDictionaryList;