UNPKG

fx-form-widget

Version:
214 lines (212 loc) 6.93 kB
import _Modal from "antd/es/modal"; import _Table from "antd/es/table"; import _extends from "@babel/runtime/helpers/extends"; import _Button from "antd/es/button"; import _Input from "antd/es/input"; import _message from "antd/es/message"; import _theme from "antd/es/theme"; import React, { useEffect, useState } from 'react'; import { PlusCircleOutlined, UndoOutlined } from '@ant-design/icons'; import httpClient from '../../config/httpClient'; import useVariants from 'antd/es/form/hooks/useVariants'; import './index.less'; var useToken = _theme.useToken; var Color = function Color(_ref) { var value = _ref.value, _onChange = _ref.onChange, schema = _ref.schema, isInit = _ref.isInit; var readonly = schema.readonly; var _useToken = useToken(), token = _useToken.token; var _useVariants = useVariants(undefined), variant = _useVariants[0]; var _useState = useState(), usageInfo = _useState[0], setUsageInfo = _useState[1]; var _useState2 = useState([]), incrList = _useState2[0], setIncrList = _useState2[1]; var _useState3 = useState([]), selectedRowKeys = _useState3[0], setSelectedRowKeys = _useState3[1]; var _useState4 = useState(false), isModalVisible = _useState4[0], setModalVisible = _useState4[1]; var _useState5 = useState(), selectIncr = _useState5[0], setSelectIncr = _useState5[1]; useEffect(function () { if (value && incrList.length) { var _checkIncr$; var checkIncr = incrList.filter(function (item) { return value === null || value === void 0 ? void 0 : value.includes(item.prefix); }); var prefix = checkIncr.length ? [(_checkIncr$ = checkIncr[0]) === null || _checkIncr$ === void 0 ? void 0 : _checkIncr$.prefix] : []; setSelectedRowKeys(prefix); setSelectIncr(prefix[0]); } else { setSelectedRowKeys([]); } }, [value, incrList]); useEffect(function () { isInit && getIncrList(); }, [isInit]); // 获取供应商编码 type:20 var getUsageInfo = function getUsageInfo(prefix) { return new Promise(function (resolve, reject) { try { httpClient.post('/bestgift/basic/incr/getInfoByUsage', { prefix: prefix, type: 20 }).then(function (res) { if (res && res.success && res.data) { setUsageInfo(res.data); _onChange && _onChange("" + res.data.prefix + res.data.random); resolve(true); } reject(false); }); } catch (error) { reject(false); } }); }; // 编码状态 state:10(启用)、获取供应商编码 type:20 var getIncrList = function getIncrList() { return new Promise(function (resolve, reject) { try { httpClient.post('/bestgift/basic/incr/getList', { state: 10, type: 20 }).then(function (res) { if (res && res.success && res.data) { var _res$data$, _res$data$2; setIncrList(res.data); ((_res$data$ = res.data[0]) === null || _res$data$ === void 0 ? void 0 : _res$data$.prefix) && !value && getUsageInfo((_res$data$2 = res.data[0]) === null || _res$data$2 === void 0 ? void 0 : _res$data$2.prefix); resolve(true); } reject(false); }); } catch (error) { reject(false); } }); }; var checkGoodsNumber = function checkGoodsNumber() { if (!!selectIncr) { getUsageInfo(selectIncr)["finally"](function () { setModalVisible(false); }); } else { _message.error('请选择编码规则'); } }; var rowSelection = { columnWidth: 50, selectedRowKeys: selectedRowKeys, onChange: function onChange(selectedRowKeys) { setSelectedRowKeys(selectedRowKeys); setSelectIncr(selectedRowKeys[0]); } }; return /*#__PURE__*/React.createElement("div", { className: "fx__form-coding-rules" }, /*#__PURE__*/React.createElement(_Input.Group, { compact: true }, /*#__PURE__*/React.createElement(_Input, { allowClear: true, autoComplete: "off", maxLength: 30, value: value, onChange: function onChange(e) { return _onChange && _onChange(e.target.value.replace(/[^\a-\z\A-\Z0-9\-]/g, '')); }, disabled: readonly || (usageInfo === null || usageInfo === void 0 ? void 0 : usageInfo.allowEdit) === -10, style: { width: readonly ? '100%' : 'calc(100% - 70px)' }, placeholder: "\u8BF7\u9009\u62E9\u4F9B\u5E94\u5546\u7F16\u7801" }), !readonly && /*#__PURE__*/React.createElement(_Button, { style: variant === "filled" ? { borderColor: "transparent", boxShadow: "none", backgroundColor: token.colorFillTertiary } : {}, className: "fx__goods-link-btn", onClick: function onClick() { setModalVisible(true); getIncrList(); // 获取增量规则 } }, "\u5207\u6362\u7F16\u7801")), /*#__PURE__*/React.createElement(_Modal, { title: "\u9009\u62E9\u4F9B\u5E94\u5546\u7F16\u7801\u89C4\u5219", open: isModalVisible, styles: { body: { padding: '0' } }, maskClosable: true, onCancel: function onCancel() { return setModalVisible(false); }, footer: /*#__PURE__*/React.createElement("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'center' } }, /*#__PURE__*/React.createElement("div", { style: { flex: 1, textAlign: 'left' } }, /*#__PURE__*/React.createElement(_Button, { key: "add", type: "link", size: "small", icon: /*#__PURE__*/React.createElement(PlusCircleOutlined, null), onClick: function onClick() { return window.open('/home/application/supply-chain/goods/coding'); } }, "\u65B0\u589E\u89C4\u5219"), /*#__PURE__*/React.createElement(_Button, { key: "refresh", type: "link", size: "small", icon: /*#__PURE__*/React.createElement(UndoOutlined, null), onClick: function onClick() { return getIncrList().then(function () { return _message.success('刷新成功!'); }); } }, "\u5237\u65B0\u5217\u8868")), /*#__PURE__*/React.createElement(_Button, { key: "submit", type: "primary", onClick: checkGoodsNumber }, "\u786E\u5B9A")) }, /*#__PURE__*/React.createElement(_Table, { rowSelection: _extends({ type: 'radio' }, rowSelection), size: "small", columns: [{ title: '编码前缀', dataIndex: 'prefix', align: 'center' }, { title: '是否可编辑', dataIndex: 'allowEdit', align: 'center', render: function render(val) { return val === 10 ? '是' : '否'; } }], rowKey: "prefix", scroll: { y: 300 }, dataSource: incrList, pagination: false }))); }; export default Color;