kts-component-invoice-operate 3.2.6 → 3.2.8

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.
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import 'antd/dist/antd.css';
3
+ declare const _default: () => JSX.Element;
4
+ export default _default;
@@ -6,6 +6,8 @@ export interface IStakeholder {
6
6
  isShowImportButton?: boolean;
7
7
  /** 点击了 */
8
8
  onClickImportButton?: (e: InvoiceController) => void;
9
+ /** 查看当前可用授信额度 */
10
+ lineCredit?: React.ReactNode;
9
11
  }
10
12
  /** 干系人 */
11
13
  declare const _default: React.FunctionComponent<IStakeholder>;
package/dist/index.esm.js CHANGED
@@ -5,7 +5,7 @@ import { chain as chain$1, bignumber, create, all } from 'mathjs';
5
5
  import { message, Form, Input, Icon as Icon$1, Tag as Tag$1, Select, Button, Tooltip, Switch as Switch$1, Typography, Menu, Dropdown, AutoComplete, Spin, Checkbox, Drawer, Descriptions, Empty, Divider, Popover, Table as Table$1, Tree, Modal as Modal$1, Row as Row$1, Col as Col$1 } from 'kts-components-antd-x3';
6
6
  import { v4 } from 'uuid';
7
7
  import classnames from 'classnames';
8
- import { TableManual, Switch, Row, Col, Button as Button$1, Input as Input$1, message as message$1, Tooltip as Tooltip$1, AutoComplete as AutoComplete$1, Select as Select$1, Spin as Spin$1, Menu as Menu$1, Form as Form$1, Drawer as Drawer$1, Space, Radio, InputNumber, Popconfirm, Modal } from 'kts-xui';
8
+ import { TableManual, Switch, Row, Col, Button as Button$1, Tooltip as Tooltip$1, Input as Input$1, message as message$1, AutoComplete as AutoComplete$1, Select as Select$1, Spin as Spin$1, Menu as Menu$1, Form as Form$1, Drawer as Drawer$1, Space, Radio, InputNumber, Popconfirm, Modal } from 'kts-xui';
9
9
  import { Table } from 'kts-components-antd-x4-v4';
10
10
  import { Input as Input$2, NumberPicker } from '@formily/antd-components';
11
11
  import { createAsyncFormActions, FormEffectHooks, SchemaForm, FormButtonGroup, SchemaMarkupField } from '@formily/antd';
