fapiao
Version:
a simple fapiao react component
1,301 lines (1,275 loc) • 41.1 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var Decimal = _interopDefault(require('decimal.js'));
var dxrmb = _interopDefault(require('dxrmb'));
var HTableLayout = _interopDefault(require('kbjtable'));
require('kbjtable/dist/kbjtable.cjs.development.css');
var React = require('react');
var React__default = _interopDefault(React);
var reactDom = require('react-dom');
var scrollIntoView = _interopDefault(require('scroll-into-view-if-needed'));
function _regeneratorRuntime() {
_regeneratorRuntime = function () {
return e;
};
var t,
e = {},
r = Object.prototype,
n = r.hasOwnProperty,
o = Object.defineProperty || function (t, e, r) {
t[e] = r.value;
},
i = "function" == typeof Symbol ? Symbol : {},
a = i.iterator || "@@iterator",
c = i.asyncIterator || "@@asyncIterator",
u = i.toStringTag || "@@toStringTag";
function define(t, e, r) {
return Object.defineProperty(t, e, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
}), t[e];
}
try {
define({}, "");
} catch (t) {
define = function (t, e, r) {
return t[e] = r;
};
}
function wrap(t, e, r, n) {
var i = e && e.prototype instanceof Generator ? e : Generator,
a = Object.create(i.prototype),
c = new Context(n || []);
return o(a, "_invoke", {
value: makeInvokeMethod(t, r, c)
}), a;
}
function tryCatch(t, e, r) {
try {
return {
type: "normal",
arg: t.call(e, r)
};
} catch (t) {
return {
type: "throw",
arg: t
};
}
}
e.wrap = wrap;
var h = "suspendedStart",
l = "suspendedYield",
f = "executing",
s = "completed",
y = {};
function Generator() {}
function GeneratorFunction() {}
function GeneratorFunctionPrototype() {}
var p = {};
define(p, a, function () {
return this;
});
var d = Object.getPrototypeOf,
v = d && d(d(values([])));
v && v !== r && n.call(v, a) && (p = v);
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
function defineIteratorMethods(t) {
["next", "throw", "return"].forEach(function (e) {
define(t, e, function (t) {
return this._invoke(e, t);
});
});
}
function AsyncIterator(t, e) {
function invoke(r, o, i, a) {
var c = tryCatch(t[r], t, o);
if ("throw" !== c.type) {
var u = c.arg,
h = u.value;
return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
invoke("next", t, i, a);
}, function (t) {
invoke("throw", t, i, a);
}) : e.resolve(h).then(function (t) {
u.value = t, i(u);
}, function (t) {
return invoke("throw", t, i, a);
});
}
a(c.arg);
}
var r;
o(this, "_invoke", {
value: function (t, n) {
function callInvokeWithMethodAndArg() {
return new e(function (e, r) {
invoke(t, n, e, r);
});
}
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
}
});
}
function makeInvokeMethod(e, r, n) {
var o = h;
return function (i, a) {
if (o === f) throw Error("Generator is already running");
if (o === s) {
if ("throw" === i) throw a;
return {
value: t,
done: !0
};
}
for (n.method = i, n.arg = a;;) {
var c = n.delegate;
if (c) {
var u = maybeInvokeDelegate(c, n);
if (u) {
if (u === y) continue;
return u;
}
}
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
if (o === h) throw o = s, n.arg;
n.dispatchException(n.arg);
} else "return" === n.method && n.abrupt("return", n.arg);
o = f;
var p = tryCatch(e, r, n);
if ("normal" === p.type) {
if (o = n.done ? s : l, p.arg === y) continue;
return {
value: p.arg,
done: n.done
};
}
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
}
};
}
function maybeInvokeDelegate(e, r) {
var n = r.method,
o = e.iterator[n];
if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
var i = tryCatch(o, e.iterator, r.arg);
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
var a = i.arg;
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
}
function pushTryEntry(t) {
var e = {
tryLoc: t[0]
};
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
}
function resetTryEntry(t) {
var e = t.completion || {};
e.type = "normal", delete e.arg, t.completion = e;
}
function Context(t) {
this.tryEntries = [{
tryLoc: "root"
}], t.forEach(pushTryEntry, this), this.reset(!0);
}
function values(e) {
if (e || "" === e) {
var r = e[a];
if (r) return r.call(e);
if ("function" == typeof e.next) return e;
if (!isNaN(e.length)) {
var o = -1,
i = function next() {
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
return next.value = t, next.done = !0, next;
};
return i.next = i;
}
}
throw new TypeError(typeof e + " is not iterable");
}
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
value: GeneratorFunctionPrototype,
configurable: !0
}), o(GeneratorFunctionPrototype, "constructor", {
value: GeneratorFunction,
configurable: !0
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
var e = "function" == typeof t && t.constructor;
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
}, e.mark = function (t) {
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
}, e.awrap = function (t) {
return {
__await: t
};
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
return this;
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
void 0 === i && (i = Promise);
var a = new AsyncIterator(wrap(t, r, n, o), i);
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
return t.done ? t.value : a.next();
});
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
return this;
}), define(g, "toString", function () {
return "[object Generator]";
}), e.keys = function (t) {
var e = Object(t),
r = [];
for (var n in e) r.push(n);
return r.reverse(), function next() {
for (; r.length;) {
var t = r.pop();
if (t in e) return next.value = t, next.done = !1, next;
}
return next.done = !0, next;
};
}, e.values = values, Context.prototype = {
constructor: Context,
reset: function (e) {
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
},
stop: function () {
this.done = !0;
var t = this.tryEntries[0].completion;
if ("throw" === t.type) throw t.arg;
return this.rval;
},
dispatchException: function (e) {
if (this.done) throw e;
var r = this;
function handle(n, o) {
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
}
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
var i = this.tryEntries[o],
a = i.completion;
if ("root" === i.tryLoc) return handle("end");
if (i.tryLoc <= this.prev) {
var c = n.call(i, "catchLoc"),
u = n.call(i, "finallyLoc");
if (c && u) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
} else if (c) {
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
} else {
if (!u) throw Error("try statement without catch or finally");
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
}
}
}
},
abrupt: function (t, e) {
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
var o = this.tryEntries[r];
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
var i = o;
break;
}
}
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
var a = i ? i.completion : {};
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
},
complete: function (t, e) {
if ("throw" === t.type) throw t.arg;
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
},
finish: function (t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
}
},
catch: function (t) {
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
var r = this.tryEntries[e];
if (r.tryLoc === t) {
var n = r.completion;
if ("throw" === n.type) {
var o = n.arg;
resetTryEntry(r);
}
return o;
}
}
throw Error("illegal catch attempt");
},
delegateYield: function (e, r, n) {
return this.delegate = {
iterator: values(e),
resultName: r,
nextLoc: n
}, "next" === this.method && (this.arg = t), y;
}
}, e;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _extends() {
_extends = 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.apply(this, arguments);
}
function _objectDestructuringEmpty(obj) {
if (obj == null) throw new TypeError("Cannot destructure " + obj);
}
function _objectWithoutPropertiesLoose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for (i = 0; i < sourceKeys.length; i++) {
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function Flex(props) {
var flexs = props.flexs,
children = props.children,
style = props.style,
gap = props.gap;
var items = React__default.Children.map(children, function (child, idx) {
var flex = (flexs == null ? void 0 : flexs[idx]) || 1;
return React__default.createElement("div", {
style: {
flex: flex
}
}, child);
});
return React__default.createElement("div", {
style: _extends({
width: "100%"
}, style, gap && {
gap: gap
}, {
display: "flex",
alignItems: "center"
})
}, items);
}
/*
const z = React.Children.map(children, (child) => {
// Process each child element
console.log("a prop:", child)
return child; // You can return the modified child or perform other actions
})
*/
var styles = {"wrap":"input-module_wrap__5-bC6"};
var Input = /*#__PURE__*/React.forwardRef(function (props, ref) {
var rest = _extends({}, (_objectDestructuringEmpty(props), props));
return React__default.createElement("div", {
ref: ref,
className: styles.wrap
}, React__default.createElement("input", Object.assign({}, rest)));
});
var RadioGroup = function RadioGroup(props) {
var _useState = React.useState(props.value);
// 设置默认值
var onRadioChange = function onRadioChange(event) {
props.onChange == null || props.onChange(event.target.value);
};
//const name = props.name || `radio_${radioId++}`;
// 使用React.Children.map遍历子元素,并为每个子元素添加额外的props
var radioButtons = React__default.Children.map(props.children, function (child) {
if (!React__default.isValidElement(child)) return null;
return React__default.cloneElement(child, {
onChange: onRadioChange,
checked: child.props.value === props.value,
name: props.name
});
});
return React__default.createElement("div", null, radioButtons);
};
var Radio = function Radio(props) {
var value = props.value,
children = props.children,
onChange = props.onChange,
name = props.name;
return React__default.createElement("label", null, React__default.createElement("input", {
type: "radio",
name: name,
value: value,
onChange: onChange
}), children);
};
Radio.Group = RadioGroup;
var styles$1 = {"wrap":"Select-module_wrap__LtW5O"};
function SelectOption(props) {
return React__default.createElement("option", Object.assign({}, props));
}
function Select(props) {
var title = props.title,
children = props.children,
value = props.value;
function onChange(event) {
props.onChange == null || props.onChange(event.target.value);
}
return React__default.createElement("div", {
className: styles$1.wrap
}, React__default.createElement("select", {
title: title,
onChange: onChange,
value: value
}, children));
}
Select.Option = SelectOption;
var styles$2 = {"input":"AutoComplete-module_input__2BQZK","dropdown":"AutoComplete-module_dropdown__9zWLc","dropdownoption":"AutoComplete-module_dropdownoption__CGG0P"};
var useMouseDown = function useMouseDown(callback) {
React.useEffect(function () {
var handleClickOutside = function handleClickOutside(event) {
callback(event);
};
document.addEventListener("mousedown", handleClickOutside);
return function () {
document.removeEventListener("mousedown", handleClickOutside);
};
}, [callback]);
};
var styles$3 = {"popover":"Popover-module_popover__ZJZ5C"};
var _excluded = ["children", "targetEl"];
var Popover = /*#__PURE__*/React.forwardRef(function (props, ref) {
var refDropdown = React.useRef(null);
var children = props.children,
targetEl = props.targetEl,
rest = _objectWithoutPropertiesLoose(props, _excluded);
React.useLayoutEffect(function () {
console.log("mount");
if (!refDropdown.current) return;
if (!targetEl) return;
var rect = targetEl.getBoundingClientRect();
var left = rect.left;
var top = rect.top + rect.height;
var width = rect.width;
var padding = 10;
refDropdown.current.style.position = "absolute";
refDropdown.current.style.top = top + padding + "px";
refDropdown.current.style.left = left + "px";
refDropdown.current.style.width = width + "px";
}, [targetEl]);
function setRefs(dom) {
refDropdown.current = dom;
ref.current = dom;
}
return reactDom.createPortal(React__default.createElement("div", Object.assign({
className: styles$3.popover,
ref: setRefs
}, rest), children), document.body);
});
var _excluded$1 = ["active", "children"];
var AutoCompleteOption = function AutoCompleteOption(props) {
var active = props.active,
children = props.children,
rest = _objectWithoutPropertiesLoose(props, _excluded$1);
var ref = React.useRef(null);
React.useEffect(function () {
if (!ref.current) return;
if (active) {
scrollIntoView(ref.current, {
scrollMode: "if-needed",
behavior: "smooth"
});
}
}, [active]);
return React__default.createElement("div", Object.assign({
ref: ref
}, rest), children);
};
/**
* 默认的过滤器
* 默认过滤器认为数据源是字符串数组
* @param dataSource
* @param keyword
*/
function defaultFilter(dataSource, keyword) {
var options = [];
if (dataSource.length > 0) {
options = dataSource.filter(function (item) {
return ("" + item).toLowerCase().indexOf(keyword) > -1;
});
}
return options;
}
/**
* 默认的项绘制
* @param option
* @returns
*/
function defaultOptionRender(option) {
return option;
}
/**
* 默认的值渲染器
* @param option
* @returns
*/
function defaultOptionValuer(option) {
return option;
}
var AutoComplete = function AutoComplete(props) {
var refTarget = React.useRef(null);
var refDropdown = React.useRef(null);
var _useState = React.useState([]),
options = _useState[0],
setOptions = _useState[1];
var _useState2 = React.useState(0),
optionIndex = _useState2[0],
setOptionIndex = _useState2[1];
var _useState3 = React.useState(false),
optionsActive = _useState3[0],
setOptionsActive = _useState3[1];
var _useState4 = React.useState(props.value),
value = _useState4[0],
setValue = _useState4[1];
// 使用默认或者传入的过滤器
var filter = props.filter || defaultFilter;
// 内容渲染器
var optionRender = props.optionRender || defaultOptionRender;
// input渲染器
var optionValuer = props.optionValuer || defaultOptionValuer;
var onInputChange = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(e) {
var keyword, dataSource, filterOptions;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
keyword = e.currentTarget.value;
setValue(keyword);
if (!(props.dataSource instanceof Function)) {
_context.next = 8;
break;
}
_context.next = 5;
return props.dataSource(keyword);
case 5:
dataSource = _context.sent;
_context.next = 9;
break;
case 8:
dataSource = props.dataSource;
case 9:
filterOptions = filter(dataSource, keyword);
if (filterOptions.length > 0) {
setOptions(filterOptions);
setOptionsActive(true);
} else {
setOptionsActive(false);
}
triggerChange(keyword);
case 12:
case "end":
return _context.stop();
}
}, _callee);
}));
return function onInputChange(_x) {
return _ref.apply(this, arguments);
};
}();
var onInputKeyDown = function onInputKeyDown(e) {
if (e.key === "ArrowUp") {
if (optionIndex === 0) {
setOptionIndex(options.length - 1);
return;
}
setOptionIndex(optionIndex - 1);
} else if (e.key === "ArrowDown") {
// 如果该项当前不可见,需要进行处理,让其可见
if (optionIndex >= options.length - 1) {
setOptionIndex(0);
return;
}
setOptionIndex(optionIndex + 1);
} else if (e.key === "Enter") {
var option = options[optionIndex];
var val = optionValuer(option);
setValue(val);
triggerChange(val, option);
setOptionIndex(0);
setOptionsActive(false);
} else if (e.key === "Escape") {
setOptionsActive(false);
}
};
var onOptionClick = function onOptionClick(option) {
var val = optionValuer(option);
setValue(val);
triggerChange(val, option);
setOptionsActive(false);
setOptionIndex(0);
};
useMouseDown(function (event) {
var elements = [refTarget.current, refDropdown.current];
if (elements.every(function (el) {
return !(el != null && el.contains(event.target));
})) setOptionsActive(false);
});
// const debounce = useDebounce();
function triggerChange(value, option) {
//debounce.exec(() => {
props.onChange == null || props.onChange(value, option);
//});
}
return React__default.createElement(React__default.Fragment, null, React__default.createElement("input", {
type: "text",
ref: refTarget,
className: styles$2.input,
title: value,
value: value,
onChange: onInputChange,
onKeyDown: onInputKeyDown,
style: props.inputStyle,
autoFocus: true
}), optionsActive && React__default.createElement(Popover, {
targetEl: refTarget.current,
ref: refDropdown
}, options.map(function (option, index) {
var active = index === optionIndex;
return React__default.createElement(AutoCompleteOption, Object.assign({
className: styles$2.dropdownoption
}, active && {
style: {
background: "#d8dce1"
}
}, {
active: active,
key: index,
onClick: function onClick(e) {
return onOptionClick(option);
}
}), optionRender(option));
})));
};
var customers = [];
/**
* 默认的过滤器
* 默认过滤器认为数据源是字符串数组
* @param dataSource
* @param keyword
*/
function filter(dataSource, keyword) {
var options = [];
if (dataSource.length > 0) {
options = dataSource.filter(function (option) {
return option.name.toLowerCase().indexOf(keyword) > -1;
});
}
return options;
}
/**
* 默认的项绘制
* @param option
* @returns
*/
function optionRender(option) {
return option == null ? void 0 : option.name;
}
var dataSource = /*#__PURE__*/function () {
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(keyword) {
var options;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
options = [];
if (!(keyword.length === 0)) {
_context.next = 3;
break;
}
return _context.abrupt("return", options);
case 3:
if (dataSource.length > 0) {
options = customers.filter(function (option) {
return option.name.toLowerCase().indexOf(keyword) > -1;
});
}
return _context.abrupt("return", options);
case 5:
case "end":
return _context.stop();
}
}, _callee);
}));
return function dataSource(_x) {
return _ref.apply(this, arguments);
};
}();
function BuyerEditInput(props) {
return React__default.createElement(AutoComplete, {
dataSource: dataSource,
value: props.value,
onChange: props.onChange,
filter: filter,
optionRender: optionRender,
optionValuer: optionRender
});
}
function FormItem(props) {
var label = props.label,
children = props.children,
style = props.style;
return React__default.createElement("div", {
style: _extends({}, style, {
display: "flex",
alignItems: "center"
})
}, React__default.createElement("div", {
style: {
flex: "0 0 10em",
display: "inline-flex",
justifyContent: "end",
whiteSpace: "nowrap",
overflow: "hidden",
alignItems: "center"
}
}, label, "\uFF1A"), React__default.createElement("div", {
style: {
flex: "auto",
display: "flex",
alignItems: "center"
}
}, children));
}
var FormItem$1 = /*#__PURE__*/React.memo(FormItem);
var goods = [];
var inputStyle = {
boxSizing: 'border-box',
border: 'none',
outline: 'none',
fontSize: 'inherit',
fontFamily: 'inherit',
margin: 0,
padding: '6px 11px',
width: '100%',
height: '100%',
boxShadow: 'inset 0 0 0 2px #5292f7',
borderRadius: 0
};
/**
* 默认的过滤器
* 默认过滤器认为数据源是字符串数组
* @param dataSource
* @param keyword
*/
function filter$1(dataSource, keyword) {
var options = [];
if (dataSource.length > 0) {
options = dataSource.filter(function (option) {
return option.name.toLowerCase().indexOf(keyword) > -1;
});
}
return options;
}
/**
* 默认的项绘制
* @param option
* @returns
*/
function optionRender$1(option) {
return option == null ? void 0 : option.name;
}
var dataSource$1 = /*#__PURE__*/function () {
var _ref = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(keyword) {
var options;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
options = [];
if (!(keyword.length === 0)) {
_context.next = 3;
break;
}
return _context.abrupt("return", options);
case 3:
if (goods.length > 0) {
options = goods.filter(function (option) {
return option.name.toLowerCase().indexOf(keyword) > -1;
});
}
return _context.abrupt("return", options);
case 5:
case "end":
return _context.stop();
}
}, _callee);
}));
return function dataSource(_x) {
return _ref.apply(this, arguments);
};
}();
var GoodsNameEditInput = function GoodsNameEditInput(props) {
return React__default.createElement(AutoComplete, {
dataSource: dataSource$1,
value: props.value,
onChange: props.onChange,
filter: filter$1,
optionRender: optionRender$1,
optionValuer: optionRender$1,
inputStyle: inputStyle
});
};
function Fapiao(props) {
var _useState = React.useState(),
buyerType = _useState[0],
setBuyerType = _useState[1];
var _useState2 = React.useState(),
invoiceType = _useState2[0],
setInvoiceType = _useState2[1];
var _useState3 = React.useState(),
buyerName = _useState3[0],
setBuyerName = _useState3[1];
var _useState4 = React.useState(),
buyerTaxNum = _useState4[0],
setBuyerTaxNum = _useState4[1];
var _useState5 = React.useState(),
buyerAddress = _useState5[0],
setBuyerAddress = _useState5[1];
var _useState6 = React.useState(),
buyerTel = _useState6[0],
setBuyerTel = _useState6[1];
var _useState7 = React.useState(),
buyerBankName = _useState7[0],
setBuyerBankName = _useState7[1];
var _useState8 = React.useState(),
buyerBankAccount = _useState8[0],
setBuyerBankAccount = _useState8[1];
var _useState9 = React.useState(),
sellerName = _useState9[0],
setSellerName = _useState9[1];
var _useState10 = React.useState(),
sellerTaxnum = _useState10[0],
setSellerTaxnum = _useState10[1];
var _useState11 = React.useState(),
sellerAddress = _useState11[0],
setSellerAddress = _useState11[1];
var _useState12 = React.useState(),
sellerTel = _useState12[0],
setSellerTel = _useState12[1];
var _useState13 = React.useState(),
sellerBankName = _useState13[0],
setSellerBankName = _useState13[1];
var _useState14 = React.useState(),
sellerBankAccount = _useState14[0],
setSellerBankAccount = _useState14[1];
var _useState15 = React.useState(),
extra = _useState15[0],
setExtra = _useState15[1];
var _useState16 = React.useState(),
cashier = _useState16[0],
setCashier = _useState16[1];
var _useState17 = React.useState(),
checker = _useState17[0],
setChecker = _useState17[1];
var _useState18 = React.useState(),
invoicer = _useState18[0],
setInvoicer = _useState18[1];
var _useState19 = React.useState(props.goods || []),
goods = _useState19[0],
setGoods = _useState19[1];
var refTable = React.useRef(null);
var columns = [{
title: '货物、服务名称',
dataIndex: 'name',
width: '15em',
editable: true,
// 要能autocomplete
editor: GoodsNameEditInput
}, {
title: '税目编码',
dataIndex: 'taxCode',
width: '14em',
editable: true
}, {
title: '规格型号',
dataIndex: 'models',
width: '6em',
editable: true
}, {
title: '单位',
dataIndex: 'unit',
width: '4em',
editable: true
}, {
title: '数量单价(含税)',
dataIndex: 'price',
width: '9em',
editable: true
}, {
title: '金额(含税)',
dataIndex: 'totalPrice',
width: '7em',
editable: true
}, {
title: '税率',
dataIndex: 'taxRate',
width: '4em',
editable: true
}, {
title: '税额',
dataIndex: 'taxAmount',
width: '7em',
editable: true
}, {
title: '操作',
dataIndex: 'opr',
render: function render(value, index, record) {
return React__default.createElement("a", {
onClick: function onClick(e) {
return onClickRowDelete(index);
},
href: "javascript: void(0)"
}, "\u5220\u9664");
},
width: '4em',
align: 'center'
}];
function onClickAddRow() {
setGoods([].concat(goods, [{}]));
}
function onClickRowDelete(rowIdx) {
goods.splice(rowIdx, 1);
setGoods([].concat(goods));
}
function onClickRemoveAll() {
var _refTable$current, _refTable$current2;
setGoods([]);
(_refTable$current = refTable.current) == null || _refTable$current.setEditingCell(undefined);
(_refTable$current2 = refTable.current) == null || _refTable$current2.setSelectedCell(undefined);
}
function onChangeCell(value, detail, tag) {
var _Object$assign2;
// console.log("[invoice cell change]:", detail, value, tag);
if (detail.column.dataIndex === undefined) {
throw new Error("detail.column.dataIndex can't be undefine");
}
if (detail.column.dataIndex === 'name') {
if (tag instanceof Object) {
var _Object$assign;
Object.assign(goods[detail.rowIdx], (_Object$assign = {}, _Object$assign['taxCode'] = tag.taxCode, _Object$assign));
}
}
Object.assign(goods[detail.rowIdx], (_Object$assign2 = {}, _Object$assign2[detail.column.dataIndex] = value, _Object$assign2));
setGoods([].concat(goods));
// detail.rowIdx,
// detail.cell.dataIndex
}
var totalPrice = React.useMemo(function () {
var price = goods.reduce(function (acc, cur) {
return acc.add(cur.totalPrice || 0);
}, new Decimal(0));
return price.toString();
}, [goods]);
var rmbTotalPrice = dxrmb(totalPrice);
function onChangeBuyerType(value) {
setBuyerType(value);
}
function onChangeInvoiceType(value) {
setInvoiceType(value);
}
function onChangeBuyerName(value, tag) {
setBuyerName(value);
if (tag instanceof Object) {
setBuyerTaxNum(tag.taxNum);
setBuyerAddress(tag.address);
setBuyerTel(tag.tel);
setBuyerBankName(tag.bankName);
setBuyerBankAccount(tag.bankAccount);
}
}
function onChangeBuyerTaxnum(event) {
setBuyerTaxNum(event.currentTarget.value);
}
function onChangeBuyerAddress(event) {
setBuyerAddress(event.currentTarget.value);
}
function onChangeBuyerTel(event) {
setBuyerTel(event.currentTarget.value);
}
function onChangeBuyerBankName(event) {
setBuyerBankName(event.currentTarget.value);
}
function onChangeBuyerBankAccount(event) {
setBuyerBankAccount(event.currentTarget.value);
}
function onChangeSellerName(event) {
setSellerName(event.currentTarget.value);
}
function onChangeSellerTaxnum(event) {
setSellerTaxnum(event.currentTarget.value);
}
function onChangeSellerAddress(event) {
setSellerAddress(event.currentTarget.value);
}
function onChangeSellerTel(event) {
setSellerTel(event.currentTarget.value);
}
function onChangeSellerBankName(event) {
setSellerBankName(event.currentTarget.value);
}
function onChangeSellerBankAccount(event) {
setSellerBankAccount(event.currentTarget.value);
}
function onChangeExtra(event) {
setExtra(event.currentTarget.value);
}
function onChangeCashier(event) {
setCashier(event.currentTarget.value);
}
function onChangeChecker(event) {
setChecker(event.currentTarget.value);
}
function onChangeInvoicer(event) {
setInvoicer(event.currentTarget.value);
}
return React__default.createElement("div", {
style: {
background: 'rgb(235,236,240)',
fontSize: 12,
padding: 10,
borderRadius: 6
}
}, React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u8D2D\u65B9\u7C7B\u578B"
}, React__default.createElement(Radio.Group, {
value: buyerType,
onChange: onChangeBuyerType
}, React__default.createElement(Radio, {
value: '个人'
}, "\u4E2A\u4EBA"), React__default.createElement(Radio, {
value: '企业'
}, "\u4F01\u4E1A"))), React__default.createElement(FormItem$1, {
label: "\u53D1\u7968\u7C7B\u578B"
}, React__default.createElement(Select, {
value: invoiceType,
onChange: onChangeInvoiceType
}, React__default.createElement(Select.Option, {
value: "\u5897\u503C\u7A0E\u7535\u5B50\u53D1\u7968"
}, "\u5897\u503C\u7A0E\u7535\u5B50\u53D1\u7968"), React__default.createElement(Select.Option, {
value: "\u5897\u503C\u7A0E\u666E\u901A\u53D1\u8508"
}, "\u5897\u503C\u7A0E\u666E\u901A\u53D1\u8508"), React__default.createElement(Select.Option, {
value: "\u5897\u503C\u7A0E\u4E13\u7528\u53D1\u8508"
}, "\u5897\u503C\u7A0E\u4E13\u7528\u53D1\u8508")))), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u8D2D\u65B9\u540D\u79F0"
}, React__default.createElement(BuyerEditInput, {
onChange: onChangeBuyerName,
value: buyerName
})), React__default.createElement(FormItem$1, {
label: "\u8D2D\u65B9\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7"
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u8D2D\u65B9\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",
onChange: onChangeBuyerTaxnum,
value: buyerTaxNum
}))), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u8D2D\u65B9\u5730\u5740\u3001\u7535\u8BDD"
}, React__default.createElement(Flex, {
gap: 6,
flexs: ['auto', '0 1 8em']
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u8D2D\u65B9\u5730\u5740",
onChange: onChangeBuyerAddress,
value: buyerAddress
}), React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u7535\u8BDD",
onChange: onChangeBuyerTel,
value: buyerTel
}))), React__default.createElement(FormItem$1, {
label: "\u8D2D\u65B9\u5F00\u6237\u884C\u53CA\u8D26\u6237"
}, React__default.createElement(Flex, {
gap: 6,
flexs: ['auto', '0 1 10em']
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u5F00\u6237\u884C",
onChange: onChangeBuyerBankName,
value: buyerBankName
}), React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u8D26\u6237",
onChange: onChangeBuyerBankAccount,
value: buyerBankAccount
})))), React__default.createElement("div", {
style: {
fontSize: 12,
textAlign: 'right',
marginBottom: 6
}
}, React__default.createElement("a", {
style: {
marginRight: 10,
textDecoration: 'none'
},
onClick: onClickAddRow,
href: "javascript: void(0)"
}, "\u6DFB\u52A0\u65B0\u884C"), React__default.createElement("a", {
style: {
textDecoration: 'none'
},
onClick: onClickRemoveAll,
href: "javascript: void(0)"
}, "\u6E05\u7A7A\u6570\u636E")), React__default.createElement(HTableLayout, {
ref: refTable,
style: {
marginBottom: 6
},
columns: columns,
data: goods,
onChangeCell: onChangeCell
}), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u5408\u8BA1\u91D1\u989D"
}, "\uFFE5", totalPrice), React__default.createElement(FormItem$1, {
label: "\u5408\u8BA1\u7A0E\u989D"
}, "\uFFE50.00")), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u4EF7\u7A0E\u5408\u8BA1(\u5927\u5199)"
}, rmbTotalPrice), React__default.createElement(FormItem$1, {
label: "\u4EF7\u7A0E\u5408\u8BA1(\u5C0F\u5199)"
}, "\uFFE50.00")), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u9500\u65B9\u540D\u79F0"
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u9500\u65B9\u540D\u79F0",
onChange: onChangeSellerName,
value: sellerName
})), React__default.createElement(FormItem$1, {
label: "\u9500\u65B9\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7"
}, React__default.createElement(Input, {
placeholder: "\u9500\u65B9\u7EB3\u7A0E\u4EBA\u8BC6\u522B\u53F7",
onChange: onChangeSellerTaxnum,
value: sellerTaxnum
}))), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u9500\u65B9\u5730\u5740\u3001\u7535\u8BDD"
}, React__default.createElement(Flex, {
gap: 6,
flexs: ['auto', '0 1 8em']
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u9500\u65B9\u5730\u5740",
onChange: onChangeSellerAddress,
value: sellerAddress
}), React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u7535\u8BDD",
onChange: onChangeSellerTel,
value: sellerTel
}))), React__default.createElement(FormItem$1, {
label: "\u9500\u65B9\u5F00\u6237\u884C\u53CA\u8D26\u6237"
}, React__default.createElement(Flex, {
gap: 6,
flexs: ['auto', '0 1 10em']
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u5F00\u6237\u884C",
onChange: onChangeSellerBankName,
value: sellerBankName
}), React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u8D26\u6237",
onChange: onChangeSellerBankAccount,
value: sellerBankAccount
})))), React__default.createElement(FormItem$1, {
label: "\u5907\u6CE8",
style: {
marginBottom: 6
}
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u5907\u6CE8",
value: extra,
onChange: onChangeExtra
})), React__default.createElement(Flex, {
style: {
marginBottom: 6
},
gap: 6
}, React__default.createElement(FormItem$1, {
label: "\u6536\u6B3E\u4EBA"
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u5F00\u7968\u4EBA",
onChange: onChangeCashier,
value: cashier
})), React__default.createElement(FormItem$1, {
label: "\u590D\u6838\u4EBA"
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u590D\u6838\u4EBA",
onChange: onChangeChecker,
value: checker
})), React__default.createElement(FormItem$1, {
label: "\u5F00\u7968\u4EBA"
}, React__default.createElement(Input, {
placeholder: "\u8BF7\u8F93\u5165\u5F00\u7968\u4EBA",
onChange: onChangeInvoicer,
value: invoicer
}))));
}
exports.Fapiao = Fapiao;
//# sourceMappingURL=fapiao.cjs.development.js.map