@bit-sun/business-component 2.0.33 → 2.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -4827,7 +4827,13 @@ var InputElement = function InputElement(_ref) {
4827
4827
  };
4828
4828
 
4829
4829
  var BillEntry = function BillEntry(_ref3) {
4830
- var onSaveCallback = _ref3.onSaveCallback;
4830
+ var onSaveCallback = _ref3.onSaveCallback,
4831
+ _ref3$validDataUrl = _ref3.validDataUrl,
4832
+ validDataUrl = _ref3$validDataUrl === void 0 ? "/items/sku/import/check" : _ref3$validDataUrl,
4833
+ _ref3$isBrandAuth = _ref3.isBrandAuth,
4834
+ isBrandAuth = _ref3$isBrandAuth === void 0 ? true : _ref3$isBrandAuth,
4835
+ _ref3$isCheckStockNum = _ref3.isCheckStockNum,
4836
+ isCheckStockNum = _ref3$isCheckStockNum === void 0 ? true : _ref3$isCheckStockNum;
4831
4837
  var columns = [{
4832
4838
  title: 'SKU编码',
4833
4839
  width: 150,
@@ -4909,6 +4915,11 @@ var BillEntry = function BillEntry(_ref3) {
4909
4915
 
4910
4916
  var tableRef = useRef(null);
4911
4917
 
4918
+ var _useState13 = useState(false),
4919
+ _useState14 = _slicedToArray(_useState13, 2),
4920
+ loading = _useState14[0],
4921
+ setLoading = _useState14[1];
4922
+
4912
4923
  var callSelectItem = function callSelectItem(index, item) {
4913
4924
  var _tableRef$current2;
4914
4925
 
@@ -4983,6 +4994,136 @@ var BillEntry = function BillEntry(_ref3) {
4983
4994
  }
4984
4995
  }
4985
4996
  }]);
4997
+
4998
+ var isSkuCanEntry = function isSkuCanEntry(resultData) {
4999
+ // 处理业务参数
5000
+ var otherParams = {};
5001
+
5002
+ if (isBrandAuth) {
5003
+ otherParams = {
5004
+ brandAuth: 'ctl-withAuth'
5005
+ };
5006
+ }
5007
+
5008
+ return axios.post(validDataUrl, _objectSpread2(_objectSpread2({}, otherParams), {}, {
5009
+ columns: ["skuCode", "quantity"],
5010
+ data: resultData.map(function (i) {
5011
+ return {
5012
+ skuCode: i.skuCode,
5013
+ quality: i.count
5014
+ };
5015
+ }),
5016
+ checkStockNum: isCheckStockNum
5017
+ })).then(function (result) {
5018
+ result = result.data;
5019
+
5020
+ if (result.status !== '0') {
5021
+ message.error(result.msg);
5022
+ return {
5023
+ flag: false
5024
+ };
5025
+ } else {
5026
+ var res = result.data || [];
5027
+ var errorList = res.filter(function (i) {
5028
+ return !i.flag;
5029
+ });
5030
+ return {
5031
+ flag: !(errorList === null || errorList === void 0 ? void 0 : errorList.length),
5032
+ errorList: errorList
5033
+ };
5034
+ }
5035
+ }).catch(function () {
5036
+ return {
5037
+ flag: false
5038
+ };
5039
+ });
5040
+ };
5041
+
5042
+ var handleSubmit = /*#__PURE__*/function () {
5043
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5044
+ var canEntryObject, _canEntryObject$error, messageInfo;
5045
+
5046
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
5047
+ while (1) {
5048
+ switch (_context.prev = _context.next) {
5049
+ case 0:
5050
+ if (data === null || data === void 0 ? void 0 : data.length) {
5051
+ _context.next = 3;
5052
+ break;
5053
+ }
5054
+
5055
+ message.warning('至少录入一条数据');
5056
+ return _context.abrupt("return");
5057
+
5058
+ case 3:
5059
+ if (data === null || data === void 0 ? void 0 : data.every(function (d) {
5060
+ return d.skuCode && d.name;
5061
+ })) {
5062
+ _context.next = 6;
5063
+ break;
5064
+ }
5065
+
5066
+ message.warning('请选择商品!');
5067
+ return _context.abrupt("return");
5068
+
5069
+ case 6:
5070
+ if (data === null || data === void 0 ? void 0 : data.every(function (d) {
5071
+ return d.count;
5072
+ })) {
5073
+ _context.next = 9;
5074
+ break;
5075
+ }
5076
+
5077
+ message.warning('请填写商品数量!');
5078
+ return _context.abrupt("return");
5079
+
5080
+ case 9:
5081
+ _context.next = 11;
5082
+ return isSkuCanEntry(data);
5083
+
5084
+ case 11:
5085
+ canEntryObject = _context.sent;
5086
+
5087
+ if (!((canEntryObject === null || canEntryObject === void 0 ? void 0 : canEntryObject.flag) === false)) {
5088
+ _context.next = 16;
5089
+ break;
5090
+ }
5091
+
5092
+ messageInfo = (canEntryObject === null || canEntryObject === void 0 ? void 0 : (_canEntryObject$error = canEntryObject.errorList) === null || _canEntryObject$error === void 0 ? void 0 : _canEntryObject$error.length) && (canEntryObject === null || canEntryObject === void 0 ? void 0 : canEntryObject.errorList.map(function (i) {
5093
+ return /*#__PURE__*/React.createElement("div", null, i.skuCode, "\u6821\u9A8C\u5931\u8D25\uFF1A", i.checkResults);
5094
+ }));
5095
+ messageInfo && message.warning({
5096
+ content: messageInfo,
5097
+ duration: 6
5098
+ });
5099
+ return _context.abrupt("return");
5100
+
5101
+ case 16:
5102
+ setLoading(true);
5103
+ onSaveCallback(data).then(function (res) {
5104
+ {
5105
+ message.success('保存成功');
5106
+ }
5107
+
5108
+ setLoading(false);
5109
+ }).catch(function (Error) {
5110
+ message.error(Error);
5111
+ setLoading(false);
5112
+ });
5113
+
5114
+ case 18:
5115
+ case "end":
5116
+ return _context.stop();
5117
+ }
5118
+ }
5119
+ }, _callee);
5120
+ }));
5121
+
5122
+ return function handleSubmit() {
5123
+ return _ref4.apply(this, arguments);
5124
+ };
5125
+ }();
5126
+
4986
5127
  return /*#__PURE__*/React.createElement("div", {
4987
5128
  className: 'add_select'
4988
5129
  }, /*#__PURE__*/React.createElement("div", {
@@ -4992,8 +5133,9 @@ var BillEntry = function BillEntry(_ref3) {
4992
5133
  }, /*#__PURE__*/React.createElement("div", null, "\u5FEB\u901F\u5F55\u5165"), /*#__PURE__*/React.createElement(Button, {
4993
5134
  type: "primary",
4994
5135
  onClick: function onClick() {
4995
- onSaveCallback(data);
4996
- }
5136
+ return handleSubmit();
5137
+ },
5138
+ loading: loading
4997
5139
  }, "\u63D0\u4EA4")), /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", null, "*"), " \xA0\u5FEB\u6377\u952E\uFF1A\u3010Tab\u3011-\u8DF3\u683C\u5207\u6362\uFF1B\u3010Shift+\u2190\u3001\u2192\u3011-\u5F53\u524D\u884C\u5DE6\u3001\u53F3\u79FB\u52A8\uFF1B\u3010 \u2191\u3001\u2193\u3011-\u5F53\u524D\u5217\u4E0A\u3001\u4E0B\u79FB\u52A8\uFF1B\u3010ctrl+Delete\u3011-\u5220\u9664\u5F53\u524D\u884C\uFF1B")), /*#__PURE__*/React.createElement("div", {
4998
5140
  className: 'add_select_wrapper_select add_select_wrapper_select_quick'
4999
5141
  }, /*#__PURE__*/React.createElement(Table, _defineProperty({
package/dist/index.js CHANGED
@@ -4837,7 +4837,13 @@ var InputElement = function InputElement(_ref) {
4837
4837
  };
4838
4838
 
4839
4839
  var BillEntry = function BillEntry(_ref3) {
4840
- var onSaveCallback = _ref3.onSaveCallback;
4840
+ var onSaveCallback = _ref3.onSaveCallback,
4841
+ _ref3$validDataUrl = _ref3.validDataUrl,
4842
+ validDataUrl = _ref3$validDataUrl === void 0 ? "/items/sku/import/check" : _ref3$validDataUrl,
4843
+ _ref3$isBrandAuth = _ref3.isBrandAuth,
4844
+ isBrandAuth = _ref3$isBrandAuth === void 0 ? true : _ref3$isBrandAuth,
4845
+ _ref3$isCheckStockNum = _ref3.isCheckStockNum,
4846
+ isCheckStockNum = _ref3$isCheckStockNum === void 0 ? true : _ref3$isCheckStockNum;
4841
4847
  var columns = [{
4842
4848
  title: 'SKU编码',
4843
4849
  width: 150,
@@ -4919,6 +4925,11 @@ var BillEntry = function BillEntry(_ref3) {
4919
4925
 
4920
4926
  var tableRef = React.useRef(null);
4921
4927
 
4928
+ var _useState13 = React.useState(false),
4929
+ _useState14 = _slicedToArray(_useState13, 2),
4930
+ loading = _useState14[0],
4931
+ setLoading = _useState14[1];
4932
+
4922
4933
  var callSelectItem = function callSelectItem(index, item) {
4923
4934
  var _tableRef$current2;
4924
4935
 
@@ -4993,6 +5004,136 @@ var BillEntry = function BillEntry(_ref3) {
4993
5004
  }
4994
5005
  }
4995
5006
  }]);
5007
+
5008
+ var isSkuCanEntry = function isSkuCanEntry(resultData) {
5009
+ // 处理业务参数
5010
+ var otherParams = {};
5011
+
5012
+ if (isBrandAuth) {
5013
+ otherParams = {
5014
+ brandAuth: 'ctl-withAuth'
5015
+ };
5016
+ }
5017
+
5018
+ return axios__default['default'].post(validDataUrl, _objectSpread2(_objectSpread2({}, otherParams), {}, {
5019
+ columns: ["skuCode", "quantity"],
5020
+ data: resultData.map(function (i) {
5021
+ return {
5022
+ skuCode: i.skuCode,
5023
+ quality: i.count
5024
+ };
5025
+ }),
5026
+ checkStockNum: isCheckStockNum
5027
+ })).then(function (result) {
5028
+ result = result.data;
5029
+
5030
+ if (result.status !== '0') {
5031
+ antd.message.error(result.msg);
5032
+ return {
5033
+ flag: false
5034
+ };
5035
+ } else {
5036
+ var res = result.data || [];
5037
+ var errorList = res.filter(function (i) {
5038
+ return !i.flag;
5039
+ });
5040
+ return {
5041
+ flag: !(errorList === null || errorList === void 0 ? void 0 : errorList.length),
5042
+ errorList: errorList
5043
+ };
5044
+ }
5045
+ }).catch(function () {
5046
+ return {
5047
+ flag: false
5048
+ };
5049
+ });
5050
+ };
5051
+
5052
+ var handleSubmit = /*#__PURE__*/function () {
5053
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
5054
+ var canEntryObject, _canEntryObject$error, messageInfo;
5055
+
5056
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
5057
+ while (1) {
5058
+ switch (_context.prev = _context.next) {
5059
+ case 0:
5060
+ if (data === null || data === void 0 ? void 0 : data.length) {
5061
+ _context.next = 3;
5062
+ break;
5063
+ }
5064
+
5065
+ antd.message.warning('至少录入一条数据');
5066
+ return _context.abrupt("return");
5067
+
5068
+ case 3:
5069
+ if (data === null || data === void 0 ? void 0 : data.every(function (d) {
5070
+ return d.skuCode && d.name;
5071
+ })) {
5072
+ _context.next = 6;
5073
+ break;
5074
+ }
5075
+
5076
+ antd.message.warning('请选择商品!');
5077
+ return _context.abrupt("return");
5078
+
5079
+ case 6:
5080
+ if (data === null || data === void 0 ? void 0 : data.every(function (d) {
5081
+ return d.count;
5082
+ })) {
5083
+ _context.next = 9;
5084
+ break;
5085
+ }
5086
+
5087
+ antd.message.warning('请填写商品数量!');
5088
+ return _context.abrupt("return");
5089
+
5090
+ case 9:
5091
+ _context.next = 11;
5092
+ return isSkuCanEntry(data);
5093
+
5094
+ case 11:
5095
+ canEntryObject = _context.sent;
5096
+
5097
+ if (!((canEntryObject === null || canEntryObject === void 0 ? void 0 : canEntryObject.flag) === false)) {
5098
+ _context.next = 16;
5099
+ break;
5100
+ }
5101
+
5102
+ messageInfo = (canEntryObject === null || canEntryObject === void 0 ? void 0 : (_canEntryObject$error = canEntryObject.errorList) === null || _canEntryObject$error === void 0 ? void 0 : _canEntryObject$error.length) && (canEntryObject === null || canEntryObject === void 0 ? void 0 : canEntryObject.errorList.map(function (i) {
5103
+ return /*#__PURE__*/React__default['default'].createElement("div", null, i.skuCode, "\u6821\u9A8C\u5931\u8D25\uFF1A", i.checkResults);
5104
+ }));
5105
+ messageInfo && antd.message.warning({
5106
+ content: messageInfo,
5107
+ duration: 6
5108
+ });
5109
+ return _context.abrupt("return");
5110
+
5111
+ case 16:
5112
+ setLoading(true);
5113
+ onSaveCallback(data).then(function (res) {
5114
+ {
5115
+ antd.message.success('保存成功');
5116
+ }
5117
+
5118
+ setLoading(false);
5119
+ }).catch(function (Error) {
5120
+ antd.message.error(Error);
5121
+ setLoading(false);
5122
+ });
5123
+
5124
+ case 18:
5125
+ case "end":
5126
+ return _context.stop();
5127
+ }
5128
+ }
5129
+ }, _callee);
5130
+ }));
5131
+
5132
+ return function handleSubmit() {
5133
+ return _ref4.apply(this, arguments);
5134
+ };
5135
+ }();
5136
+
4996
5137
  return /*#__PURE__*/React__default['default'].createElement("div", {
4997
5138
  className: 'add_select'
4998
5139
  }, /*#__PURE__*/React__default['default'].createElement("div", {
@@ -5002,8 +5143,9 @@ var BillEntry = function BillEntry(_ref3) {
5002
5143
  }, /*#__PURE__*/React__default['default'].createElement("div", null, "\u5FEB\u901F\u5F55\u5165"), /*#__PURE__*/React__default['default'].createElement(antd.Button, {
5003
5144
  type: "primary",
5004
5145
  onClick: function onClick() {
5005
- onSaveCallback(data);
5006
- }
5146
+ return handleSubmit();
5147
+ },
5148
+ loading: loading
5007
5149
  }, "\u63D0\u4EA4")), /*#__PURE__*/React__default['default'].createElement("span", null, /*#__PURE__*/React__default['default'].createElement("span", null, "*"), " \xA0\u5FEB\u6377\u952E\uFF1A\u3010Tab\u3011-\u8DF3\u683C\u5207\u6362\uFF1B\u3010Shift+\u2190\u3001\u2192\u3011-\u5F53\u524D\u884C\u5DE6\u3001\u53F3\u79FB\u52A8\uFF1B\u3010 \u2191\u3001\u2193\u3011-\u5F53\u524D\u5217\u4E0A\u3001\u4E0B\u79FB\u52A8\uFF1B\u3010ctrl+Delete\u3011-\u5220\u9664\u5F53\u524D\u884C\uFF1B")), /*#__PURE__*/React__default['default'].createElement("div", {
5008
5150
  className: 'add_select_wrapper_select add_select_wrapper_select_quick'
5009
5151
  }, /*#__PURE__*/React__default['default'].createElement(antd.Table, _defineProperty({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bit-sun/business-component",
3
- "version": "2.0.33",
3
+ "version": "2.0.34",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",
@@ -28,7 +28,8 @@
28
28
  },
29
29
  "peerDependencies": {
30
30
  "bssula": "^2.0.0",
31
- "umi-plugin-bssula": "1.0.13"
31
+ "umi-plugin-bssula": "1.0.13",
32
+ "umi": "^3.5.20"
32
33
  },
33
34
  "dependencies": {
34
35
  "@ant-design/icons": "^4.7.0",
@@ -41,6 +42,8 @@
41
42
  "bssula": "^2.0.0",
42
43
  "classnames": "^2.3.1",
43
44
  "lodash": "^4.17.21",
45
+ "memoize-one": "^6.0.0",
46
+ "path-to-regexp": "^6.2.1",
44
47
  "querystring": "^0.2.1",
45
48
  "react": "^16.12.0",
46
49
  "react-beautiful-dnd": "10.0.0",
@@ -26,6 +26,8 @@ export default () => {
26
26
  <BillEntry
27
27
  onSaveCallback={(rows) => {
28
28
  console.log(rows)
29
+ return Promise.resolve(true);
30
+ // return Promise.reject('FAILE')
29
31
  }}
30
32
  />
31
33
  <div style={{height: '1000px'}}></div>
@@ -390,7 +390,7 @@ const InputElement = ({
390
390
  )
391
391
  }
392
392
 
393
- const BillEntry: React.FC = ({ onSaveCallback }) => {
393
+ const BillEntry: React.FC = ({ onSaveCallback, validDataUrl="/items/sku/import/check", isBrandAuth=true, isCheckStockNum=true }) => {
394
394
  const columns = [
395
395
  {
396
396
  title: 'SKU编码',
@@ -464,6 +464,8 @@ const BillEntry: React.FC = ({ onSaveCallback }) => {
464
464
  const [data, setData] = useState([{ hovered: false }]);
465
465
  const tableRef = useRef(null)
466
466
 
467
+ const [loading, setLoading] = useState(false);
468
+
467
469
  const callSelectItem = (index, item) => {
468
470
  if (item) {
469
471
  let newData = [].concat(data)
@@ -516,13 +518,71 @@ const BillEntry: React.FC = ({ onSaveCallback }) => {
516
518
  }
517
519
  }]
518
520
 
521
+ const isSkuCanEntry = (resultData) => {
522
+ // 处理业务参数
523
+ let otherParams={}
524
+ if(isBrandAuth){
525
+ otherParams = { brandAuth: 'ctl-withAuth' }
526
+ }
527
+ return axios
528
+ .post(validDataUrl, {
529
+ ...otherParams,
530
+ columns: ["skuCode", "quantity"],
531
+ data: resultData.map((i:any) => ({ skuCode: i.skuCode, quality: i.count })),
532
+ checkStockNum: isCheckStockNum,
533
+ })
534
+ .then((result) => {
535
+ result = result.data;
536
+ if (result.status !== '0') {
537
+ message.error(result.msg);
538
+ return { flag: false }
539
+ } else {
540
+ let res = result.data || [];
541
+ const errorList = res.filter((i: any) => !i.flag);
542
+ return { flag: !errorList?.length, errorList }
543
+ }
544
+ }).catch(() => {
545
+ return { flag:false }
546
+ })
547
+ }
548
+
549
+ const handleSubmit = async () => {
550
+ // 加校验逻辑
551
+ if (!data?.length) {
552
+ message.warning('至少录入一条数据');
553
+ return;
554
+ }
555
+ if (!data?.every((d: any) => d.skuCode && d.name)) {
556
+ message.warning('请选择商品!');
557
+ return;
558
+ }
559
+ if (!data?.every((d: any) => d.count)) {
560
+ message.warning('请填写商品数量!');
561
+ return;
562
+ }
563
+ const canEntryObject = await isSkuCanEntry(data)
564
+ if(canEntryObject?.flag === false) {
565
+ const messageInfo = canEntryObject?.errorList?.length && canEntryObject?.errorList.map((i: any) => <div>{i.skuCode}校验失败:{i.checkResults}</div>)
566
+ messageInfo && message.warning({ content: messageInfo, duration: 6 });
567
+ return;
568
+ }
569
+
570
+ setLoading(true)
571
+ onSaveCallback(data).then(res => {
572
+ if(true) {
573
+ message.success('保存成功')
574
+ }
575
+ setLoading(false)
576
+ }).catch(Error => {
577
+ message.error(Error);
578
+ setLoading(false)
579
+ })
580
+ }
519
581
 
520
582
  return (
521
583
  <div className='add_select'>
522
584
  <div className='add_select_quick_header'>
523
- <div className='add_select_quick_header_title'><div>快速录入</div><Button type="primary" onClick={() => {
524
- onSaveCallback(data)
525
- }}>提交</Button></div>
585
+ <div className='add_select_quick_header_title'><div>快速录入</div><Button type="primary" onClick={() => handleSubmit()} loading={loading}>提交</Button></div>
526
586
  <span><span>*</span> &nbsp;快捷键:【Tab】-跳格切换;【Shift+←、→】-当前行左、右移动;【 ↑、↓】-当前列上、下移动;【ctrl+Delete】-删除当前行;</span>
527
587
  </div>
528
588
  <div className={'add_select_wrapper_select add_select_wrapper_select_quick'}>