@@ -14237,13 +14237,16 @@ var Stakeholder$1 = decorator(Form.create())(function (props) {
14237
14237
  className: "digtal-stakeholder-expand-button",
14238
14238
  component: isExpand ? SvgArrowUp : SvgArrowDown,
14239
14239
  onClick: onExpand
14240
- })), React.createElement("div", null, !readOnly && React.createElement("div", {
14240
+ })), React.createElement("div", null, !readOnly && props.lineCredit && React.createElement("div", {
14241
14241
  style: {
14242
14242
  marginTop: 20
14243
14243
  }
14244
+ }, React.createElement(Tooltip$1, {
14245
+ trigger: "click",
14246
+ title: props.lineCredit
14244
14247
  }, React.createElement(Button$1, {
14245
14248
  type: "link"
14246
- }, "\u67E5\u770B\u5F53\u524D\u53EF\u7528\u6388\u4FE1\u989D\u5EA6")), React.createElement(Form, {
14249
+ }, "\u67E5\u770B\u5F53\u524D\u53EF\u7528\u6388\u4FE1\u989D\u5EA6"))), React.createElement(Form, {
14247
14250
  className: "digtal-stakeholder-form"
14248
14251
  }, React.createElement(Row, {
14249
14252
  gutter: [16, 0]
@@ -14402,18 +14405,18 @@ var SignDigtal = decorator(Form.create())(function (props) {
14402
14405
  className: 'sign-digtal-label'
14403
14406
  }, "\u5907\u6CE8\u4FE1\u606F"), React.createElement(Form, null, React.createElement(Form.Item, {
14404
14407
  label: "\u5907\u6CE8"
14405
- }, getFieldDecorator('remark', {
14408
+ }, getFieldDecorator('remarks', {
14406
14409
  initialValue: props.defaultRemark
14407
14410
  })(React.createElement(Input$1.TextArea, {
14408
- readOnly: isReadOnly('remark'),
14411
+ readOnly: isReadOnly('remarks'),
14409
14412
  autoSize: true,
14410
14413
  placeholder: "\u8BF7\u8F93\u5165"
14411
14414
  }))), React.createElement(Form.Item, {
14412
14415
  label: "\u5F00\u7968\u4EBA"
14413
- }, getFieldDecorator('issuer', {
14416
+ }, getFieldDecorator('drawer', {
14414
14417
  initialValue: props.defaultIssuer
14415
14418
  })(React.createElement(Input$1, {
14416
- readOnly: isReadOnly('issuer'),
14419
+ readOnly: isReadOnly('drawer'),
14417
14420
  style: {
14418
14421
  width: 313
14419
14422
  },
@@ -17682,31 +17685,6 @@ var useDelRowButton$1 = (function () {
17682
17685
  };
17683
17686
  });
17684
17687
 
17685
- var _g$3, _defs$5;
17686
-
17687
- function _extends$9() { _extends$9 = Object.assign ? Object.assign.bind() : 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; }; return _extends$9.apply(this, arguments); }
17688
-
17689
- function SvgAdd(props) {
17690
- return /*#__PURE__*/createElement("svg", _extends$9({
17691
- xmlns: "http://www.w3.org/2000/svg",
17692
- width: 15,
17693
- height: 15,
17694
- fill: "none"
17695
- }, props), _g$3 || (_g$3 = /*#__PURE__*/createElement("g", {
17696
- clipPath: "url(#add_svg__clip0_715_372)"
17697
- }, /*#__PURE__*/createElement("path", {
17698
- d: "M7.5 14.531A7.031 7.031 0 117.5.468a7.031 7.031 0 010 14.063zm0-.937a6.094 6.094 0 100-12.188 6.094 6.094 0 000 12.188z"
17699
- }), /*#__PURE__*/createElement("path", {
17700
- d: "M3.75 7.969a.469.469 0 010-.938h7.5a.47.47 0 010 .938h-7.5z"
17701
- }), /*#__PURE__*/createElement("path", {
17702
- d: "M7.031 3.75a.469.469 0 01.938 0v7.5a.47.47 0 01-.938 0v-7.5z"
17703
- }))), _defs$5 || (_defs$5 = /*#__PURE__*/createElement("defs", null, /*#__PURE__*/createElement("clipPath", {
17704
- id: "add_svg__clip0_715_372"
17705
- }, /*#__PURE__*/createElement("path", {
17706
- d: "M0 0h15v15H0z"
17707
- })))));
17708
- }
17709
-
17710
17688
  var useAddDiscountRowButton$1 = (function () {
17711
17689
  /** 控制器 */
17712
17690
  var controller = Invoice.useInvoiceController();
@@ -17909,8 +17887,7 @@ var useAddDiscountRowButton$1 = (function () {
17909
17887
  return React.createElement(React.Fragment, null, React.createElement(Button$1, {
17910
17888
  size: 'small',
17911
17889
  onClick: onOpen,
17912
- disabled: disabled,
17913
- icon: React.createElement(SvgAdd, null)
17890
+ disabled: disabled
17914
17891
  }, "\u6DFB\u52A0\u6298\u6263"), React.createElement(AddDiscountRowDrawer, {
17915
17892
  open: open,
17916
17893
  onClose: onClose
package/dist/index.js CHANGED
@@ -14247,13 +14247,16 @@ var Stakeholder$1 = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create())(fu
14247
14247
  className: "digtal-stakeholder-expand-button",
14248
14248
  component: isExpand ? SvgArrowUp : SvgArrowDown,
14249
14249
  onClick: onExpand
14250
- })), React__default['default'].createElement("div", null, !readOnly && React__default['default'].createElement("div", {
14250
+ })), React__default['default'].createElement("div", null, !readOnly && props.lineCredit && React__default['default'].createElement("div", {
14251
14251
  style: {
14252
14252
  marginTop: 20
14253
14253
  }
14254
+ }, React__default['default'].createElement(ktsXui.Tooltip, {
14255
+ trigger: "click",
14256
+ title: props.lineCredit
14254
14257
  }, React__default['default'].createElement(ktsXui.Button, {
14255
14258
  type: "link"
14256
- }, "\u67E5\u770B\u5F53\u524D\u53EF\u7528\u6388\u4FE1\u989D\u5EA6")), React__default['default'].createElement(ktsComponentsAntdX3.Form, {
14259
+ }, "\u67E5\u770B\u5F53\u524D\u53EF\u7528\u6388\u4FE1\u989D\u5EA6"))), React__default['default'].createElement(ktsComponentsAntdX3.Form, {
14257
14260
  className: "digtal-stakeholder-form"
14258
14261
  }, React__default['default'].createElement(ktsXui.Row, {
14259
14262
  gutter: [16, 0]
@@ -14412,18 +14415,18 @@ var SignDigtal = GreyReactBox.decorator(ktsComponentsAntdX3.Form.create())(funct
14412
14415
  className: 'sign-digtal-label'
14413
14416
  }, "\u5907\u6CE8\u4FE1\u606F"), React__default['default'].createElement(ktsComponentsAntdX3.Form, null, React__default['default'].createElement(ktsComponentsAntdX3.Form.Item, {
14414
14417
  label: "\u5907\u6CE8"
14415
- }, getFieldDecorator('remark', {
14418
+ }, getFieldDecorator('remarks', {
14416
14419
  initialValue: props.defaultRemark
14417
14420
  })(React__default['default'].createElement(ktsXui.Input.TextArea, {
14418
- readOnly: isReadOnly('remark'),
14421
+ readOnly: isReadOnly('remarks'),
14419
14422
  autoSize: true,
14420
14423
  placeholder: "\u8BF7\u8F93\u5165"
14421
14424
  }))), React__default['default'].createElement(ktsComponentsAntdX3.Form.Item, {
14422
14425
  label: "\u5F00\u7968\u4EBA"
14423
- }, getFieldDecorator('issuer', {
14426
+ }, getFieldDecorator('drawer', {
14424
14427
  initialValue: props.defaultIssuer
14425
14428
  })(React__default['default'].createElement(ktsXui.Input, {
14426
- readOnly: isReadOnly('issuer'),
14429
+ readOnly: isReadOnly('drawer'),
14427
14430
  style: {
14428
14431
  width: 313
14429
14432
  },
@@ -17692,31 +17695,6 @@ var useDelRowButton$1 = (function () {
17692
17695
  };
17693
17696
  });
17694
17697
 
17695
- var _g$3, _defs$5;
17696
-
17697
- function _extends$9() { _extends$9 = Object.assign ? Object.assign.bind() : 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; }; return _extends$9.apply(this, arguments); }
17698
-
17699
- function SvgAdd(props) {
17700
- return /*#__PURE__*/React.createElement("svg", _extends$9({
17701
- xmlns: "http://www.w3.org/2000/svg",
17702
- width: 15,
17703
- height: 15,
17704
- fill: "none"
17705
- }, props), _g$3 || (_g$3 = /*#__PURE__*/React.createElement("g", {
17706
- clipPath: "url(#add_svg__clip0_715_372)"
17707
- }, /*#__PURE__*/React.createElement("path", {
17708
- d: "M7.5 14.531A7.031 7.031 0 117.5.468a7.031 7.031 0 010 14.063zm0-.937a6.094 6.094 0 100-12.188 6.094 6.094 0 000 12.188z"
17709
- }), /*#__PURE__*/React.createElement("path", {
17710
- d: "M3.75 7.969a.469.469 0 010-.938h7.5a.47.47 0 010 .938h-7.5z"
17711
- }), /*#__PURE__*/React.createElement("path", {
17712
- d: "M7.031 3.75a.469.469 0 01.938 0v7.5a.47.47 0 01-.938 0v-7.5z"
17713
- }))), _defs$5 || (_defs$5 = /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("clipPath", {
17714
- id: "add_svg__clip0_715_372"
17715
- }, /*#__PURE__*/React.createElement("path", {
17716
- d: "M0 0h15v15H0z"
17717
- })))));
17718
- }
17719
-
17720
17698
  var useAddDiscountRowButton$1 = (function () {
17721
17699
  /** 控制器 */
17722
17700
  var controller = Invoice.useInvoiceController();
@@ -17919,8 +17897,7 @@ var useAddDiscountRowButton$1 = (function () {
17919
17897
  return React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(ktsXui.Button, {
17920
17898
  size: 'small',
17921
17899
  onClick: onOpen,
17922
- disabled: disabled,
17923
- icon: React__default['default'].createElement(SvgAdd, null)
17900
+ disabled: disabled
17924
17901
  }, "\u6DFB\u52A0\u6298\u6263"), React__default['default'].createElement(AddDiscountRowDrawer, {
17925
17902
  open: open,
17926
17903
  onClose: onClose
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kts-component-invoice-operate",
3
- "version": "3.2.6",
3
+ "version": "3.2.8",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "docs:build": "dumi build",
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import Invoice from '../../..';
3
+ import 'antd/dist/antd.css';
4
+
5
+ export default () => {
6
+ return (
7
+ <Invoice
8
+ invoiceType='digtal'
9
+ stakeholder={
10
+ <Invoice.Stakeholder lineCredit={<LineCredit />} />
11
+ }
12
+ />
13
+ )
14
+
15
+ };
16
+
17
+ function LineCredit() {
18
+ return (
19
+ <div>可用授信额度100</div>
20
+ )
21
+ }
@@ -25,4 +25,7 @@
25
25
  <code src="./_test/importGoods/index.tsx"></code>
26
26
 
27
27
  ## 预制模式
28
- <code src="./_test/prefab/index.tsx"></code>
28
+ <code src="./_test/prefab/index.tsx"></code>
29
+
30
+ ## 查看当前可用授信额度
31
+ <code src="./_test/lineCredit/index.tsx"></code>
@@ -100,7 +100,6 @@ export default () => {
100
100
  size='small'
101
101
  onClick={onOpen}
102
102
  disabled={disabled}
103
- icon={<AddSvg />}
104
103
  >
105
104
  添加折扣
106
105
  </Button>
@@ -65,15 +65,15 @@ export default decorator<IBuyerProps, IBuyerProps & FormComponentProps>(Form.cre
65
65
  <div className='sign-digtal-label' >备注信息</div>
66
66
  <Form>
67
67
  <Form.Item label="备注" >
68
- {getFieldDecorator('remark', {
68
+ {getFieldDecorator('remarks', {
69
69
  initialValue: props.defaultRemark
70
- })(<Input.TextArea readOnly={isReadOnly('remark')} autoSize placeholder='请输入' />)}
70
+ })(<Input.TextArea readOnly={isReadOnly('remarks')} autoSize placeholder='请输入' />)}
71
71
  </Form.Item>
72
72
 
73
73
  <Form.Item label="开票人" >
74
- {getFieldDecorator('issuer', {
74
+ {getFieldDecorator('drawer', {
75
75
  initialValue: props.defaultIssuer
76
- })(<Input readOnly={isReadOnly('issuer')} style={{ width: 313 }} placeholder='请输入' />)}
76
+ })(<Input readOnly={isReadOnly('drawer')} style={{ width: 313 }} placeholder='请输入' />)}
77
77
  </Form.Item>
78
78
  </Form>
79
79
  </div>
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import Icon from '@ant-design/icons';
4
4
  import { decorator } from "grey-react-box";
5
5
  import { Form } from "kts-components-antd-x3";
6
- import { Button, Col, Input, InputProps, Row } from 'kts-xui'
6
+ import { Button, Col, Input, InputProps, Row, Tooltip } from 'kts-xui'
7
7
  import { FormComponentProps } from "kts-components-antd-x3/lib/form";
8
8
  import { ReactComponent as ArrowUpSvg } from './svg/arrowUp.svg';
9
9
  import { ReactComponent as ArrowDownSvg } from './svg/arrowDown.svg';
@@ -46,9 +46,12 @@ export interface IStakeholder {
46
46
 
47
47
  /** 点击了 */
48
48
  onClickImportButton?: (e: InvoiceController) => void
49
+
50
+ /** 查看当前可用授信额度 */
51
+ lineCredit?: React.ReactNode;
49
52
  }
50
53
 
51
- /** 干系人 */
54
+ /** 干系人 */
52
55
  export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.create())(props => {
53
56
 
54
57
  const { form, isShowImportButton, onClickImportButton } = props;
@@ -66,8 +69,8 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
66
69
  const rulesMap = controller.useMemo(s => s.stakeholder.rulesMap || {}, []);
67
70
 
68
71
  const readOnly = React.useMemo(() => {
69
- if(model === 'readOnly') return true;
70
- if(model === 'prefab') return true;
72
+ if (model === 'readOnly') return true;
73
+ if (model === 'prefab') return true;
71
74
  return false;
72
75
  }, [model]);
73
76
 
@@ -182,9 +185,11 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
182
185
  </div>
183
186
  <div>
184
187
  {
185
- !readOnly &&
188
+ !readOnly && props.lineCredit &&
186
189
  <div style={{ marginTop: 20 }} >
187
- <Button type="link" >查看当前可用授信额度</Button>
190
+ <Tooltip trigger="click" title={props.lineCredit} >
191
+ <Button type="link" >查看当前可用授信额度</Button>
192
+ </Tooltip>
188
193
  </div>
189
194
  }
190
195
  <Form className="digtal-stakeholder-form" >
@@ -215,7 +220,7 @@ export default decorator<IStakeholder, IStakeholder & FormComponentProps>(Form.c
215
220
  })(<MyInput readOnly={isReadOnly('sellerAddress')} placeholder="请输入" autoComplete="off" />)}
216
221
  </Form.Item>
217
222
  </Col>
218
-
223
+
219
224
  <Col span={9} >
220
225
  <Form.Item label='电话' colon={false}>
221
226
  {getFieldDecorator('sellerPhone', {
@@ -1,316 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- exports.__esModule = true;
50
- var react_1 = require("react");
51
- var mathjs_1 = require("mathjs");
52
- var kts_xui_1 = require("kts-xui");
53
- var add_svg_1 = require("./svg/add.svg");
54
- var __1 = require("../../../../../../..");
55
- var InvoiceController_1 = require("../../../../../../../InvoiceController");
56
- exports["default"] = (function () {
57
- /** 控制器 */
58
- var controller = __1["default"].useInvoiceController();
59
- /** 组件模式 prefab 预制 readOnly 只读 */
60
- var model = controller.useMemo(function (s) { return s.model; }, []);
61
- /** 准备添加折扣的货物索引列表 */
62
- var discountGoodIndex = controller.useMemo(function (s) { return s.goodsListState.discountGoodIndex || []; }, []);
63
- /** 列表选中的货物索引列表 */
64
- var selectedGoodIndex = controller.useMemo(function (s) { return s.goodsListState.selectedGoodIndex; }, []);
65
- /** 货物字典 */
66
- var goodsMap = controller.useMemo(function (s) { return s.goodsListState.goodsMap; }, []);
67
- /** 是否能添加折扣行 */
68
- var isAddDiscount = controller.useMemo(function (s) { return s.goodsListState.isAddDiscount; }, []);
69
- // 抽屉开启状态
70
- var open = react_1["default"].useMemo(function () { return discountGoodIndex.length > 0; }, [discountGoodIndex]);
71
- /** 打开抽屉 */
72
- var onOpen = react_1["default"].useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
73
- return __generator(this, function (_a) {
74
- switch (_a.label) {
75
- case 0: return [4 /*yield*/, controller.saveEditGood()];
76
- case 1:
77
- _a.sent();
78
- return [4 /*yield*/, controller.wait()];
79
- case 2:
80
- _a.sent();
81
- return [4 /*yield*/, controller.run(function (s) { return __awaiter(void 0, void 0, void 0, function () {
82
- var isOk;
83
- return __generator(this, function (_a) {
84
- isOk = s.goodsListState.editGood && s.goodsListState.selectedGoodIndex.indexOf(s.goodsListState.editGood.$index) >= 0;
85
- if (isOk) {
86
- kts_xui_1.message.error({ content: '不能给编辑状态的行增加折扣!', key: '不能给编辑状态的行增加折扣!' });
87
- return [2 /*return*/];
88
- }
89
- if (!isContinuityNum(s.goodsListState.selectedGoodIndex.map(function (e) { var _a; return ((_a = s.goodsListState.goodsMap.get(e)) === null || _a === void 0 ? void 0 : _a.serialNo) || -2; }).sort(function (a, b) { return a - b; }))) {
90
- kts_xui_1.message.error({ content: '项目不连续,不允许添加折扣', key: '项目不连续,不允许添加折扣' });
91
- return [2 /*return*/];
92
- }
93
- isOk = s.goodsListState.selectedGoodIndex.some(function ($index) { var _a; return ((_a = s.goodsListState.goodsMap.get($index)) === null || _a === void 0 ? void 0 : _a.lineAttribute) !== InvoiceController_1.LineAttributeType.正常; });
94
- if (isOk) {
95
- kts_xui_1.message.error({ content: '不允许重复添加折扣', key: '不允许重复添加折扣' });
96
- return [2 /*return*/];
97
- }
98
- isOk = s.goodsListState.selectedGoodIndex.some(function ($index) {
99
- var good = s.goodsListState.goodsMap.get($index);
100
- return !good || (good.taxRate === 0 && s.goodsListState.endowCode.isTaxFreeTypeNeeded && !good.taxFreeType);
101
- });
102
- if (isOk) {
103
- kts_xui_1.message.error({ content: '零税率需要设置免税类型,请在赋码中设置!', key: '零税率需要设置免税类型,请在赋码中设置!' });
104
- return [2 /*return*/];
105
- }
106
- isOk = s.goodsListState.selectedGoodIndex.some(function ($index) {
107
- var good = s.goodsListState.goodsMap.get($index);
108
- return "" + (good === null || good === void 0 ? void 0 : good.lineAmountIncludeTax) === '0';
109
- });
110
- if (isOk) {
111
- kts_xui_1.message.error({ content: '金额为0不能添加折扣行', key: '金额为0不能添加折扣行' });
112
- return [2 /*return*/];
113
- }
114
- s.goodsListState.discountGoodIndex = s.goodsListState.selectedGoodIndex.slice();
115
- return [2 /*return*/];
116
- });
117
- }); })];
118
- case 3:
119
- _a.sent();
120
- return [2 /*return*/];
121
- }
122
- });
123
- }); }, [controller]);
124
- /** 关闭抽屉 */
125
- var onClose = react_1["default"].useCallback(function () {
126
- controller.run(function (s) { return __awaiter(void 0, void 0, void 0, function () {
127
- return __generator(this, function (_a) {
128
- s.goodsListState.discountGoodIndex = [];
129
- return [2 /*return*/];
130
- });
131
- }); });
132
- }, [controller]);
133
- /** 是否禁用 */
134
- var disabled = react_1["default"].useMemo(function () { return selectedGoodIndex.length === 0; }, [selectedGoodIndex, goodsMap]);
135
- /** 是否启用 */
136
- var isEnable = react_1["default"].useMemo(function () {
137
- if (model === 'readOnly')
138
- return false;
139
- if (model === 'prefab')
140
- return false;
141
- return !(isAddDiscount === false);
142
- }, [isAddDiscount, model]);
143
- var button = react_1["default"].useMemo(function () {
144
- if (isEnable) {
145
- return (react_1["default"].createElement(react_1["default"].Fragment, null,
146
- react_1["default"].createElement(kts_xui_1.Button, { size: 'small', onClick: onOpen, disabled: disabled, icon: react_1["default"].createElement(add_svg_1.ReactComponent, null) }, "\u6DFB\u52A0\u6298\u6263"),
147
- react_1["default"].createElement(AddDiscountRowDrawer, { open: open, onClose: onClose })));
148
- }
149
- else {
150
- return (react_1["default"].createElement(react_1["default"].Fragment, null));
151
- }
152
- }, [open, onOpen, onClose, isEnable, disabled]);
153
- return {
154
- button: button
155
- };
156
- });
157
- /** 添加折扣行的抽屉 */
158
- function AddDiscountRowDrawer(props) {
159
- var _this = this;
160
- var open = props.open, onClose = props.onClose;
161
- var form = kts_xui_1.Form.useForm()[0];
162
- var _a = react_1["default"].useState(), formValues = _a[0], setFormValues = _a[1];
163
- /** 控制器 */
164
- var controller = __1["default"].useInvoiceController();
165
- /** 货物字典 */
166
- var goodsMap = controller.useMemo(function (s) { return s.goodsListState.goodsMap; }, []);
167
- /** 准备添加折扣的货物索引列表 */
168
- var discountGoodIndex = controller.useMemo(function (s) { return s.goodsListState.discountGoodIndex || []; }, []);
169
- /** 准备添加折扣的货物列表 */
170
- var discountGood = react_1["default"].useMemo(function () { return discountGoodIndex.map(function (e) { return goodsMap.get(e); }); }, [discountGoodIndex, goodsMap]);
171
- /** 总金额 */
172
- var totalAmount = react_1["default"].useMemo(function () {
173
- var sum = 0;
174
- discountGood.forEach(function (e) {
175
- var _a;
176
- sum += (_a = e === null || e === void 0 ? void 0 : e.lineAmountIncludeTax) !== null && _a !== void 0 ? _a : 0;
177
- });
178
- return sum;
179
- }, [discountGood]);
180
- /** 表单变化 */
181
- var onChangeForm = react_1["default"].useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
182
- return __generator(this, function (_a) {
183
- setFormValues(form.getFieldsValue());
184
- return [2 /*return*/];
185
- });
186
- }); }, [form]);
187
- /** 点击了确认 */
188
- var onDefine = react_1["default"].useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
189
- var values, totalDiscoline, discolinesSum, discolines, surplus, i;
190
- var _this = this;
191
- return __generator(this, function (_a) {
192
- switch (_a.label) {
193
- case 0: return [4 /*yield*/, form.validateFields()];
194
- case 1:
195
- values = _a.sent();
196
- totalDiscoline = values.discolineType === '1'
197
- ? mathjs_1.chain(mathjs_1.bignumber(values.discolineValue))
198
- : mathjs_1.chain(mathjs_1.bignumber(totalAmount)).multiply(mathjs_1.bignumber(values.discolineValue)).multiply(mathjs_1.bignumber(0.01));
199
- discolinesSum = mathjs_1.chain(mathjs_1.bignumber(0));
200
- discolines = discountGood.map(function (e, i) {
201
- var _a;
202
- // 折扣金额占比
203
- var share = mathjs_1.chain(mathjs_1.bignumber((_a = e === null || e === void 0 ? void 0 : e.lineAmountIncludeTax) !== null && _a !== void 0 ? _a : 0))
204
- .divide(mathjs_1.bignumber(totalAmount));
205
- // 折扣金额
206
- var value = totalDiscoline
207
- .multiply(share.done())
208
- .multiply(mathjs_1.bignumber(100))
209
- .round()
210
- .divide(mathjs_1.bignumber(100))
211
- .done();
212
- discolinesSum = discolinesSum.add(value);
213
- return value.toNumber();
214
- });
215
- surplus = totalDiscoline.subtract(discolinesSum.done());
216
- // 补充剩余折扣金
217
- for (i = 0; i < discolines.length; i++) {
218
- if (surplus.smaller(0.01).done())
219
- break;
220
- discolines[i] = mathjs_1.chain(mathjs_1.bignumber(discolines[i])).add(mathjs_1.bignumber(0.01)).done().toNumber();
221
- surplus = surplus.subtract(mathjs_1.bignumber(0.01));
222
- }
223
- // 给一组货物添加折扣行
224
- return [4 /*yield*/, controller.addGoodDiscountV2(discolines.map(function (e, i) {
225
- var _a;
226
- return {
227
- $index: (_a = discountGood[i]) === null || _a === void 0 ? void 0 : _a.$index,
228
- discolineAmountunt: e
229
- };
230
- }))];
231
- case 2:
232
- // 给一组货物添加折扣行
233
- _a.sent();
234
- return [4 /*yield*/, controller.run(function (s) { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
235
- s.goodsListState.selectedGoodIndex = [];
236
- return [2 /*return*/];
237
- }); }); })
238
- // 关闭抽屉
239
- ];
240
- case 3:
241
- _a.sent();
242
- // 关闭抽屉
243
- onClose();
244
- return [2 /*return*/];
245
- }
246
- });
247
- }); }, [discountGood, form, totalAmount, onClose, controller]);
248
- // 打开抽屉时 重置form
249
- react_1["default"].useEffect(function () {
250
- if (open) {
251
- form.resetFields();
252
- setFormValues(form.getFieldsValue());
253
- }
254
- }, [open]);
255
- // 切换 折扣方式 清空折扣值
256
- react_1["default"].useEffect(function () {
257
- form.setFieldsValue(__assign(__assign({}, formValues), { discolineValue: undefined }));
258
- }, [formValues === null || formValues === void 0 ? void 0 : formValues.discolineType]);
259
- return (react_1["default"].createElement(kts_xui_1.Drawer, { title: "\u6DFB\u52A0\u6298\u6263", placement: "right", width: 350, onClose: onClose, open: open, footer: react_1["default"].createElement(kts_xui_1.Space, { size: "middle", style: { display: 'flex', justifyContent: 'end' } },
260
- react_1["default"].createElement(kts_xui_1.Button, { onClick: onDefine, type: 'primary' }, "\u786E\u5B9A"),
261
- react_1["default"].createElement(kts_xui_1.Button, { onClick: onClose }, "\u53D6\u6D88")) },
262
- react_1["default"].createElement(kts_xui_1.Form, { form: form, layout: 'vertical', onChange: onChangeForm },
263
- react_1["default"].createElement(kts_xui_1.Form.Item, { label: '\u5546\u54C1\u91D1\u989D\uFF08\u542B\u7A0E\uFF09' },
264
- totalAmount.toFixed(2),
265
- "\uFF08\u5171 ",
266
- discountGood.length,
267
- " \u884C\uFF09"),
268
- react_1["default"].createElement(kts_xui_1.Form.Item, { label: '\u6298\u6263\u65B9\u5F0F', name: 'discolineType', initialValue: '1' },
269
- react_1["default"].createElement(kts_xui_1.Radio.Group, { options: [
270
- { label: '按金额折扣', value: '1' },
271
- { label: '按比例折扣', value: '2' },
272
- ] })),
273
- (formValues === null || formValues === void 0 ? void 0 : formValues.discolineType) === '1' ?
274
- (react_1["default"].createElement(kts_xui_1.Form.Item, { label: '\u6298\u6263\u91D1\u989D\uFF08\u5143\uFF09\uFF08\u542B\u7A0E\uFF09', name: 'discolineValue', rules: [
275
- { required: true, message: '必填' },
276
- {
277
- validator: function (_, value) { return __awaiter(_this, void 0, void 0, function () {
278
- return __generator(this, function (_a) {
279
- if (!value)
280
- return [2 /*return*/];
281
- if (value > totalAmount)
282
- throw new Error('不可以大于商品金额');
283
- return [2 /*return*/];
284
- });
285
- }); }
286
- }
287
- ] },
288
- react_1["default"].createElement(kts_xui_1.InputNumber, { style: { width: '100%' } }))) : (react_1["default"].createElement(kts_xui_1.Form.Item, { label: '\u6298\u6263\u6BD4\u4F8B\uFF08%\uFF09\uFF08\u542B\u7A0E\uFF09', name: 'discolineValue', rules: [
289
- { required: true, message: '必填' },
290
- {
291
- validator: function (_, value) { return __awaiter(_this, void 0, void 0, function () {
292
- return __generator(this, function (_a) {
293
- if (!value)
294
- return [2 /*return*/];
295
- if (value > 100)
296
- throw new Error('不可以大于100');
297
- return [2 /*return*/];
298
- });
299
- }); }
300
- }
301
- ] },
302
- react_1["default"].createElement(kts_xui_1.InputNumber, { style: { width: '100%' } }))))));
303
- }
304
- /** 判断数组是否连续 */
305
- function isContinuityNum(array) {
306
- var i = array[0];
307
- var isContinuation = true;
308
- for (var e in array) {
309
- if (array[e] != i) {
310
- isContinuation = false;
311
- break;
312
- }
313
- i++;
314
- }
315
- return isContinuation;
316
- }