fx-form-widget
Version:
214 lines (212 loc) • 6.93 kB
JavaScript
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;