Commit 8a300658afb5d9eb7817d47bd35c08a31b4cdc6c

Authored by 邢晴晴
1 parent 0b3c1c1c

feat:XQ230328006主表新增数据时需要展示关联表中的自定义功能按钮

Too many changes to show.

To preserve performance only 24 of 113 files are displayed.

  1 +# misc
  2 +.idea
  3 +.DS_Store
  4 +.idea
  5 +.vscode
... ...
  1 +import _PlusCircleFilled from "@ant-design/icons/es/icons/PlusCircleFilled";
  2 +import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined";
  3 +import _UpOutlined from "@ant-design/icons/es/icons/UpOutlined";
  4 +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined";
  5 +
  6 +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  7 +
  8 +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  9 +
  10 +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  11 +
  12 +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  13 +
  14 +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
  15 +
  16 +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  17 +
  18 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  19 +
  20 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  21 +
  22 +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
  23 +
  24 +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
  25 +
  26 +/* eslint-disable jsx-a11y/anchor-is-valid */
  27 +import React, { useEffect, useMemo, useState } from 'react';
  28 +import Core from '../../index'; // import { Button, Space, Popconfirm } from 'antd';
  29 +// import ArrowDown from '../../../components/ArrowDown';
  30 +
  31 +import { Collapse } from 'antd-mobile';
  32 +
  33 +// 数字转汉字
  34 +function convertToChinaNum(num) {
  35 + var arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
  36 + var arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿']; //可继续追加更高位转换值
  37 +
  38 + if (!num || isNaN(num)) {
  39 + return "零";
  40 + }
  41 +
  42 + var english = num.toString().split("");
  43 + var result = "";
  44 +
  45 + for (var i = 0; i < english.length; i++) {
  46 + var des_i = english.length - 1 - i; //倒序排列设值
  47 +
  48 + result = arr2[i] + result;
  49 + var arr1_index = english[des_i];
  50 + result = arr1[arr1_index] + result;
  51 + }
  52 +
  53 + result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
  54 + result = result.replace(/零+/g, '零');
  55 + result = result.replace(/零亿/g, '亿').replace(/零万/g, '万');
  56 + result = result.replace(/亿万/g, '亿');
  57 + result = result.replace(/零+$/, '');
  58 + result = result.replace(/^一十/g, '十');
  59 + return result;
  60 +}
  61 +
  62 +var ListForMobile = function ListForMobile(_ref) {
  63 + var _ref$displayList = _ref.displayList,
  64 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  65 + listData = _ref.listData,
  66 + changeList = _ref.changeList,
  67 + schema = _ref.schema,
  68 + deleteItem = _ref.deleteItem,
  69 + copyItem = _ref.copyItem,
  70 + addItem = _ref.addItem,
  71 + moveItemUp = _ref.moveItemUp,
  72 + moveItemDown = _ref.moveItemDown,
  73 + displayType = _ref.displayType,
  74 + getFieldsProps = _ref.getFieldsProps;
  75 + var _schema$props = schema.props,
  76 + props = _schema$props === void 0 ? {} : _schema$props,
  77 + itemProps = schema.itemProps;
  78 +
  79 + var _useState = useState([]),
  80 + _useState2 = _slicedToArray(_useState, 2),
  81 + allKeys = _useState2[0],
  82 + setKeys = _useState2[1]; // let addBtnProps = {
  83 + // type: 'dashed',
  84 + // children: '新增一条list',
  85 + // };
  86 + // if (props.addBtnProps && typeof props.addBtnProps === 'object') {
  87 + // addBtnProps = { ...addBtnProps, ...props.addBtnProps };
  88 + // }
  89 +
  90 +
  91 + useEffect(function () {
  92 + var _allKeys = [];
  93 + displayList.forEach(function (item, idx) {
  94 + if (item._active) {
  95 + _allKeys.push(String(idx));
  96 + }
  97 + });
  98 + setKeys(_allKeys);
  99 + }, [displayList]);
  100 +
  101 + var getTitle = function getTitle(id) {
  102 + return /*#__PURE__*/React.createElement("div", {
  103 + style: {
  104 + display: 'flex',
  105 + justifyContent: "space-between",
  106 + alignItems: 'center'
  107 + }
  108 + }, /*#__PURE__*/React.createElement("span", null, "\u6570\u636E", id + 1), /*#__PURE__*/React.createElement("a", {
  109 + onClick: function onClick(e) {
  110 + e.stopPropagation();
  111 + deleteItem(id);
  112 + },
  113 + style: {
  114 + display: 'inline-block',
  115 + padding: '0 10px'
  116 + }
  117 + }, /*#__PURE__*/React.createElement(_DeleteOutlined, {
  118 + style: {
  119 + fontSize: 16,
  120 + width: 16,
  121 + height: 16
  122 + }
  123 + })));
  124 + };
  125 +
  126 + var handleArrow = function handleArrow(active) {
  127 + if (active) {
  128 + return /*#__PURE__*/React.createElement(_UpOutlined, {
  129 + onClick: function onClick() {}
  130 + });
  131 + } else {
  132 + return /*#__PURE__*/React.createElement(_DownOutlined, null);
  133 + }
  134 + };
  135 +
  136 + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
  137 + className: "fr-card-list qx-card-mobile"
  138 + }, /*#__PURE__*/React.createElement(Collapse, {
  139 + activeKey: allKeys
  140 + }, displayList.map(function (item, idx) {
  141 + var fieldsProps = getFieldsProps(idx);
  142 + fieldsProps.displayType = displayType;
  143 + return /*#__PURE__*/React.createElement(Collapse.Panel, {
  144 + key: String(idx),
  145 + title: getTitle(idx),
  146 + arrow: handleArrow,
  147 + onClick: function onClick() {
  148 + var _active = item._active || false;
  149 +
  150 + displayList[idx]._active = !_active;
  151 + changeList(_toConsumableArray(displayList));
  152 + }
  153 + }, /*#__PURE__*/React.createElement("div", {
  154 + className: "fr-card-item qx-card-mobile-item ".concat(displayType === 'row' ? 'fr-card-item-row' : ''),
  155 + key: idx
  156 + }, /*#__PURE__*/React.createElement(Core, fieldsProps)));
  157 + }))), /*#__PURE__*/React.createElement("a", {
  158 + className: 'add-button',
  159 + onClick: function onClick() {
  160 + addItem();
  161 + }
  162 + }, /*#__PURE__*/React.createElement(_PlusCircleFilled, {
  163 + style: {
  164 + marginRight: 2,
  165 + width: 14,
  166 + height: 14
  167 + }
  168 + }), "\u70B9\u51FB\u65B0\u589E\u6570\u636E"));
  169 +};
  170 +
  171 +export default ListForMobile;
\ No newline at end of file
... ...
  1 +import { createFromIconfontCN } from '@ant-design/icons/lib';
  2 +/**
  3 + * 使用:
  4 + * import QxIcon from '@/packages/qx-icon';
  5 + * <QxIcon type="xxx"/>
  6 + * 说明:
  7 + * `xxx`为图标唯一标识,`iconfont.cn`对应图标下的“复制代码”所得,建议命名为“icon-xxx_yyy”,
  8 + * “icon-”为固定前缀,xxx为模块类型,yyy为图标名。公共类的xxx命名为“comm”
  9 + * eg: <QxIcon type="icon-flow_eye"/>
  10 + *
  11 + * @type {React.FC<IconFontProps<string>>}
  12 + */
  13 +
  14 +var QxIcon = createFromIconfontCN({
  15 + scriptUrl: 'https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/icons_13749_95.b05de9dc2fbe8efffb150f83b64da806.es5.js'
  16 +});
  17 +export default QxIcon;
\ No newline at end of file
... ...
  1 +/* eslint-disable react-hooks/exhaustive-deps */
  2 +import { useEffect } from 'react';
  3 +import { getValueByPath } from './utils';
  4 +
  5 +var Watcher = function Watcher(_ref) {
  6 + var watchKey = _ref.watchKey,
  7 + watch = _ref.watch,
  8 + formData = _ref.formData,
  9 + firstMount = _ref.firstMount;
  10 + var value = getValueByPath(formData, watchKey);
  11 + var watchObj = watch[watchKey];
  12 + useEffect(function () {
  13 + var runWatcher = function runWatcher() {
  14 + if (typeof watchObj === 'function') {
  15 + try {
  16 + watchObj(value);
  17 + } catch (error) {
  18 + console.log("".concat(watchKey, "\u5BF9\u5E94\u7684watch\u51FD\u6570\u6267\u884C\u62A5\u9519\uFF1A"), error);
  19 + }
  20 + } else if (watchObj && typeof watchObj.handler === 'function') {
  21 + try {
  22 + watchObj.handler(value);
  23 + } catch (error) {
  24 + console.log("".concat(watchKey, "\u5BF9\u5E94\u7684watch\u51FD\u6570\u6267\u884C\u62A5\u9519\uFF1A"), error);
  25 + }
  26 + }
  27 + };
  28 +
  29 + if (firstMount) {
  30 + var immediate = watchObj && watchObj.immediate;
  31 +
  32 + if (immediate) {
  33 + runWatcher();
  34 + }
  35 + } else {
  36 + runWatcher();
  37 + }
  38 + }, [JSON.stringify(value), firstMount]);
  39 + return null;
  40 +};
  41 +
  42 +export default Watcher;
\ No newline at end of file
... ...
  1 +.fr-container {
  2 + /* Resets */
  3 + /*
  4 + This will set table to full width and then
  5 + all cells will be equal width
  6 + */
  7 + /* 1. Fix for Chrome 44 bug.
  8 + * https://code.google.com/p/chromium/issues/detail?id=506893 */
  9 + /* Height Percentages - Based off of height of parent */
  10 + /* Screen Height Percentage */
  11 + /* String Properties */
  12 + /* Max Width Percentages */
  13 + /* Max Width Scale */
  14 + /* Max Width String Properties */
  15 +}
  16 +.fr-container .outline {
  17 + outline: 1px solid;
  18 +}
  19 +.fr-container .outline-transparent {
  20 + outline: 1px solid transparent;
  21 +}
  22 +.fr-container .outline-0 {
  23 + outline: 0;
  24 +}
  25 +.fr-container .ba {
  26 + border-style: solid;
  27 + border-width: 1px;
  28 +}
  29 +.fr-container .bt {
  30 + border-top-style: solid;
  31 + border-top-width: 1px;
  32 +}
  33 +.fr-container .br {
  34 + border-right-style: solid;
  35 + border-right-width: 1px;
  36 +}
  37 +.fr-container .bb {
  38 + border-bottom-style: solid;
  39 + border-bottom-width: 1px;
  40 +}
  41 +.fr-container .bl {
  42 + border-left-style: solid;
  43 + border-left-width: 1px;
  44 +}
  45 +.fr-container .bn {
  46 + border-style: none;
  47 + border-width: 0;
  48 +}
  49 +.fr-container .br0 {
  50 + border-radius: 0;
  51 +}
  52 +.fr-container .br1 {
  53 + border-radius: 0.125rem;
  54 +}
  55 +.fr-container .br2 {
  56 + border-radius: 0.25rem;
  57 +}
  58 +.fr-container .br3 {
  59 + border-radius: 0.5rem;
  60 +}
  61 +.fr-container .br4 {
  62 + border-radius: 1rem;
  63 +}
  64 +.fr-container .br-100 {
  65 + border-radius: 100%;
  66 +}
  67 +.fr-container .br-pill {
  68 + border-radius: 9999px;
  69 +}
  70 +.fr-container .br--bottom {
  71 + border-top-left-radius: 0;
  72 + border-top-right-radius: 0;
  73 +}
  74 +.fr-container .br--top {
  75 + border-bottom-left-radius: 0;
  76 + border-bottom-right-radius: 0;
  77 +}
  78 +.fr-container .br--right {
  79 + border-top-left-radius: 0;
  80 + border-bottom-left-radius: 0;
  81 +}
  82 +.fr-container .br--left {
  83 + border-top-right-radius: 0;
  84 + border-bottom-right-radius: 0;
  85 +}
  86 +.fr-container .b--dotted {
  87 + border-style: dotted;
  88 +}
  89 +.fr-container .b--dashed {
  90 + border-style: dashed;
  91 +}
  92 +.fr-container .b--solid {
  93 + border-style: solid;
  94 +}
  95 +.fr-container .b--none {
  96 + border-style: none;
  97 +}
  98 +.fr-container .b--black-10 {
  99 + border-color: rgba(0, 0, 0, 0.1);
  100 +}
  101 +.fr-container .b--black-20 {
  102 + border-color: rgba(0, 0, 0, 0.2);
  103 +}
  104 +.fr-container .b--black-30 {
  105 + border-color: rgba(0, 0, 0, 0.3);
  106 +}
  107 +.fr-container .bw0 {
  108 + border-width: 0;
  109 +}
  110 +.fr-container .bw1 {
  111 + border-width: 0.125rem;
  112 +}
  113 +.fr-container .bw2 {
  114 + border-width: 0.25rem;
  115 +}
  116 +.fr-container .bw3 {
  117 + border-width: 0.5rem;
  118 +}
  119 +.fr-container .bw4 {
  120 + border-width: 1rem;
  121 +}
  122 +.fr-container .bw5 {
  123 + border-width: 2rem;
  124 +}
  125 +.fr-container .bt-0 {
  126 + border-top-width: 0;
  127 +}
  128 +.fr-container .br-0 {
  129 + border-right-width: 0;
  130 +}
  131 +.fr-container .bb-0 {
  132 + border-bottom-width: 0;
  133 +}
  134 +.fr-container .bl-0 {
  135 + border-left-width: 0;
  136 +}
  137 +.fr-container .shadow-1 {
  138 + box-shadow: 0 0 4px 2px rgba(0, 0, 0, 0.2);
  139 +}
  140 +.fr-container .shadow-2 {
  141 + box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);
  142 +}
  143 +.fr-container .shadow-3 {
  144 + box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, 0.2);
  145 +}
  146 +.fr-container .shadow-4 {
  147 + box-shadow: 2px 2px 8px 0 rgba(0, 0, 0, 0.2);
  148 +}
  149 +.fr-container .shadow-5 {
  150 + box-shadow: 4px 4px 8px 0 rgba(0, 0, 0, 0.2);
  151 +}
  152 +.fr-container .top-0 {
  153 + top: 0;
  154 +}
  155 +.fr-container .right-0 {
  156 + right: 0;
  157 +}
  158 +.fr-container .bottom-0 {
  159 + bottom: 0;
  160 +}
  161 +.fr-container .left-0 {
  162 + left: 0;
  163 +}
  164 +.fr-container .top-1 {
  165 + top: 1rem;
  166 +}
  167 +.fr-container .right-1 {
  168 + right: 1rem;
  169 +}
  170 +.fr-container .bottom-1 {
  171 + bottom: 1rem;
  172 +}
  173 +.fr-container .left-1 {
  174 + left: 1rem;
  175 +}
  176 +.fr-container .top-2 {
  177 + top: 2rem;
  178 +}
  179 +.fr-container .right-2 {
  180 + right: 2rem;
  181 +}
  182 +.fr-container .bottom-2 {
  183 + bottom: 2rem;
  184 +}
  185 +.fr-container .left-2 {
  186 + left: 2rem;
  187 +}
  188 +.fr-container .top--1 {
  189 + top: -1rem;
  190 +}
  191 +.fr-container .right--1 {
  192 + right: -1rem;
  193 +}
  194 +.fr-container .bottom--1 {
  195 + bottom: -1rem;
  196 +}
  197 +.fr-container .left--1 {
  198 + left: -1rem;
  199 +}
  200 +.fr-container .top--2 {
  201 + top: -2rem;
  202 +}
  203 +.fr-container .right--2 {
  204 + right: -2rem;
  205 +}
  206 +.fr-container .bottom--2 {
  207 + bottom: -2rem;
  208 +}
  209 +.fr-container .left--2 {
  210 + left: -2rem;
  211 +}
  212 +.fr-container .absolute--fill {
  213 + top: 0;
  214 + right: 0;
  215 + bottom: 0;
  216 + left: 0;
  217 +}
  218 +.fr-container .dn {
  219 + display: none;
  220 +}
  221 +.fr-container .di {
  222 + display: inline;
  223 +}
  224 +.fr-container .db {
  225 + display: block;
  226 +}
  227 +.fr-container .dib {
  228 + display: inline-block;
  229 +}
  230 +.fr-container .dit {
  231 + display: inline-table;
  232 +}
  233 +.fr-container .dt {
  234 + display: table;
  235 +}
  236 +.fr-container .dtc {
  237 + display: table-cell;
  238 +}
  239 +.fr-container .dt-row {
  240 + display: table-row;
  241 +}
  242 +.fr-container .dt-row-group {
  243 + display: table-row-group;
  244 +}
  245 +.fr-container .dt-column {
  246 + display: table-column;
  247 +}
  248 +.fr-container .dt-column-group {
  249 + display: table-column-group;
  250 +}
  251 +.fr-container .dt--fixed {
  252 + table-layout: fixed;
  253 + width: 100%;
  254 +}
  255 +.fr-container .flex {
  256 + display: flex;
  257 +}
  258 +.fr-container .inline-flex {
  259 + display: inline-flex;
  260 +}
  261 +.fr-container .flex-auto {
  262 + flex: 1 1 auto;
  263 + min-width: 0;
  264 + /* 1 */
  265 + min-height: 0;
  266 + /* 1 */
  267 +}
  268 +.fr-container .flex-none {
  269 + flex: none;
  270 +}
  271 +.fr-container .flex-column {
  272 + flex-direction: column;
  273 +}
  274 +.fr-container .flex-row {
  275 + flex-direction: row;
  276 +}
  277 +.fr-container .flex-wrap {
  278 + flex-wrap: wrap;
  279 +}
  280 +.fr-container .flex-nowrap {
  281 + flex-wrap: nowrap;
  282 +}
  283 +.fr-container .flex-wrap-reverse {
  284 + flex-wrap: wrap-reverse;
  285 +}
  286 +.fr-container .flex-column-reverse {
  287 + flex-direction: column-reverse;
  288 +}
  289 +.fr-container .flex-row-reverse {
  290 + flex-direction: row-reverse;
  291 +}
  292 +.fr-container .items-start {
  293 + align-items: flex-start;
  294 +}
  295 +.fr-container .items-end {
  296 + align-items: flex-end;
  297 +}
  298 +.fr-container .items-center {
  299 + align-items: center;
  300 +}
  301 +.fr-container .items-baseline {
  302 + align-items: baseline;
  303 +}
  304 +.fr-container .items-stretch {
  305 + align-items: stretch;
  306 +}
  307 +.fr-container .self-start {
  308 + align-self: flex-start;
  309 +}
  310 +.fr-container .self-end {
  311 + align-self: flex-end;
  312 +}
  313 +.fr-container .self-center {
  314 + align-self: center;
  315 +}
  316 +.fr-container .self-baseline {
  317 + align-self: baseline;
  318 +}
  319 +.fr-container .self-stretch {
  320 + align-self: stretch;
  321 +}
  322 +.fr-container .justify-start {
  323 + justify-content: flex-start;
  324 +}
  325 +.fr-container .justify-end {
  326 + justify-content: flex-end;
  327 +}
  328 +.fr-container .justify-center {
  329 + justify-content: center;
  330 +}
  331 +.fr-container .justify-between {
  332 + justify-content: space-between;
  333 +}
  334 +.fr-container .justify-around {
  335 + justify-content: space-around;
  336 +}
  337 +.fr-container .content-start {
  338 + align-content: flex-start;
  339 +}
  340 +.fr-container .content-end {
  341 + align-content: flex-end;
  342 +}
  343 +.fr-container .content-center {
  344 + align-content: center;
  345 +}
  346 +.fr-container .content-between {
  347 + align-content: space-between;
  348 +}
  349 +.fr-container .content-around {
  350 + align-content: space-around;
  351 +}
  352 +.fr-container .content-stretch {
  353 + align-content: stretch;
  354 +}
  355 +.fr-container .order-0 {
  356 + order: 0;
  357 +}
  358 +.fr-container .order-1 {
  359 + order: 1;
  360 +}
  361 +.fr-container .order-2 {
  362 + order: 2;
  363 +}
  364 +.fr-container .order-3 {
  365 + order: 3;
  366 +}
  367 +.fr-container .order-4 {
  368 + order: 4;
  369 +}
  370 +.fr-container .order-5 {
  371 + order: 5;
  372 +}
  373 +.fr-container .order-6 {
  374 + order: 6;
  375 +}
  376 +.fr-container .order-7 {
  377 + order: 7;
  378 +}
  379 +.fr-container .order-8 {
  380 + order: 8;
  381 +}
  382 +.fr-container .order-last {
  383 + order: 99999;
  384 +}
  385 +.fr-container .flex-grow-0 {
  386 + flex-grow: 0;
  387 +}
  388 +.fr-container .flex-grow-1 {
  389 + flex-grow: 1;
  390 +}
  391 +.fr-container .flex-shrink-0 {
  392 + flex-shrink: 0;
  393 +}
  394 +.fr-container .flex-shrink-1 {
  395 + flex-shrink: 1;
  396 +}
  397 +.fr-container .fw1 {
  398 + font-weight: 100;
  399 +}
  400 +.fr-container .fw2 {
  401 + font-weight: 200;
  402 +}
  403 +.fr-container .fw3 {
  404 + font-weight: 300;
  405 +}
  406 +.fr-container .fw4 {
  407 + font-weight: 400;
  408 +}
  409 +.fr-container .fw5 {
  410 + font-weight: 500;
  411 +}
  412 +.fr-container .fw6 {
  413 + font-weight: 600;
  414 +}
  415 +.fr-container .fw7 {
  416 + font-weight: 700;
  417 +}
  418 +.fr-container .fw8 {
  419 + font-weight: 800;
  420 +}
  421 +.fr-container .fw9 {
  422 + font-weight: 900;
  423 +}
  424 +.fr-container .h1 {
  425 + height: 1rem;
  426 +}
  427 +.fr-container .h2 {
  428 + height: 2rem;
  429 +}
  430 +.fr-container .h3 {
  431 + height: 4rem;
  432 +}
  433 +.fr-container .h4 {
  434 + height: 8rem;
  435 +}
  436 +.fr-container .h5 {
  437 + height: 16rem;
  438 +}
  439 +.fr-container .h-25 {
  440 + height: 25%;
  441 +}
  442 +.fr-container .h-50 {
  443 + height: 50%;
  444 +}
  445 +.fr-container .h-75 {
  446 + height: 75%;
  447 +}
  448 +.fr-container .h-100 {
  449 + height: 100%;
  450 +}
  451 +.fr-container .min-h-100 {
  452 + min-height: 100%;
  453 +}
  454 +.fr-container .vh-25 {
  455 + height: 25vh;
  456 +}
  457 +.fr-container .vh-50 {
  458 + height: 50vh;
  459 +}
  460 +.fr-container .vh-75 {
  461 + height: 75vh;
  462 +}
  463 +.fr-container .vh-100 {
  464 + height: 100vh;
  465 +}
  466 +.fr-container .min-vh-100 {
  467 + min-height: 100vh;
  468 +}
  469 +.fr-container .h-auto {
  470 + height: auto;
  471 +}
  472 +.fr-container .h-inherit {
  473 + height: inherit;
  474 +}
  475 +.fr-container .tracked {
  476 + letter-spacing: 0.1em;
  477 +}
  478 +.fr-container .tracked-tight {
  479 + letter-spacing: -0.05em;
  480 +}
  481 +.fr-container .tracked-mega {
  482 + letter-spacing: 0.25em;
  483 +}
  484 +.fr-container .lh-solid {
  485 + line-height: 1;
  486 +}
  487 +.fr-container .lh-title {
  488 + line-height: 1.25;
  489 +}
  490 +.fr-container .lh-copy {
  491 + line-height: 1.5;
  492 +}
  493 +.fr-container .mw-100 {
  494 + max-width: 100%;
  495 +}
  496 +.fr-container .mw1 {
  497 + max-width: 1rem;
  498 +}
  499 +.fr-container .mw2 {
  500 + max-width: 2rem;
  501 +}
  502 +.fr-container .mw3 {
  503 + max-width: 4rem;
  504 +}
  505 +.fr-container .mw4 {
  506 + max-width: 8rem;
  507 +}
  508 +.fr-container .mw5 {
  509 + max-width: 16rem;
  510 +}
  511 +.fr-container .mw6 {
  512 + max-width: 32rem;
  513 +}
  514 +.fr-container .mw7 {
  515 + max-width: 48rem;
  516 +}
  517 +.fr-container .mw8 {
  518 + max-width: 64rem;
  519 +}
  520 +.fr-container .mw9 {
  521 + max-width: 96rem;
  522 +}
  523 +.fr-container .mw-none {
  524 + max-width: none;
  525 +}
  526 +.fr-container .w1 {
  527 + width: 1rem;
  528 +}
  529 +.fr-container .w2 {
  530 + width: 2rem;
  531 +}
  532 +.fr-container .w3 {
  533 + width: 4rem;
  534 +}
  535 +.fr-container .w4 {
  536 + width: 8rem;
  537 +}
  538 +.fr-container .w5 {
  539 + width: 16rem;
  540 +}
  541 +.fr-container .w-10 {
  542 + width: 10%;
  543 +}
  544 +.fr-container .w-20 {
  545 + width: 20%;
  546 +}
  547 +.fr-container .w-25 {
  548 + width: 25%;
  549 +}
  550 +.fr-container .w-30 {
  551 + width: 30%;
  552 +}
  553 +.fr-container .w-33 {
  554 + width: 33%;
  555 +}
  556 +.fr-container .w-34 {
  557 + width: 34%;
  558 +}
  559 +.fr-container .w-40 {
  560 + width: 40%;
  561 +}
  562 +.fr-container .w-50 {
  563 + width: 50%;
  564 +}
  565 +.fr-container .w-60 {
  566 + width: 60%;
  567 +}
  568 +.fr-container .w-70 {
  569 + width: 70%;
  570 +}
  571 +.fr-container .w-75 {
  572 + width: 75%;
  573 +}
  574 +.fr-container .w-80 {
  575 + width: 80%;
  576 +}
  577 +.fr-container .w-90 {
  578 + width: 90%;
  579 +}
  580 +.fr-container .w-100 {
  581 + width: 100%;
  582 +}
  583 +.fr-container .w-third {
  584 + width: calc(100% / 3);
  585 +}
  586 +.fr-container .w-two-thirds {
  587 + width: calc(100% / 1.5);
  588 +}
  589 +.fr-container .w-auto {
  590 + width: auto;
  591 +}
  592 +.fr-container .tl {
  593 + text-align: left;
  594 +}
  595 +.fr-container .tr {
  596 + text-align: right;
  597 +}
  598 +.fr-container .tc {
  599 + text-align: center;
  600 +}
  601 +.fr-container .tj {
  602 + text-align: justify;
  603 +}
  604 +.fr-container .overflow-visible {
  605 + overflow: visible;
  606 +}
  607 +.fr-container .overflow-hidden {
  608 + overflow: hidden;
  609 +}
  610 +.fr-container .overflow-scroll {
  611 + overflow: scroll;
  612 +}
  613 +.fr-container .overflow-auto {
  614 + overflow: auto;
  615 +}
  616 +.fr-container .overflow-x-visible {
  617 + overflow-x: visible;
  618 +}
  619 +.fr-container .overflow-x-hidden {
  620 + overflow-x: hidden;
  621 +}
  622 +.fr-container .overflow-x-scroll {
  623 + overflow-x: scroll;
  624 +}
  625 +.fr-container .overflow-x-auto {
  626 + overflow-x: auto;
  627 +}
  628 +.fr-container .overflow-y-visible {
  629 + overflow-y: visible;
  630 +}
  631 +.fr-container .overflow-y-hidden {
  632 + overflow-y: hidden;
  633 +}
  634 +.fr-container .overflow-y-scroll {
  635 + overflow-y: scroll;
  636 +}
  637 +.fr-container .overflow-y-auto {
  638 + overflow-y: auto;
  639 +}
  640 +.fr-container .static {
  641 + position: static;
  642 +}
  643 +.fr-container .relative {
  644 + position: relative;
  645 +}
  646 +.fr-container .absolute {
  647 + position: absolute;
  648 +}
  649 +.fr-container .fixed {
  650 + position: fixed;
  651 +}
  652 +.fr-container .o-100 {
  653 + opacity: 1;
  654 +}
  655 +.fr-container .o-90 {
  656 + opacity: 0.9;
  657 +}
  658 +.fr-container .o-80 {
  659 + opacity: 0.8;
  660 +}
  661 +.fr-container .o-70 {
  662 + opacity: 0.7;
  663 +}
  664 +.fr-container .o-60 {
  665 + opacity: 0.6;
  666 +}
  667 +.fr-container .o-50 {
  668 + opacity: 0.5;
  669 +}
  670 +.fr-container .o-40 {
  671 + opacity: 0.4;
  672 +}
  673 +.fr-container .o-30 {
  674 + opacity: 0.3;
  675 +}
  676 +.fr-container .o-20 {
  677 + opacity: 0.2;
  678 +}
  679 +.fr-container .o-10 {
  680 + opacity: 0.1;
  681 +}
  682 +.fr-container .o-05 {
  683 + opacity: 0.05;
  684 +}
  685 +.fr-container .o-025 {
  686 + opacity: 0.025;
  687 +}
  688 +.fr-container .o-0 {
  689 + opacity: 0;
  690 +}
  691 +.fr-container .pa0 {
  692 + padding: 0;
  693 +}
  694 +.fr-container .pa1 {
  695 + padding: 0.25rem;
  696 +}
  697 +.fr-container .pa2 {
  698 + padding: 0.5rem;
  699 +}
  700 +.fr-container .pa3 {
  701 + padding: 1rem;
  702 +}
  703 +.fr-container .pa4 {
  704 + padding: 2rem;
  705 +}
  706 +.fr-container .pa5 {
  707 + padding: 4rem;
  708 +}
  709 +.fr-container .pa6 {
  710 + padding: 8rem;
  711 +}
  712 +.fr-container .pa7 {
  713 + padding: 16rem;
  714 +}
  715 +.fr-container .pl0 {
  716 + padding-left: 0;
  717 +}
  718 +.fr-container .pl1 {
  719 + padding-left: 0.25rem;
  720 +}
  721 +.fr-container .pl2 {
  722 + padding-left: 0.5rem;
  723 +}
  724 +.fr-container .pl3 {
  725 + padding-left: 1rem;
  726 +}
  727 +.fr-container .pl4 {
  728 + padding-left: 2rem;
  729 +}
  730 +.fr-container .pl5 {
  731 + padding-left: 4rem;
  732 +}
  733 +.fr-container .pl6 {
  734 + padding-left: 8rem;
  735 +}
  736 +.fr-container .pl7 {
  737 + padding-left: 16rem;
  738 +}
  739 +.fr-container .pr0 {
  740 + padding-right: 0;
  741 +}
  742 +.fr-container .pr1 {
  743 + padding-right: 0.25rem;
  744 +}
  745 +.fr-container .pr2 {
  746 + padding-right: 0.5rem;
  747 +}
  748 +.fr-container .pr3 {
  749 + padding-right: 1rem;
  750 +}
  751 +.fr-container .pr4 {
  752 + padding-right: 2rem;
  753 +}
  754 +.fr-container .pr5 {
  755 + padding-right: 4rem;
  756 +}
  757 +.fr-container .pr6 {
  758 + padding-right: 8rem;
  759 +}
  760 +.fr-container .pr7 {
  761 + padding-right: 16rem;
  762 +}
  763 +.fr-container .pb0 {
  764 + padding-bottom: 0;
  765 +}
  766 +.fr-container .pb1 {
  767 + padding-bottom: 0.25rem;
  768 +}
  769 +.fr-container .pb2 {
  770 + padding-bottom: 0.5rem;
  771 +}
  772 +.fr-container .pb3 {
  773 + padding-bottom: 1rem;
  774 +}
  775 +.fr-container .pb4 {
  776 + padding-bottom: 2rem;
  777 +}
  778 +.fr-container .pb5 {
  779 + padding-bottom: 4rem;
  780 +}
  781 +.fr-container .pb6 {
  782 + padding-bottom: 8rem;
  783 +}
  784 +.fr-container .pb7 {
  785 + padding-bottom: 16rem;
  786 +}
  787 +.fr-container .pt0 {
  788 + padding-top: 0;
  789 +}
  790 +.fr-container .pt1 {
  791 + padding-top: 0.25rem;
  792 +}
  793 +.fr-container .pt2 {
  794 + padding-top: 0.5rem;
  795 +}
  796 +.fr-container .pt3 {
  797 + padding-top: 1rem;
  798 +}
  799 +.fr-container .pt4 {
  800 + padding-top: 2rem;
  801 +}
  802 +.fr-container .pt5 {
  803 + padding-top: 4rem;
  804 +}
  805 +.fr-container .pt6 {
  806 + padding-top: 8rem;
  807 +}
  808 +.fr-container .pt7 {
  809 + padding-top: 16rem;
  810 +}
  811 +.fr-container .pv0 {
  812 + padding-top: 0;
  813 + padding-bottom: 0;
  814 +}
  815 +.fr-container .pv1 {
  816 + padding-top: 0.25rem;
  817 + padding-bottom: 0.25rem;
  818 +}
  819 +.fr-container .pv2 {
  820 + padding-top: 0.5rem;
  821 + padding-bottom: 0.5rem;
  822 +}
  823 +.fr-container .pv3 {
  824 + padding-top: 1rem;
  825 + padding-bottom: 1rem;
  826 +}
  827 +.fr-container .pv4 {
  828 + padding-top: 2rem;
  829 + padding-bottom: 2rem;
  830 +}
  831 +.fr-container .pv5 {
  832 + padding-top: 4rem;
  833 + padding-bottom: 4rem;
  834 +}
  835 +.fr-container .pv6 {
  836 + padding-top: 8rem;
  837 + padding-bottom: 8rem;
  838 +}
  839 +.fr-container .pv7 {
  840 + padding-top: 16rem;
  841 + padding-bottom: 16rem;
  842 +}
  843 +.fr-container .ph0 {
  844 + padding-left: 0;
  845 + padding-right: 0;
  846 +}
  847 +.fr-container .ph1 {
  848 + padding-left: 0.25rem;
  849 + padding-right: 0.25rem;
  850 +}
  851 +.fr-container .ph2 {
  852 + padding-left: 0.5rem;
  853 + padding-right: 0.5rem;
  854 +}
  855 +.fr-container .ph3 {
  856 + padding-left: 1rem;
  857 + padding-right: 1rem;
  858 +}
  859 +.fr-container .ph4 {
  860 + padding-left: 2rem;
  861 + padding-right: 2rem;
  862 +}
  863 +.fr-container .ph5 {
  864 + padding-left: 4rem;
  865 + padding-right: 4rem;
  866 +}
  867 +.fr-container .ph6 {
  868 + padding-left: 8rem;
  869 + padding-right: 8rem;
  870 +}
  871 +.fr-container .ph7 {
  872 + padding-left: 16rem;
  873 + padding-right: 16rem;
  874 +}
  875 +.fr-container .ma1 {
  876 + margin: 0.25rem;
  877 +}
  878 +.fr-container .ma2 {
  879 + margin: 0.5rem;
  880 +}
  881 +.fr-container .ma3 {
  882 + margin: 1rem;
  883 +}
  884 +.fr-container .ma4 {
  885 + margin: 2rem;
  886 +}
  887 +.fr-container .ma5 {
  888 + margin: 4rem;
  889 +}
  890 +.fr-container .ma6 {
  891 + margin: 8rem;
  892 +}
  893 +.fr-container .ma7 {
  894 + margin: 16rem;
  895 +}
  896 +.fr-container .ma0 {
  897 + margin: 0;
  898 +}
  899 +.fr-container .ml1 {
  900 + margin-left: 0.25rem;
  901 +}
  902 +.fr-container .ml2 {
  903 + margin-left: 0.5rem;
  904 +}
  905 +.fr-container .ml3 {
  906 + margin-left: 1rem;
  907 +}
  908 +.fr-container .ml4 {
  909 + margin-left: 2rem;
  910 +}
  911 +.fr-container .ml5 {
  912 + margin-left: 4rem;
  913 +}
  914 +.fr-container .ml6 {
  915 + margin-left: 8rem;
  916 +}
  917 +.fr-container .ml7 {
  918 + margin-left: 16rem;
  919 +}
  920 +.fr-container .ml0 {
  921 + margin-left: 0;
  922 +}
  923 +.fr-container .mr1 {
  924 + margin-right: 0.25rem;
  925 +}
  926 +.fr-container .mr2 {
  927 + margin-right: 0.5rem;
  928 +}
  929 +.fr-container .mr3 {
  930 + margin-right: 1rem;
  931 +}
  932 +.fr-container .mr4 {
  933 + margin-right: 2rem;
  934 +}
  935 +.fr-container .mr5 {
  936 + margin-right: 4rem;
  937 +}
  938 +.fr-container .mr6 {
  939 + margin-right: 8rem;
  940 +}
  941 +.fr-container .mr7 {
  942 + margin-right: 16rem;
  943 +}
  944 +.fr-container .mr0 {
  945 + margin-right: 0;
  946 +}
  947 +.fr-container .mb1 {
  948 + margin-bottom: 0.25rem;
  949 +}
  950 +.fr-container .mb2 {
  951 + margin-bottom: 0.5rem;
  952 +}
  953 +.fr-container .mb3 {
  954 + margin-bottom: 1rem;
  955 +}
  956 +.fr-container .mb4 {
  957 + margin-bottom: 2rem;
  958 +}
  959 +.fr-container .mb5 {
  960 + margin-bottom: 4rem;
  961 +}
  962 +.fr-container .mb6 {
  963 + margin-bottom: 8rem;
  964 +}
  965 +.fr-container .mb7 {
  966 + margin-bottom: 16rem;
  967 +}
  968 +.fr-container .mb0 {
  969 + margin-bottom: 0;
  970 +}
  971 +.fr-container .mt1 {
  972 + margin-top: 0.25rem;
  973 +}
  974 +.fr-container .mt2 {
  975 + margin-top: 0.5rem;
  976 +}
  977 +.fr-container .mt3 {
  978 + margin-top: 1rem;
  979 +}
  980 +.fr-container .mt4 {
  981 + margin-top: 2rem;
  982 +}
  983 +.fr-container .mt5 {
  984 + margin-top: 4rem;
  985 +}
  986 +.fr-container .mt6 {
  987 + margin-top: 8rem;
  988 +}
  989 +.fr-container .mt7 {
  990 + margin-top: 16rem;
  991 +}
  992 +.fr-container .mt0 {
  993 + margin-top: 0;
  994 +}
  995 +.fr-container .mv1 {
  996 + margin-top: 0.25rem;
  997 + margin-bottom: 0.25rem;
  998 +}
  999 +.fr-container .mv2 {
  1000 + margin-top: 0.5rem;
  1001 + margin-bottom: 0.5rem;
  1002 +}
  1003 +.fr-container .mv3 {
  1004 + margin-top: 1rem;
  1005 + margin-bottom: 1rem;
  1006 +}
  1007 +.fr-container .mv4 {
  1008 + margin-top: 2rem;
  1009 + margin-bottom: 2rem;
  1010 +}
  1011 +.fr-container .mv5 {
  1012 + margin-top: 4rem;
  1013 + margin-bottom: 4rem;
  1014 +}
  1015 +.fr-container .mv6 {
  1016 + margin-top: 8rem;
  1017 + margin-bottom: 8rem;
  1018 +}
  1019 +.fr-container .mv7 {
  1020 + margin-top: 16rem;
  1021 + margin-bottom: 16rem;
  1022 +}
  1023 +.fr-container .mv0 {
  1024 + margin-top: 0;
  1025 + margin-bottom: 0;
  1026 +}
  1027 +.fr-container .mh1 {
  1028 + margin-left: 0.25rem;
  1029 + margin-right: 0.25rem;
  1030 +}
  1031 +.fr-container .mh2 {
  1032 + margin-left: 0.5rem;
  1033 + margin-right: 0.5rem;
  1034 +}
  1035 +.fr-container .mh3 {
  1036 + margin-left: 1rem;
  1037 + margin-right: 1rem;
  1038 +}
  1039 +.fr-container .mh4 {
  1040 + margin-left: 2rem;
  1041 + margin-right: 2rem;
  1042 +}
  1043 +.fr-container .mh5 {
  1044 + margin-left: 4rem;
  1045 + margin-right: 4rem;
  1046 +}
  1047 +.fr-container .mh6 {
  1048 + margin-left: 8rem;
  1049 + margin-right: 8rem;
  1050 +}
  1051 +.fr-container .mh7 {
  1052 + margin-left: 16rem;
  1053 + margin-right: 16rem;
  1054 +}
  1055 +.fr-container .mh0 {
  1056 + margin-left: 0;
  1057 + margin-right: 0;
  1058 +}
  1059 +.fr-container .debug * {
  1060 + outline: 1px solid gold;
  1061 +}
  1062 +.fr-container .debug-white * {
  1063 + outline: 1px solid white;
  1064 +}
  1065 +.fr-container .debug-black * {
  1066 + outline: 1px solid black;
  1067 +}
  1068 +.fr-container .debug-grid {
  1069 + background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAFElEQVR4AWPAC97/9x0eCsAEPgwAVLshdpENIxcAAAAASUVORK5CYII=) repeat top left;
  1070 +}
  1071 +.fr-container .truncate {
  1072 + white-space: nowrap;
  1073 + overflow: hidden;
  1074 + text-overflow: ellipsis;
  1075 +}
  1076 +.fr-container .bg-white {
  1077 + background-color: #fff;
  1078 +}
  1079 +.fr-container .pointer:hover {
  1080 + cursor: pointer;
  1081 +}
  1082 +.fr-container .link {
  1083 + color: #1890ff;
  1084 + font-size: 14px;
  1085 +}
  1086 +.fr-container .link:hover {
  1087 + color: #40a9ff;
  1088 + font-size: 14px;
  1089 +}
... ...
  1 +function _extends() { _extends = Object.assign || 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); }
  2 +
  3 +import React, { forwardRef } from 'react';
  4 +import useForm from './useForm';
  5 +
  6 +var connectForm = function connectForm(Component) {
  7 + return /*#__PURE__*/forwardRef(function (props, ref) {
  8 + var form = useForm();
  9 + return /*#__PURE__*/React.createElement(Component, _extends({
  10 + ref: ref
  11 + }, props, {
  12 + form: form
  13 + }));
  14 + });
  15 +};
  16 +
  17 +export default connectForm;
\ No newline at end of file
... ...
  1 +import "antd/es/button/style";
  2 +import _Button from "antd/es/button";
  3 +import "antd/es/popconfirm/style";
  4 +import _Popconfirm from "antd/es/popconfirm";
  5 +import _CloseOutlined from "@ant-design/icons/es/icons/CloseOutlined";
  6 +import _CopyOutlined from "@ant-design/icons/es/icons/CopyOutlined";
  7 +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined";
  8 +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined";
  9 +
  10 +function _extends() { _extends = Object.assign || 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); }
  11 +
  12 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  13 +
  14 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  15 +
  16 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  17 +
  18 +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  19 +
  20 +import React from 'react';
  21 +import { useTools } from '../../../hooks';
  22 +import Core from '../../index';
  23 +
  24 +var CardList = function CardList(_ref) {
  25 + var _ref$displayList = _ref.displayList,
  26 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  27 + listData = _ref.listData,
  28 + changeList = _ref.changeList,
  29 + schema = _ref.schema,
  30 + deleteItem = _ref.deleteItem,
  31 + copyItem = _ref.copyItem,
  32 + addItem = _ref.addItem,
  33 + moveItemUp = _ref.moveItemUp,
  34 + moveItemDown = _ref.moveItemDown,
  35 + displayType = _ref.displayType,
  36 + getFieldsProps = _ref.getFieldsProps;
  37 + var _schema$props = schema.props,
  38 + props = _schema$props === void 0 ? {} : _schema$props,
  39 + itemProps = schema.itemProps,
  40 + _schema$min = schema.min,
  41 + min = _schema$min === void 0 ? 0 : _schema$min,
  42 + _schema$max = schema.max,
  43 + max = _schema$max === void 0 ? 9999 : _schema$max;
  44 +
  45 + var _useTools = useTools(),
  46 + methods = _useTools.methods;
  47 +
  48 + var addBtnProps = {
  49 + type: 'dashed',
  50 + children: '新增一条'
  51 + };
  52 + var delConfirmProps = {
  53 + title: '确定删除?',
  54 + okText: '确定',
  55 + cancelText: '取消'
  56 + };
  57 +
  58 + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') {
  59 + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps);
  60 + }
  61 +
  62 + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') {
  63 + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps);
  64 + }
  65 +
  66 + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
  67 + className: "fr-card-list"
  68 + }, displayList.map(function (item, idx) {
  69 + var fieldsProps = getFieldsProps(idx);
  70 + fieldsProps.displayType = displayType;
  71 + return /*#__PURE__*/React.createElement("div", {
  72 + className: "fr-card-item ".concat(displayType === 'row' ? 'fr-card-item-row' : ''),
  73 + key: idx
  74 + }, /*#__PURE__*/React.createElement("div", {
  75 + className: "fr-card-index"
  76 + }, idx + 1), /*#__PURE__*/React.createElement(Core, fieldsProps), /*#__PURE__*/React.createElement("div", {
  77 + direction: "horizontal",
  78 + className: "fr-card-toolbar"
  79 + }, !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, {
  80 + style: {
  81 + fontSize: 16,
  82 + marginLeft: 4
  83 + },
  84 + onClick: function onClick() {
  85 + return moveItemUp(idx);
  86 + }
  87 + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, {
  88 + style: {
  89 + fontSize: 16,
  90 + marginLeft: 4
  91 + },
  92 + onClick: function onClick() {
  93 + return moveItemDown(idx);
  94 + }
  95 + })), !props.hideAdd && !props.hideCopy && /*#__PURE__*/React.createElement(_CopyOutlined, {
  96 + style: {
  97 + fontSize: 16,
  98 + marginLeft: 8
  99 + },
  100 + onClick: function onClick() {
  101 + return copyItem(idx);
  102 + }
  103 + }), !props.hideDelete && displayList.length > min && /*#__PURE__*/React.createElement(_Popconfirm, _extends({
  104 + onConfirm: function onConfirm() {
  105 + if (props.onConfirm && typeof props.onConfirm === 'string') {
  106 + var cb = methods[props.onConfirm];
  107 +
  108 + if (typeof cb === 'function') {
  109 + var result = cb(item, idx);
  110 +
  111 + if (!result) {
  112 + return;
  113 + }
  114 + }
  115 + }
  116 +
  117 + deleteItem(idx);
  118 + }
  119 + }, delConfirmProps), /*#__PURE__*/React.createElement(_CloseOutlined, {
  120 + style: {
  121 + fontSize: 16,
  122 + marginLeft: 8
  123 + }
  124 + }))));
  125 + })), /*#__PURE__*/React.createElement("div", {
  126 + style: {
  127 + marginTop: displayList.length > 0 ? 0 : 8
  128 + }
  129 + }, !props.hideAdd && displayList.length < max && /*#__PURE__*/React.createElement(_Button, _extends({
  130 + onClick: addItem
  131 + }, addBtnProps)), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) {
  132 + var callback = item.callback,
  133 + text = item.text,
  134 + html = item.html;
  135 +
  136 + var onClick = function onClick() {
  137 + console.log({
  138 + value: listData,
  139 + onChange: changeList,
  140 + schema: schema
  141 + });
  142 + };
  143 +
  144 + if (typeof window[callback] === 'function') {
  145 + onClick = function onClick() {
  146 + window[callback]({
  147 + value: listData,
  148 + onChange: changeList,
  149 + schema: schema
  150 + });
  151 + };
  152 + }
  153 +
  154 + return /*#__PURE__*/React.createElement(_Button, {
  155 + key: idx.toString(),
  156 + style: {
  157 + marginLeft: 8
  158 + },
  159 + type: "dashed",
  160 + onClick: onClick
  161 + }, /*#__PURE__*/React.createElement("span", {
  162 + dangerouslySetInnerHTML: {
  163 + __html: html || text
  164 + }
  165 + }));
  166 + }) : null));
  167 +};
  168 +
  169 +export default CardList;
\ No newline at end of file
... ...
  1 +import "antd/es/table/style";
  2 +import _Table from "antd/es/table";
  3 +import "antd/es/drawer/style";
  4 +import _Drawer from "antd/es/drawer";
  5 +import "antd/es/button/style";
  6 +import _Button from "antd/es/button";
  7 +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined";
  8 +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined";
  9 +import "antd/es/popconfirm/style";
  10 +import _Popconfirm from "antd/es/popconfirm";
  11 +var _excluded = ["buttons"],
  12 + _excluded2 = ["pagination"];
  13 +
  14 +function _extends() { _extends = Object.assign || 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); }
  15 +
  16 +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
  17 +
  18 +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  19 +
  20 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  21 +
  22 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  23 +
  24 +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
  25 +
  26 +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
  27 +
  28 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  29 +
  30 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  31 +
  32 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  33 +
  34 +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  35 +
  36 +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
  37 +
  38 +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; }
  39 +
  40 +import React, { useRef } from 'react';
  41 +import { useSet, useTools } from '../../../hooks';
  42 +import { getDataPath, getDisplayValue, getKeyFromPath } from '../../../utils';
  43 +import Core from '../../index';
  44 +import ErrorMessage from '../../RenderField/ErrorMessage';
  45 +var FIELD_LENGTH = 170;
  46 +
  47 +var DrawerList = function DrawerList(_ref) {
  48 + var _extends2;
  49 +
  50 + var _ref$displayList = _ref.displayList,
  51 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  52 + dataPath = _ref.dataPath,
  53 + children = _ref.children,
  54 + deleteItem = _ref.deleteItem,
  55 + addItem = _ref.addItem,
  56 + moveItemDown = _ref.moveItemDown,
  57 + moveItemUp = _ref.moveItemUp,
  58 + flatten = _ref.flatten,
  59 + errorFields = _ref.errorFields,
  60 + getFieldsProps = _ref.getFieldsProps,
  61 + schema = _ref.schema,
  62 + changeList = _ref.changeList,
  63 + listData = _ref.listData;
  64 +
  65 + var _useTools = useTools(),
  66 + widgets = _useTools.widgets;
  67 +
  68 + var _schema$props = schema.props,
  69 + props = _schema$props === void 0 ? {} : _schema$props,
  70 + _schema$itemProps = schema.itemProps,
  71 + itemProps = _schema$itemProps === void 0 ? {} : _schema$itemProps;
  72 +
  73 + var buttons = itemProps.buttons,
  74 + columnProps = _objectWithoutProperties(itemProps, _excluded);
  75 +
  76 + var _props$pagination = props.pagination,
  77 + pagination = _props$pagination === void 0 ? {} : _props$pagination,
  78 + rest = _objectWithoutProperties(props, _excluded2);
  79 +
  80 + var actionColumnProps = {
  81 + colHeaderText: '操作',
  82 + editText: '编辑',
  83 + delText: '删除'
  84 + };
  85 + var delConfirmProps = {
  86 + title: '确定删除?',
  87 + okText: '确定',
  88 + cancelText: '取消'
  89 + };
  90 + var addBtnProps = {
  91 + type: 'primary',
  92 + children: '新增一条',
  93 + size: 'small'
  94 + };
  95 +
  96 + if (props.actionColumnProps && _typeof(props.actionColumnProps) === 'object') {
  97 + actionColumnProps = _objectSpread(_objectSpread({}, actionColumnProps), props.actionColumnProps);
  98 + }
  99 +
  100 + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') {
  101 + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps);
  102 + }
  103 +
  104 + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') {
  105 + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps);
  106 + }
  107 +
  108 + var paginationConfig = pagination && _objectSpread({
  109 + size: 'small',
  110 + hideOnSinglePage: true
  111 + }, pagination);
  112 +
  113 + var currentIndex = useRef(-1);
  114 +
  115 + var _useSet = useSet({
  116 + showDrawer: false
  117 + }),
  118 + _useSet2 = _slicedToArray(_useSet, 2),
  119 + state = _useSet2[0],
  120 + setState = _useSet2[1];
  121 +
  122 + var showDrawer = state.showDrawer;
  123 + var dataSource = displayList.map(function (item, index) {
  124 + return _objectSpread(_objectSpread({}, item), {}, {
  125 + $idx: index
  126 + });
  127 + });
  128 + var columns = children.map(function (child) {
  129 + var item = flatten[child];
  130 + var schema = item && item.schema || {};
  131 +
  132 + var _dataIndex = getKeyFromPath(child);
  133 +
  134 + return _objectSpread({
  135 + dataIndex: _dataIndex,
  136 + title: schema.required ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
  137 + className: "fr-label-required"
  138 + }, " *"), /*#__PURE__*/React.createElement("span", null, schema.title)) : schema.title,
  139 + width: FIELD_LENGTH,
  140 + render: function render(value, record) {
  141 + var childPath = getDataPath(child, [record.$idx]);
  142 + var errorObj = errorFields.find(function (item) {
  143 + return item.name == childPath;
  144 + }) || {}; //TODO: 万一error在更深的层,这个办法是find不到的,会展示那一行没有提示。可以整一行加一个红线的方式处理
  145 +
  146 + var Widget = widgets[schema.readOnlyWidget];
  147 + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, Widget ? /*#__PURE__*/React.createElement(Widget, {
  148 + value: value,
  149 + schema: schema
  150 + }) : getDisplayValue(value, schema)), errorObj.error && /*#__PURE__*/React.createElement(ErrorMessage, {
  151 + message: errorObj.error,
  152 + schema: schema
  153 + }));
  154 + }
  155 + }, columnProps);
  156 + });
  157 + columns.push({
  158 + title: actionColumnProps.colHeaderText,
  159 + key: '$action',
  160 + fixed: 'right',
  161 + width: 120,
  162 + render: function render(value, record, idx) {
  163 + var index = value && value.$idx || 0;
  164 + return /*#__PURE__*/React.createElement("div", null, !props.hideEdit && /*#__PURE__*/React.createElement("a", {
  165 + onClick: function onClick() {
  166 + return openDrawer(index);
  167 + }
  168 + }, actionColumnProps.editText), !props.hideDelete && /*#__PURE__*/React.createElement(_Popconfirm, _extends({
  169 + onConfirm: function onConfirm() {
  170 + return deleteItem(index);
  171 + }
  172 + }, delConfirmProps), /*#__PURE__*/React.createElement("a", {
  173 + style: {
  174 + marginLeft: 8
  175 + }
  176 + }, actionColumnProps.delText)), !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, {
  177 + style: {
  178 + color: '#1890ff',
  179 + fontSize: 16,
  180 + marginLeft: 8
  181 + },
  182 + onClick: function onClick() {
  183 + return moveItemUp(index);
  184 + }
  185 + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, {
  186 + style: {
  187 + color: '#1890ff',
  188 + fontSize: 16,
  189 + marginLeft: 8
  190 + },
  191 + onClick: function onClick() {
  192 + return moveItemDown(index);
  193 + }
  194 + })));
  195 + }
  196 + });
  197 + var fieldsProps = getFieldsProps(currentIndex.current);
  198 +
  199 + var openDrawer = function openDrawer(index) {
  200 + currentIndex.current = index;
  201 + setState({
  202 + showDrawer: true
  203 + });
  204 + };
  205 +
  206 + var closeDrawer = function closeDrawer() {
  207 + currentIndex.current = -1;
  208 + setState({
  209 + showDrawer: false
  210 + });
  211 + };
  212 +
  213 + var handleAdd = function handleAdd() {
  214 + var newIndex = addItem();
  215 + openDrawer(newIndex);
  216 + };
  217 +
  218 + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
  219 + className: "w-100 mb2 tr"
  220 + }, !props.hideAdd && /*#__PURE__*/React.createElement(_Button, _extends({}, addBtnProps, {
  221 + onClick: handleAdd
  222 + })), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) {
  223 + var callback = item.callback,
  224 + text = item.text,
  225 + html = item.html;
  226 +
  227 + var onClick = function onClick() {
  228 + console.log({
  229 + value: listData,
  230 + onChange: changeList,
  231 + schema: schema
  232 + });
  233 + };
  234 +
  235 + if (typeof window[callback] === 'function') {
  236 + onClick = function onClick() {
  237 + window[callback]({
  238 + value: listData,
  239 + onChange: changeList,
  240 + schema: schema
  241 + });
  242 + };
  243 + }
  244 +
  245 + return /*#__PURE__*/React.createElement(_Button, {
  246 + key: idx.toString(),
  247 + style: {
  248 + marginLeft: 8
  249 + },
  250 + size: "small",
  251 + onClick: onClick
  252 + }, /*#__PURE__*/React.createElement("span", {
  253 + dangerouslySetInnerHTML: {
  254 + __html: html || text
  255 + }
  256 + }));
  257 + }) : null), /*#__PURE__*/React.createElement(_Drawer, {
  258 + width: "600",
  259 + title: actionColumnProps.colHeaderText,
  260 + placement: "right",
  261 + onClose: closeDrawer,
  262 + visible: showDrawer,
  263 + destroyOnClose: true // 必须要加,currentIndex不是一个state,Core不会重新渲染就跪了
  264 +
  265 + }, /*#__PURE__*/React.createElement("div", {
  266 + className: "fr-container"
  267 + }, /*#__PURE__*/React.createElement(Core, fieldsProps))), /*#__PURE__*/React.createElement(_Table, _extends((_extends2 = {
  268 + size: "small",
  269 + scroll: {
  270 + x: 'max-content'
  271 + },
  272 + columns: columns,
  273 + dataSource: dataSource,
  274 + rowClassName: function rowClassName(record, idx) {
  275 + var index = record && record.$idx;
  276 + var hasError = errorFields.find(function (item) {
  277 + return item.name.indexOf("".concat(dataPath, "[").concat(index, "]")) > -1;
  278 + });
  279 + return hasError ? 'fr-row-error' : '';
  280 + },
  281 + rowKey: "$idx"
  282 + }, _defineProperty(_extends2, "size", "small"), _defineProperty(_extends2, "pagination", paginationConfig), _extends2), rest)));
  283 +};
  284 +
  285 +export default DrawerList;
\ No newline at end of file
... ...
  1 +import _PlusCircleFilled from "@ant-design/icons/es/icons/PlusCircleFilled";
  2 +import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined";
  3 +import _UpOutlined from "@ant-design/icons/es/icons/UpOutlined";
  4 +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined";
  5 +
  6 +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  7 +
  8 +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  9 +
  10 +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  11 +
  12 +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  13 +
  14 +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
  15 +
  16 +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  17 +
  18 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  19 +
  20 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  21 +
  22 +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
  23 +
  24 +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
  25 +
  26 +/* eslint-disable jsx-a11y/anchor-is-valid */
  27 +import React, { useEffect, useMemo, useState } from 'react';
  28 +import Core from '../../index'; // import { Button, Space, Popconfirm } from 'antd';
  29 +// import ArrowDown from '../../../components/ArrowDown';
  30 +// import { Collapse } from 'antd-mobile'
  31 +
  32 +// 数字转汉字
  33 +function convertToChinaNum(num) {
  34 + var arr1 = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
  35 + var arr2 = ['', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千', '万', '十', '百', '千', '亿']; //可继续追加更高位转换值
  36 +
  37 + if (!num || isNaN(num)) {
  38 + return "零";
  39 + }
  40 +
  41 + var english = num.toString().split("");
  42 + var result = "";
  43 +
  44 + for (var i = 0; i < english.length; i++) {
  45 + var des_i = english.length - 1 - i; //倒序排列设值
  46 +
  47 + result = arr2[i] + result;
  48 + var arr1_index = english[des_i];
  49 + result = arr1[arr1_index] + result;
  50 + }
  51 +
  52 + result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十');
  53 + result = result.replace(/零+/g, '零');
  54 + result = result.replace(/零亿/g, '亿').replace(/零万/g, '万');
  55 + result = result.replace(/亿万/g, '亿');
  56 + result = result.replace(/零+$/, '');
  57 + result = result.replace(/^一十/g, '十');
  58 + return result;
  59 +}
  60 +
  61 +var ListForMobile = function ListForMobile(_ref) {
  62 + var _ref$displayList = _ref.displayList,
  63 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  64 + listData = _ref.listData,
  65 + changeList = _ref.changeList,
  66 + schema = _ref.schema,
  67 + deleteItem = _ref.deleteItem,
  68 + copyItem = _ref.copyItem,
  69 + addItem = _ref.addItem,
  70 + moveItemUp = _ref.moveItemUp,
  71 + moveItemDown = _ref.moveItemDown,
  72 + displayType = _ref.displayType,
  73 + getFieldsProps = _ref.getFieldsProps;
  74 + var _schema$props = schema.props,
  75 + props = _schema$props === void 0 ? {} : _schema$props,
  76 + itemProps = schema.itemProps;
  77 +
  78 + var _useState = useState([]),
  79 + _useState2 = _slicedToArray(_useState, 2),
  80 + allKeys = _useState2[0],
  81 + setKeys = _useState2[1]; // let addBtnProps = {
  82 + // type: 'dashed',
  83 + // children: '新增一条list',
  84 + // };
  85 + // if (props.addBtnProps && typeof props.addBtnProps === 'object') {
  86 + // addBtnProps = { ...addBtnProps, ...props.addBtnProps };
  87 + // }
  88 +
  89 +
  90 + useEffect(function () {
  91 + var _allKeys = [];
  92 + displayList.forEach(function (item, idx) {
  93 + if (item._active) {
  94 + _allKeys.push(String(idx));
  95 + }
  96 + });
  97 + setKeys(_allKeys);
  98 + }, [displayList]);
  99 +
  100 + var getTitle = function getTitle(id) {
  101 + return /*#__PURE__*/React.createElement("div", {
  102 + style: {
  103 + display: 'flex',
  104 + justifyContent: "space-between",
  105 + alignItems: 'center'
  106 + }
  107 + }, /*#__PURE__*/React.createElement("span", null, "\u6570\u636E", id + 1), /*#__PURE__*/React.createElement("a", {
  108 + onClick: function onClick(e) {
  109 + e.stopPropagation();
  110 + deleteItem(id);
  111 + },
  112 + style: {
  113 + display: 'inline-block',
  114 + padding: '0 10px'
  115 + }
  116 + }, /*#__PURE__*/React.createElement(_DeleteOutlined, {
  117 + style: {
  118 + fontSize: 16,
  119 + width: 16,
  120 + height: 16
  121 + }
  122 + })));
  123 + };
  124 +
  125 + var handleArrow = function handleArrow(active) {
  126 + if (active) {
  127 + return /*#__PURE__*/React.createElement(_UpOutlined, {
  128 + onClick: function onClick() {}
  129 + });
  130 + } else {
  131 + return /*#__PURE__*/React.createElement(_DownOutlined, null);
  132 + }
  133 + };
  134 +
  135 + return null;
  136 + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
  137 + className: "fr-card-list qx-card-mobile"
  138 + }, /*#__PURE__*/React.createElement(Collapse, {
  139 + activeKey: allKeys
  140 + }, displayList.map(function (item, idx) {
  141 + var fieldsProps = getFieldsProps(idx);
  142 + fieldsProps.displayType = displayType;
  143 + return /*#__PURE__*/React.createElement(Collapse.Panel, {
  144 + key: String(idx),
  145 + title: getTitle(idx),
  146 + arrow: handleArrow,
  147 + onClick: function onClick() {
  148 + var _active = item._active || false;
  149 +
  150 + displayList[idx]._active = !_active;
  151 + changeList(_toConsumableArray(displayList));
  152 + }
  153 + }, /*#__PURE__*/React.createElement("div", {
  154 + className: "fr-card-item qx-card-mobile-item ".concat(displayType === 'row' ? 'fr-card-item-row' : ''),
  155 + key: idx
  156 + }, /*#__PURE__*/React.createElement(Core, fieldsProps)));
  157 + }))), /*#__PURE__*/React.createElement("a", {
  158 + className: 'add-button',
  159 + onClick: function onClick() {
  160 + addItem();
  161 + }
  162 + }, /*#__PURE__*/React.createElement(_PlusCircleFilled, {
  163 + style: {
  164 + marginRight: 2,
  165 + width: 14,
  166 + height: 14
  167 + }
  168 + }), "\u70B9\u51FB\u65B0\u589E\u6570\u636E"));
  169 +};
  170 +
  171 +export default ListForMobile;
\ No newline at end of file
... ...
  1 +import "antd/es/button/style";
  2 +import _Button from "antd/es/button";
  3 +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined";
  4 +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined";
  5 +import _CopyOutlined from "@ant-design/icons/es/icons/CopyOutlined";
  6 +import "antd/es/popconfirm/style";
  7 +import _Popconfirm from "antd/es/popconfirm";
  8 +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined";
  9 +
  10 +function _extends() { _extends = Object.assign || 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); }
  11 +
  12 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  13 +
  14 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  15 +
  16 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  17 +
  18 +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  19 +
  20 +import React from 'react';
  21 +import Core from '../../index';
  22 +
  23 +var SimpleList = function SimpleList(_ref) {
  24 + var schema = _ref.schema,
  25 + _ref$displayList = _ref.displayList,
  26 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  27 + listData = _ref.listData,
  28 + changeList = _ref.changeList,
  29 + deleteItem = _ref.deleteItem,
  30 + addItem = _ref.addItem,
  31 + copyItem = _ref.copyItem,
  32 + moveItemUp = _ref.moveItemUp,
  33 + moveItemDown = _ref.moveItemDown,
  34 + getFieldsProps = _ref.getFieldsProps;
  35 + var _schema$props = schema.props,
  36 + props = _schema$props === void 0 ? {} : _schema$props,
  37 + itemProps = schema.itemProps,
  38 + _schema$min = schema.min,
  39 + min = _schema$min === void 0 ? 0 : _schema$min,
  40 + _schema$max = schema.max,
  41 + max = _schema$max === void 0 ? 99999 : _schema$max;
  42 + var addBtnProps = {
  43 + type: 'dashed',
  44 + children: '新增一条'
  45 + };
  46 + var delConfirmProps = {
  47 + title: '确定删除?',
  48 + okText: '确定',
  49 + cancelText: '取消'
  50 + };
  51 +
  52 + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') {
  53 + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps);
  54 + }
  55 +
  56 + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') {
  57 + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps);
  58 + }
  59 +
  60 + return /*#__PURE__*/React.createElement("div", {
  61 + className: "fr-list-1"
  62 + }, displayList.map(function (item, idx) {
  63 + var fieldsProps = getFieldsProps(idx);
  64 + fieldsProps.displayType = 'inline';
  65 +
  66 + if (props.hideTitle) {
  67 + fieldsProps.hideTitle = true;
  68 + }
  69 +
  70 + return /*#__PURE__*/React.createElement("div", {
  71 + key: idx,
  72 + style: {
  73 + display: 'flex'
  74 + }
  75 + }, /*#__PURE__*/React.createElement(Core, fieldsProps), /*#__PURE__*/React.createElement("div", {
  76 + style: {
  77 + marginTop: 6
  78 + }
  79 + }, !props.hideDelete && displayList.length > min && /*#__PURE__*/React.createElement(_Popconfirm, _extends({
  80 + onConfirm: function onConfirm() {
  81 + return deleteItem(idx);
  82 + }
  83 + }, delConfirmProps), /*#__PURE__*/React.createElement(_DeleteOutlined, {
  84 + style: {
  85 + fontSize: 17,
  86 + marginLeft: 8
  87 + }
  88 + })), !props.hideAdd && !props.hideCopy && /*#__PURE__*/React.createElement(_CopyOutlined, {
  89 + style: {
  90 + fontSize: 15,
  91 + marginLeft: 8
  92 + },
  93 + onClick: function onClick() {
  94 + return copyItem(idx);
  95 + }
  96 + }), !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, {
  97 + style: {
  98 + fontSize: 16,
  99 + marginLeft: 8
  100 + },
  101 + onClick: function onClick() {
  102 + return moveItemUp(idx);
  103 + }
  104 + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, {
  105 + style: {
  106 + fontSize: 16,
  107 + marginLeft: 8
  108 + },
  109 + onClick: function onClick() {
  110 + return moveItemDown(idx);
  111 + }
  112 + }))));
  113 + }), /*#__PURE__*/React.createElement("div", {
  114 + style: {
  115 + marginTop: displayList.length > 0 ? 0 : 8
  116 + }
  117 + }, !props.hideAdd && displayList.length < max && /*#__PURE__*/React.createElement(_Button, _extends({
  118 + onClick: addItem
  119 + }, addBtnProps)), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) {
  120 + var callback = item.callback,
  121 + text = item.text,
  122 + html = item.html;
  123 +
  124 + var onClick = function onClick() {
  125 + console.log({
  126 + value: listData,
  127 + onChange: changeList,
  128 + schema: schema
  129 + });
  130 + };
  131 +
  132 + if (typeof window[callback] === 'function') {
  133 + onClick = function onClick() {
  134 + window[callback]({
  135 + value: listData,
  136 + onChange: changeList,
  137 + schema: schema
  138 + });
  139 + };
  140 + }
  141 +
  142 + return /*#__PURE__*/React.createElement(_Button, {
  143 + key: idx.toString(),
  144 + style: {
  145 + marginLeft: 8
  146 + },
  147 + type: "dashed",
  148 + onClick: onClick
  149 + }, /*#__PURE__*/React.createElement("span", {
  150 + dangerouslySetInnerHTML: {
  151 + __html: html || text
  152 + }
  153 + }));
  154 + }) : null));
  155 +};
  156 +
  157 +export default SimpleList;
\ No newline at end of file
... ...
  1 +import "antd/es/tabs/style";
  2 +import _Tabs from "antd/es/tabs";
  3 +var _excluded = ["tabName", "type", "draggable"];
  4 +
  5 +function _extends() { _extends = Object.assign || 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); }
  6 +
  7 +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
  8 +
  9 +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; }
  10 +
  11 +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
  12 +
  13 +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  14 +
  15 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  16 +
  17 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  18 +
  19 +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
  20 +
  21 +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
  22 +
  23 +/* eslint-disable jsx-a11y/anchor-is-valid */
  24 +import React, { useState, useRef } from 'react';
  25 +import Core from '../../index';
  26 +var TabPane = _Tabs.TabPane;
  27 +var dragType = 'DraggableTabNode';
  28 +
  29 +var DraggableTabNode = function DraggableTabNode(_ref) {
  30 + var index = _ref.index,
  31 + children = _ref.children,
  32 + moveNode = _ref.moveNode;
  33 + var ref = useRef(null);
  34 +
  35 + var _useDrop = useDrop({
  36 + accept: dragType,
  37 + collect: function collect(monitor) {
  38 + var _ref2 = monitor.getItem() || {},
  39 + dragIndex = _ref2.index;
  40 +
  41 + if (dragIndex === index) {
  42 + return {};
  43 + }
  44 +
  45 + return {
  46 + isOver: monitor.isOver(),
  47 + dropClassName: 'dropping'
  48 + };
  49 + },
  50 + drop: function drop(item) {
  51 + moveNode(item.index, index);
  52 + }
  53 + }),
  54 + _useDrop2 = _slicedToArray(_useDrop, 2),
  55 + _useDrop2$ = _useDrop2[0],
  56 + isOver = _useDrop2$.isOver,
  57 + dropClassName = _useDrop2$.dropClassName,
  58 + drop = _useDrop2[1];
  59 +
  60 + var _useDrag = useDrag({
  61 + type: dragType,
  62 + item: {
  63 + index: index
  64 + },
  65 + collect: function collect(monitor) {
  66 + return {
  67 + isDragging: monitor.isDragging()
  68 + };
  69 + }
  70 + }),
  71 + _useDrag2 = _slicedToArray(_useDrag, 2),
  72 + drag = _useDrag2[1];
  73 +
  74 + drop(drag(ref));
  75 + return /*#__PURE__*/React.createElement("div", {
  76 + ref: ref,
  77 + style: {
  78 + marginRight: 2
  79 + },
  80 + className: isOver ? dropClassName : ''
  81 + }, children);
  82 +};
  83 +
  84 +var TabList = function TabList(_ref3) {
  85 + var _ref3$displayList = _ref3.displayList,
  86 + displayList = _ref3$displayList === void 0 ? [] : _ref3$displayList,
  87 + listData = _ref3.listData,
  88 + changeList = _ref3.changeList,
  89 + schema = _ref3.schema,
  90 + deleteItem = _ref3.deleteItem,
  91 + copyItem = _ref3.copyItem,
  92 + addItem = _ref3.addItem,
  93 + moveItemUp = _ref3.moveItemUp,
  94 + moveItemDown = _ref3.moveItemDown,
  95 + displayType = _ref3.displayType,
  96 + getFieldsProps = _ref3.getFieldsProps;
  97 +
  98 + var _useState = useState('0'),
  99 + _useState2 = _slicedToArray(_useState, 2),
  100 + activeKey = _useState2[0],
  101 + setActiveKey = _useState2[1];
  102 +
  103 + var _schema$props = schema.props,
  104 + props = _schema$props === void 0 ? {} : _schema$props,
  105 + itemProps = schema.itemProps;
  106 +
  107 + var tabName = props.tabName,
  108 + type = props.type,
  109 + _props$draggable = props.draggable,
  110 + draggable = _props$draggable === void 0 ? false : _props$draggable,
  111 + restProps = _objectWithoutProperties(props, _excluded);
  112 +
  113 + var onEdit = function onEdit(targetKey, action) {
  114 + if (action === 'add') {
  115 + var currentKey = addItem();
  116 + setActiveKey("".concat(currentKey));
  117 + } else if (action === 'remove') {
  118 + deleteItem(Number(targetKey));
  119 + setActiveKey("".concat(targetKey > 1 ? targetKey - 1 : 0));
  120 + } else {
  121 + return null;
  122 + }
  123 + }; // 如果tabName传数组是可以「自定义」tab页的名字的。表单联动可以使用formrender的watch 配合 setSchemaByPath
  124 +
  125 +
  126 + var getCurrentTabPaneName = function getCurrentTabPaneName(idx) {
  127 + return tabName instanceof Array ? tabName[idx] || idx + 1 : "".concat(tabName || '项目', " ").concat(idx + 1);
  128 + };
  129 +
  130 + return /*#__PURE__*/React.createElement(_Tabs, _extends({
  131 + type: type || 'line',
  132 + onChange: setActiveKey,
  133 + activeKey: activeKey,
  134 + onEdit: onEdit
  135 + }, restProps), displayList.map(function (item, idx) {
  136 + var fieldsProps = getFieldsProps(idx);
  137 + fieldsProps.displayType = displayType;
  138 + return /*#__PURE__*/React.createElement(TabPane, {
  139 + tab: getCurrentTabPaneName(idx),
  140 + key: "".concat(idx)
  141 + }, /*#__PURE__*/React.createElement(Core, fieldsProps));
  142 + }));
  143 +};
  144 +
  145 +export default TabList;
\ No newline at end of file
... ...
  1 +import "antd/es/table/style";
  2 +import _Table from "antd/es/table";
  3 +import "antd/es/button/style";
  4 +import _Button from "antd/es/button";
  5 +import _ArrowDownOutlined from "@ant-design/icons/es/icons/ArrowDownOutlined";
  6 +import _ArrowUpOutlined from "@ant-design/icons/es/icons/ArrowUpOutlined";
  7 +import "antd/es/popconfirm/style";
  8 +import _Popconfirm from "antd/es/popconfirm";
  9 +var _excluded = ["buttons"],
  10 + _excluded2 = ["pagination"];
  11 +
  12 +function _extends() { _extends = Object.assign || 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); }
  13 +
  14 +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  15 +
  16 +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  17 +
  18 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  19 +
  20 +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  21 +
  22 +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  23 +
  24 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  25 +
  26 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  27 +
  28 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  29 +
  30 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  31 +
  32 +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  33 +
  34 +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
  35 +
  36 +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; }
  37 +
  38 +import React from 'react';
  39 +import Core from '../../index';
  40 +var FIELD_LENGTH = 170;
  41 +
  42 +var TableList = function TableList(_ref) {
  43 + var _ref$displayList = _ref.displayList,
  44 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  45 + dataIndex = _ref.dataIndex,
  46 + children = _ref.children,
  47 + deleteItem = _ref.deleteItem,
  48 + copyItem = _ref.copyItem,
  49 + addItem = _ref.addItem,
  50 + moveItemUp = _ref.moveItemUp,
  51 + moveItemDown = _ref.moveItemDown,
  52 + flatten = _ref.flatten,
  53 + schema = _ref.schema,
  54 + listData = _ref.listData,
  55 + changeList = _ref.changeList;
  56 + var _schema$props = schema.props,
  57 + props = _schema$props === void 0 ? {} : _schema$props,
  58 + _schema$itemProps = schema.itemProps,
  59 + itemProps = _schema$itemProps === void 0 ? {} : _schema$itemProps;
  60 +
  61 + var buttons = itemProps.buttons,
  62 + columnProps = _objectWithoutProperties(itemProps, _excluded);
  63 +
  64 + var _props$pagination = props.pagination,
  65 + pagination = _props$pagination === void 0 ? {} : _props$pagination,
  66 + rest = _objectWithoutProperties(props, _excluded2);
  67 +
  68 + var actionColumnProps = {
  69 + colHeaderText: '操作',
  70 + copyText: '复制',
  71 + delText: '删除'
  72 + };
  73 + var delConfirmProps = {
  74 + title: '确定删除?',
  75 + okText: '确定',
  76 + cancelText: '取消'
  77 + };
  78 + var addBtnProps = {
  79 + type: 'primary',
  80 + children: '新增一条',
  81 + size: 'small'
  82 + };
  83 +
  84 + if (props.actionColumnProps && _typeof(props.actionColumnProps) === 'object') {
  85 + actionColumnProps = _objectSpread(_objectSpread({}, actionColumnProps), props.actionColumnProps);
  86 + }
  87 +
  88 + if (props.delConfirmProps && _typeof(props.delConfirmProps) === 'object') {
  89 + delConfirmProps = _objectSpread(_objectSpread({}, delConfirmProps), props.delConfirmProps);
  90 + }
  91 +
  92 + if (props.addBtnProps && _typeof(props.addBtnProps) === 'object') {
  93 + addBtnProps = _objectSpread(_objectSpread({}, addBtnProps), props.addBtnProps);
  94 + }
  95 +
  96 + var paginationConfig = pagination && _objectSpread({
  97 + size: 'small',
  98 + hideOnSinglePage: true
  99 + }, pagination);
  100 +
  101 + var dataSource = displayList.map(function (item, idx) {
  102 + return {
  103 + index: idx
  104 + };
  105 + });
  106 + var columns = children.map(function (child) {
  107 + var item = flatten[child];
  108 + var schema = item && item.schema || {};
  109 + return _objectSpread({
  110 + dataIndex: child,
  111 + title: schema.required ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
  112 + className: "fr-label-required"
  113 + }, " *"), /*#__PURE__*/React.createElement("span", null, schema.title)) : schema.title,
  114 + width: FIELD_LENGTH,
  115 + render: function render(value, record, index) {
  116 + // Check: record.index 似乎是antd自己会给的,不错哦
  117 + var childIndex = [].concat(_toConsumableArray(dataIndex), [record.index]);
  118 + return /*#__PURE__*/React.createElement(Core, {
  119 + hideTitle: true,
  120 + displayType: "inline",
  121 + key: index.toString(),
  122 + id: child,
  123 + dataIndex: childIndex
  124 + });
  125 + }
  126 + }, columnProps);
  127 + });
  128 +
  129 + if (!props.hideDelete || !props.hideAdd || !props.hideCopy || !props.hideMove) {
  130 + columns.push({
  131 + title: actionColumnProps.colHeaderText,
  132 + key: '$action',
  133 + fixed: 'right',
  134 + width: 120,
  135 + render: function render(value, record) {
  136 + var idx = record.index;
  137 + return /*#__PURE__*/React.createElement("div", null, !props.hideAdd && !props.hideCopy && /*#__PURE__*/React.createElement("a", {
  138 + onClick: function onClick() {
  139 + return copyItem(idx);
  140 + }
  141 + }, actionColumnProps.copyText), !props.hideDelete && /*#__PURE__*/React.createElement(_Popconfirm, _extends({
  142 + onConfirm: function onConfirm() {
  143 + return deleteItem(idx);
  144 + }
  145 + }, delConfirmProps), /*#__PURE__*/React.createElement("a", {
  146 + style: {
  147 + marginLeft: 8
  148 + }
  149 + }, actionColumnProps.delText)), !props.hideMove && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_ArrowUpOutlined, {
  150 + style: {
  151 + color: '#1890ff',
  152 + fontSize: 16,
  153 + marginLeft: 8
  154 + },
  155 + onClick: function onClick() {
  156 + return moveItemUp(idx);
  157 + }
  158 + }), /*#__PURE__*/React.createElement(_ArrowDownOutlined, {
  159 + style: {
  160 + color: '#1890ff',
  161 + fontSize: 16,
  162 + marginLeft: 8
  163 + },
  164 + onClick: function onClick() {
  165 + return moveItemDown(idx);
  166 + }
  167 + })));
  168 + }
  169 + });
  170 + }
  171 +
  172 + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
  173 + className: "w-100 mb2 tr"
  174 + }, !props.hideAdd && /*#__PURE__*/React.createElement(_Button, _extends({}, addBtnProps, {
  175 + onClick: addItem
  176 + })), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) {
  177 + var callback = item.callback,
  178 + text = item.text,
  179 + html = item.html;
  180 +
  181 + var onClick = function onClick() {
  182 + console.log({
  183 + value: listData,
  184 + onChange: changeList,
  185 + schema: schema
  186 + });
  187 + };
  188 +
  189 + if (typeof window[callback] === 'function') {
  190 + onClick = function onClick() {
  191 + window[callback]({
  192 + value: listData,
  193 + onChange: changeList,
  194 + schema: schema
  195 + });
  196 + };
  197 + }
  198 +
  199 + return /*#__PURE__*/React.createElement(_Button, {
  200 + key: idx.toString(),
  201 + style: {
  202 + marginLeft: 8
  203 + },
  204 + size: "small",
  205 + onClick: onClick
  206 + }, /*#__PURE__*/React.createElement("span", {
  207 + dangerouslySetInnerHTML: {
  208 + __html: html || text
  209 + }
  210 + }));
  211 + }) : null), /*#__PURE__*/React.createElement(_Table, _extends({
  212 + scroll: {
  213 + x: 'max-content'
  214 + },
  215 + columns: columns,
  216 + dataSource: dataSource,
  217 + rowKey: "index",
  218 + size: "small",
  219 + pagination: paginationConfig
  220 + }, rest)));
  221 +};
  222 +
  223 +export default TableList;
\ No newline at end of file
... ...
  1 +import "antd/es/table/style";
  2 +import _Table from "antd/es/table";
  3 +import "antd/es/alert/style";
  4 +import _Alert from "antd/es/alert";
  5 +import "antd/es/dropdown/style";
  6 +import _Dropdown from "antd/es/dropdown";
  7 +import "antd/es/space/style";
  8 +import _Space from "antd/es/space";
  9 +import _DownOutlined from "@ant-design/icons/es/icons/DownOutlined";
  10 +import "antd/es/input/style";
  11 +import _Input from "antd/es/input";
  12 +import _SearchOutlined from "@ant-design/icons/es/icons/SearchOutlined";
  13 +import "antd/es/message/style";
  14 +import _message from "antd/es/message";
  15 +import _ExclamationCircleOutlined from "@ant-design/icons/es/icons/ExclamationCircleOutlined";
  16 +import "antd/es/tooltip/style";
  17 +import _Tooltip from "antd/es/tooltip";
  18 +import _InfoCircleOutlined from "@ant-design/icons/es/icons/InfoCircleOutlined";
  19 +import "antd/es/menu/style";
  20 +import _Menu from "antd/es/menu";
  21 +import "antd/es/button/style";
  22 +import _Button from "antd/es/button";
  23 +import _AlertOutlined from "@ant-design/icons/es/icons/AlertOutlined";
  24 +import _BarsOutlined from "@ant-design/icons/es/icons/BarsOutlined";
  25 +import _AppstoreOutlined from "@ant-design/icons/es/icons/AppstoreOutlined";
  26 +import _PauseCircleOutlined from "@ant-design/icons/es/icons/PauseCircleOutlined";
  27 +import _PlayCircleOutlined from "@ant-design/icons/es/icons/PlayCircleOutlined";
  28 +import _ExportOutlined from "@ant-design/icons/es/icons/ExportOutlined";
  29 +import _ImportOutlined from "@ant-design/icons/es/icons/ImportOutlined";
  30 +import _CopyOutlined from "@ant-design/icons/es/icons/CopyOutlined";
  31 +import _ToolOutlined from "@ant-design/icons/es/icons/ToolOutlined";
  32 +import _SettingOutlined from "@ant-design/icons/es/icons/SettingOutlined";
  33 +import _EllipsisOutlined from "@ant-design/icons/es/icons/EllipsisOutlined";
  34 +import _FileTextOutlined from "@ant-design/icons/es/icons/FileTextOutlined";
  35 +import _EditOutlined from "@ant-design/icons/es/icons/EditOutlined";
  36 +import _EyeOutlined from "@ant-design/icons/es/icons/EyeOutlined";
  37 +import _DeleteOutlined from "@ant-design/icons/es/icons/DeleteOutlined";
  38 +import _CheckOutlined from "@ant-design/icons/es/icons/CheckOutlined";
  39 +import _CloseOutlined from "@ant-design/icons/es/icons/CloseOutlined";
  40 +import _CloseCircleOutlined from "@ant-design/icons/es/icons/CloseCircleOutlined";
  41 +import _MinusCircleOutlined from "@ant-design/icons/es/icons/MinusCircleOutlined";
  42 +import _PlusCircleOutlined from "@ant-design/icons/es/icons/PlusCircleOutlined";
  43 +import _MinusOutlined from "@ant-design/icons/es/icons/MinusOutlined";
  44 +import _PlusOutlined from "@ant-design/icons/es/icons/PlusOutlined";
  45 +import "antd/es/modal/style";
  46 +import _Modal from "antd/es/modal";
  47 +var _excluded = ["scrollY", "summary", "batchKey", "type", "bar", "line", "searchKey", "rowSelection", "size", "originWidget"];
  48 +
  49 +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); } }
  50 +
  51 +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); }); }; }
  52 +
  53 +function _extends() { _extends = Object.assign || 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); }
  54 +
  55 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  56 +
  57 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  58 +
  59 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  60 +
  61 +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  62 +
  63 +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  64 +
  65 +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  66 +
  67 +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  68 +
  69 +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  70 +
  71 +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
  72 +
  73 +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  74 +
  75 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  76 +
  77 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  78 +
  79 +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
  80 +
  81 +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
  82 +
  83 +function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
  84 +
  85 +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; }
  86 +
  87 +/* eslint-disable jsx-a11y/anchor-is-valid */
  88 +import React, { useEffect, useMemo, useRef, useState } from 'react';
  89 +import Core from '../../index';
  90 +var confirm = _Modal.confirm; // import { isDesignPage } from './utils'
  91 +
  92 +import * as dd from 'dingtalk-jsapi';
  93 +import moment from 'moment'; // import {useVT} from 'virtualizedtableforantd4';
  94 +
  95 +import QxIcon from './icon';
  96 +var BUTTON_ICONS_MAP = {
  97 + PlusOutlined: /*#__PURE__*/React.createElement(_PlusOutlined, null),
  98 + MinusOutlined: /*#__PURE__*/React.createElement(_MinusOutlined, null),
  99 + PlusCircleOutlined: /*#__PURE__*/React.createElement(_PlusCircleOutlined, null),
  100 + MinusCircleOutlined: /*#__PURE__*/React.createElement(_MinusCircleOutlined, null),
  101 + CloseCircleOutlined: /*#__PURE__*/React.createElement(_CloseCircleOutlined, null),
  102 + CloseOutlined: /*#__PURE__*/React.createElement(_CloseOutlined, null),
  103 + CheckOutlined: /*#__PURE__*/React.createElement(_CheckOutlined, null),
  104 + DeleteOutlined: /*#__PURE__*/React.createElement(_DeleteOutlined, null),
  105 + EyeOutlined: /*#__PURE__*/React.createElement(_EyeOutlined, null),
  106 + EditOutlined: /*#__PURE__*/React.createElement(_EditOutlined, null),
  107 + FileTextOutlined: /*#__PURE__*/React.createElement(_FileTextOutlined, null),
  108 + EllipsisOutlined: /*#__PURE__*/React.createElement(_EllipsisOutlined, null),
  109 + SettingOutlined: /*#__PURE__*/React.createElement(_SettingOutlined, null),
  110 + ToolOutlined: /*#__PURE__*/React.createElement(_ToolOutlined, null),
  111 + CopyOutlined: /*#__PURE__*/React.createElement(_CopyOutlined, null),
  112 + ImportOutlined: /*#__PURE__*/React.createElement(_ImportOutlined, null),
  113 + ExportOutlined: /*#__PURE__*/React.createElement(_ExportOutlined, null),
  114 + PlayCircleOutlined: /*#__PURE__*/React.createElement(_PlayCircleOutlined, null),
  115 + PauseCircleOutlined: /*#__PURE__*/React.createElement(_PauseCircleOutlined, null),
  116 + AppstoreOutlined: /*#__PURE__*/React.createElement(_AppstoreOutlined, null),
  117 + BarsOutlined: /*#__PURE__*/React.createElement(_BarsOutlined, null),
  118 + AlertOutlined: /*#__PURE__*/React.createElement(_AlertOutlined, null)
  119 +};
  120 +var FIELD_LENGTH = 170;
  121 +var EXPORT_STATUS = {
  122 + // 执行中
  123 + PROCESSING: 'info',
  124 + // 成功
  125 + SUCCESS: 'success',
  126 + // 失败
  127 + FAIL: 'error'
  128 +};
  129 +
  130 +var VirtualList = function VirtualList(_ref) {
  131 + var _dd$env;
  132 +
  133 + var _ref$displayList = _ref.displayList,
  134 + displayList = _ref$displayList === void 0 ? [] : _ref$displayList,
  135 + dataIndex = _ref.dataIndex,
  136 + children = _ref.children,
  137 + deleteItem = _ref.deleteItem,
  138 + batchDelete = _ref.batchDelete,
  139 + addItem = _ref.addItem,
  140 + moveItemUp = _ref.moveItemUp,
  141 + moveItemDown = _ref.moveItemDown,
  142 + flatten = _ref.flatten,
  143 + schema = _ref.schema,
  144 + listData = _ref.listData,
  145 + changeList = _ref.changeList,
  146 + copyItem = _ref.copyItem,
  147 + dataPath = _ref.dataPath;
  148 + var _schema$props = schema.props,
  149 + props = _schema$props === void 0 ? {} : _schema$props,
  150 + _schema$itemProps = schema.itemProps,
  151 + itemProps = _schema$itemProps === void 0 ? {} : _schema$itemProps,
  152 + fieldName = schema.fieldName,
  153 + _schema$qxProps = schema.qxProps,
  154 + qxProps = _schema$qxProps === void 0 ? {} : _schema$qxProps,
  155 + subformMode = schema.subformMode,
  156 + isReadOnly = schema.isReadOnly,
  157 + subReadOnly = schema.subReadOnly,
  158 + isLoading = schema.isLoading,
  159 + isFullScreen = schema.isFullScreen;
  160 +
  161 + var _props$scrollY = props.scrollY,
  162 + scrollY = _props$scrollY === void 0 ? 300 : _props$scrollY,
  163 + _summary = props.summary,
  164 + batchKey = props.batchKey,
  165 + type = props.type,
  166 + _props$bar = props.bar,
  167 + bar = _props$bar === void 0 ? {} : _props$bar,
  168 + _props$line = props.line,
  169 + line = _props$line === void 0 ? {} : _props$line,
  170 + searchKey = props.searchKey,
  171 + rowSelection = props.rowSelection,
  172 + size = props.size,
  173 + originWidget = props.originWidget,
  174 + rest = _objectWithoutProperties(props, _excluded); // const [vt, set_components] = useVT(() => ({scroll: {y: scrollY}}), []);
  175 +
  176 +
  177 + var _useState = useState(''),
  178 + _useState2 = _slicedToArray(_useState, 2),
  179 + keyWord = _useState2[0],
  180 + setKeyWord = _useState2[1];
  181 +
  182 + var _useState3 = useState([]),
  183 + _useState4 = _slicedToArray(_useState3, 2),
  184 + selectedRowKeys = _useState4[0],
  185 + setSelectedRowKeys = _useState4[1];
  186 +
  187 + var _useState5 = useState(),
  188 + _useState6 = _slicedToArray(_useState5, 2),
  189 + exportProgressData = _useState6[0],
  190 + setProgressData = _useState6[1];
  191 +
  192 + var _useState7 = useState(),
  193 + _useState8 = _slicedToArray(_useState7, 2),
  194 + intervalName = _useState8[0],
  195 + setIntervalName = _useState8[1];
  196 +
  197 + var exportTaskId = useRef('');
  198 +
  199 + var _useState9 = useState(false),
  200 + _useState10 = _slicedToArray(_useState9, 2),
  201 + isSubCanEdit = _useState10[0],
  202 + setSubEdit = _useState10[1];
  203 +
  204 + var _useState11 = useState(''),
  205 + _useState12 = _slicedToArray(_useState11, 2),
  206 + searchName = _useState12[0],
  207 + setSearchName = _useState12[1]; // const [dataSource, setDataSource] = useState([]);
  208 + // const [refresh, setRefresh] = useState('1');
  209 + // const [authDisplayList, setAuthDisplayList] = useState([]) // 有权限展示的数据
  210 +
  211 +
  212 + var _useState13 = useState(false),
  213 + _useState14 = _slicedToArray(_useState13, 2),
  214 + loading = _useState14[0],
  215 + setLoading = _useState14[1];
  216 +
  217 + var mergeFieldsMap = useRef({});
  218 + var isMergeFieldExist = useRef(false); // const [cloneList, setCloneList] = useState([]);
  219 +
  220 + var isInDing = dd && (dd === null || dd === void 0 ? void 0 : (_dd$env = dd.env) === null || _dd$env === void 0 ? void 0 : _dd$env.platform) !== 'notInDingTalk';
  221 +
  222 + if (subReadOnly) {
  223 + Object.keys(flatten).forEach(function (key) {
  224 + if (key.indexOf(schema.$id) === 0 && key.split('.').length > 1) {
  225 + flatten[key].schema.readOnly = true;
  226 + }
  227 + });
  228 + }
  229 +
  230 + useEffect(function () {
  231 + setLoading(!!isLoading);
  232 + }, [isLoading]);
  233 + var padding = useMemo(function () {
  234 + return size === 'default' ? 32 : 16;
  235 + }, [size]);
  236 + var newRowSelection = useMemo(function () {
  237 + var _bar$buttons;
  238 +
  239 + // if (schema.isReadOnly) return null
  240 + var _rowSelection = _.cloneDeep(rowSelection); // 根据是否含有批量操作按钮,渲染表格是否可选择
  241 +
  242 +
  243 + var selectable = false;
  244 +
  245 + if (((_bar$buttons = bar.buttons) === null || _bar$buttons === void 0 ? void 0 : _bar$buttons.findIndex(function (item) {
  246 + return item.code === 'DELETE';
  247 + })) > -1) {
  248 + selectable = true;
  249 + }
  250 +
  251 + if (_rowSelection && selectable) {
  252 + _rowSelection.onChange = function (_selectedRowKeys) {
  253 + setSelectedRowKeys(_selectedRowKeys);
  254 + };
  255 +
  256 + _rowSelection.selectedRowKeys = selectedRowKeys;
  257 + }
  258 +
  259 + return _rowSelection;
  260 + }, [JSON.stringify(bar.buttons), JSON.stringify(rowSelection), JSON.stringify(selectedRowKeys)]); // useEffect(() => {
  261 + // const _cloneList = _.cloneDeep(displayList);
  262 + // _cloneList.forEach((item, index) => {
  263 + // if (typeof item === 'object') {
  264 + // item.orginIdx = index
  265 + // }
  266 + // })
  267 + // setCloneList(_cloneList);
  268 + // }, [displayList])
  269 + //
  270 + // let _displayList = []
  271 + //
  272 + // // 筛选展示的数据
  273 + // if (props.originWidget === 'relSelector') {
  274 + // cloneList.forEach(item => {
  275 + // if (!item.hasOwnProperty('$auth') || item.$auth) {
  276 + // _displayList.push(item)
  277 + // }
  278 + // })
  279 + // } else {
  280 + // _displayList = [...cloneList]
  281 + // }
  282 +
  283 + var cloneList = useMemo(function () {
  284 + //console.log('useMemo cloneList', displayList)
  285 + var _cloneList = _.cloneDeep(displayList);
  286 +
  287 + _cloneList.forEach(function (item, index) {
  288 + if (_typeof(item) === 'object') {
  289 + item.orginIdx = index;
  290 + }
  291 + });
  292 +
  293 + return _cloneList;
  294 + }, [displayList]); // 数据变化时,子表汇总值重新计算,并加到主表的formData中
  295 +
  296 + useEffect(function () {
  297 + var _schema$qxProps2;
  298 +
  299 + console.log('计算汇总');
  300 + if (schema.originWidget !== 'subform') return;
  301 + var subKey = schema.fieldName || schema.propertyKey;
  302 + if (!schema._setValueByPath) return;
  303 + (((_schema$qxProps2 = schema.qxProps) === null || _schema$qxProps2 === void 0 ? void 0 : _schema$qxProps2.summary) || []).forEach(function (item) {
  304 + var fx = item.fx,
  305 + relField = item.relField,
  306 + code = item.code;
  307 + var key = "".concat(subKey, ":").concat(code, ":").concat(fx); // subKey + '.' + code +;
  308 +
  309 + var values = (displayList || []).map(function (it) {
  310 + return it[relField];
  311 + });
  312 +
  313 + if (!values.length) {
  314 + schema._setValueByPath(key, 'EMPTY');
  315 +
  316 + return;
  317 + }
  318 +
  319 + if (['COUNTUNIQUE', 'COUNTA'].includes(fx)) {
  320 + values.forEach(function (_item, index) {
  321 + if (Array.isArray(_item)) {
  322 + values[index] = String(_item);
  323 + }
  324 + });
  325 + }
  326 +
  327 + values = values.filter(function (item) {
  328 + return item !== undefined;
  329 + });
  330 +
  331 + if (fx === 'MAX' || fx === 'MIN') {
  332 + var widget = '';
  333 + var keys = Object.keys(flatten || {});
  334 +
  335 + for (var i = 0; i < keys.length; i++) {
  336 + if (keys[i].indexOf(relField) > -1) {
  337 + var _flatten$keys$i, _flatten$keys$i$schem;
  338 +
  339 + var _widget = (_flatten$keys$i = flatten[keys[i]]) === null || _flatten$keys$i === void 0 ? void 0 : (_flatten$keys$i$schem = _flatten$keys$i.schema) === null || _flatten$keys$i$schem === void 0 ? void 0 : _flatten$keys$i$schem.widget;
  340 +
  341 + if (_widget !== 'qxSummary') {
  342 + widget = _widget;
  343 + break;
  344 + }
  345 + }
  346 + }
  347 +
  348 + if (['qxDatetime', 'createdAt', 'updatedAt'].includes(widget)) {
  349 + var _moment$fx$toLowerCas;
  350 +
  351 + values = values.filter(function (it) {
  352 + return it;
  353 + }); // 计算日期的最大最小时,过滤掉空值
  354 +
  355 + values.forEach(function (it, index) {
  356 + values[index] = moment(it);
  357 + }); // schema.parentFormData[key] = moment[fx.toLowerCase()](values)?._i || 'EMPTY';
  358 +
  359 + schema._setValueByPath(key, ((_moment$fx$toLowerCas = moment[fx.toLowerCase()](values)) === null || _moment$fx$toLowerCas === void 0 ? void 0 : _moment$fx$toLowerCas._i) || 'EMPTY');
  360 + } else if (widget === 'qxTime') {
  361 + var _moment$fx$toLowerCas2, _moment$fx$toLowerCas3;
  362 +
  363 + values = values.filter(function (it) {
  364 + return it;
  365 + }); // 计算时间的最大最小时,过滤掉空值
  366 +
  367 + values.forEach(function (it, index) {
  368 + values[index] = moment('0001-01-01 ' + it); // 随意拼个年月日返回,计算时替换
  369 + }); // schema.parentFormData[key] = (moment[fx.toLowerCase()](values)?._i)?.slice(11) || 'EMPTY';
  370 +
  371 + schema._setValueByPath(key, ((_moment$fx$toLowerCas2 = moment[fx.toLowerCase()](values)) === null || _moment$fx$toLowerCas2 === void 0 ? void 0 : (_moment$fx$toLowerCas3 = _moment$fx$toLowerCas2._i) === null || _moment$fx$toLowerCas3 === void 0 ? void 0 : _moment$fx$toLowerCas3.slice(11)) || 'EMPTY');
  372 + } else {
  373 + // schema.parentFormData[key] = window[fx](values);
  374 + schema._setValueByPath(key, window[fx](values));
  375 + }
  376 + } else {
  377 + // schema.parentFormData['__SUMMARY_' + subKey][key] = window[fx](values);
  378 + var res = window[fx](values);
  379 +
  380 + if (String(res).startsWith('Error')) {
  381 + res = null;
  382 + }
  383 +
  384 + schema._setValueByPath(key, res);
  385 + }
  386 + });
  387 + }, [JSON.stringify(displayList)]);
  388 +
  389 + var _displayList = useMemo(function () {
  390 + //console.log('useMemo _displayList', cloneList)
  391 + var _displayList1 = []; // 筛选展示的数据
  392 +
  393 + if (props.originWidget === 'relSelector') {
  394 + cloneList.forEach(function (item) {
  395 + if (!item.hasOwnProperty('$auth') || item.$auth) {
  396 + _displayList1.push(item);
  397 + }
  398 + });
  399 + } else {
  400 + _displayList1 = _toConsumableArray(cloneList);
  401 + }
  402 +
  403 + return _displayList1;
  404 + }, [cloneList]); // useEffect(() => {
  405 + // 筛选展示的数据
  406 + // if (props.originWidget === 'relSelector') {
  407 + // displayList.forEach((item, index) => {
  408 + // if (typeof item === 'object') {
  409 + // item.orginIdx = index;
  410 + // }
  411 + // if ((!item.hasOwnProperty('$auth') || item.$auth) && item.id) {
  412 + // _displayList.push(item)
  413 + // }
  414 + // })
  415 + // } else {
  416 + // _displayList = [...displayList];
  417 + // _displayList.forEach((item, index) => {
  418 + // if (typeof item === 'object') {
  419 + // item.orginIdx = index;
  420 + // }
  421 + // })
  422 + // }
  423 + // setAuthDisplayList(_displayList)
  424 + // }, [displayList, props.originWidget])
  425 + // const _displayList = useMemo(() => {
  426 + // let arr = []
  427 + // const cloneList = _.cloneDeep(displayList)
  428 + // cloneList.forEach((item, index) => {
  429 + // item.orginIdx = index
  430 + // })
  431 + // if (props.originWidget === 'relSelector') {
  432 + // cloneList.forEach(item => {
  433 + // if (!item.hasOwnProperty('$auth') || item.$auth) {
  434 + // arr.push(item)
  435 + // }
  436 + // })
  437 + // } else {
  438 + // arr = [...cloneList]
  439 + // }
  440 + // return arr
  441 + // }, [displayList])
  442 +
  443 +
  444 + var selectedIds = useMemo(function () {
  445 + var _selectedIds = [];
  446 + cloneList.forEach(function (item) {
  447 + if (item && selectedRowKeys.includes(props.originWidget === 'subform' ? item.orginIdx : item.id)) {
  448 + _selectedIds.push(item.id);
  449 + }
  450 + });
  451 + return _selectedIds;
  452 + }, [selectedRowKeys, cloneList]); // useEffect(() => {
  453 +
  454 + var dataSource = useMemo(function () {
  455 + //console.log('useMemo dataSource',dataSource);
  456 + return (keyWord.length ? _displayList.filter(function (item) {
  457 + var _String;
  458 +
  459 + return ((_String = String(item[searchKey])) === null || _String === void 0 ? void 0 : _String.indexOf(keyWord)) > -1;
  460 + }) : _displayList).map(function (item, idx) {
  461 + return _objectSpread(_objectSpread({}, item), {}, {
  462 + index: item.hasOwnProperty('orginIdx') ? item.orginIdx : idx,
  463 + orginIdx: item.hasOwnProperty('orginIdx') ? item.orginIdx : null
  464 + });
  465 + });
  466 + }, [_displayList, keyWord, searchKey]); // useEffect(() => {
  467 + // setRefresh(refresh + '1')
  468 + // }, [JSON.stringify(dataSource)])
  469 + // setDataSource(_dataSource)
  470 + // }, [keyWord, JSON.stringify(_displayList)])
  471 + // useEffect(() => {
  472 + // const dataSource = (keyWord.length ? _displayList.filter(item => String(item[searchKey])?.indexOf(keyWord) > -1) : _displayList).map((item, idx) => {
  473 + // return {...item, index: item.hasOwnProperty('orginIdx') ? item.orginIdx : idx};
  474 + // })
  475 + // setDataSource(_dataSource)
  476 + // }, [keyWord, authDisplayList])
  477 +
  478 + var handleTotal = function handleTotal(total) {
  479 + if (!total) {
  480 + total = 0;
  481 + }
  482 +
  483 + if (props.originWidget === 'subform' || total === displayList.length) {
  484 + return "\u5171".concat(total, "\u6761\u8BB0\u5F55");
  485 + } else {
  486 + return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "\u5171", displayList.length, "\u6761\u8BB0\u5F55"), /*#__PURE__*/React.createElement("span", {
  487 + style: {
  488 + color: '#999',
  489 + fontSize: '13px'
  490 + }
  491 + }, "(", displayList.length - total, "\u6761\u4E0D\u53EF\u89C1)"));
  492 + }
  493 + };
  494 +
  495 + var pagination = useMemo(function () {
  496 + // console.log('useMemo pagination', dataSource?.length, props.limit)
  497 + return {
  498 + total: dataSource.length,
  499 + position: ['bottomRight'],
  500 + pageSize: props.limit || 10,
  501 + showTotal: function showTotal(total) {
  502 + return handleTotal(total);
  503 + },
  504 + defaultCurrent: 1,
  505 + size: size || 'small' // hideOnSinglePage: true
  506 +
  507 + };
  508 + }, [dataSource === null || dataSource === void 0 ? void 0 : dataSource.length, props.limit]);
  509 + var barButtons = useMemo(function () {
  510 + // console.log('useMemo barButtons', schema.isReadOnly, bar.buttons, originWidget, type, subReadOnly)
  511 + var _barButtons = _.cloneDeep(bar.buttons || []);
  512 +
  513 + if (schema.isReadOnly) {
  514 + // 关联表只读
  515 + // return _barButtons.filter(item => item.code === 'EXPORT')
  516 + return [];
  517 + } else if (subReadOnly) {
  518 + return _barButtons.filter(function (item) {
  519 + return item.code === 'EXPORT';
  520 + });
  521 + } // 关联表的导入,先隐藏 TODO
  522 +
  523 +
  524 + if (props.originWidget === 'relSelector') {
  525 + ['IMPORT'].forEach(function (code) {
  526 + var _index = _barButtons.findIndex(function (item) {
  527 + return item.code === code;
  528 + });
  529 +
  530 + if (_index > -1) {
  531 + _barButtons.splice(_index, 1);
  532 + }
  533 + });
  534 + } // 子表默认可以新增,删掉ADD按钮
  535 +
  536 +
  537 + if (props.originWidget === 'subform') {
  538 + var _index = _barButtons.findIndex(function (item) {
  539 + return item.code === 'ADD';
  540 + });
  541 +
  542 + if (_index > -1) {
  543 + _barButtons.splice(_index, 1);
  544 + }
  545 + }
  546 +
  547 + if (batchKey && type !== 'view') {
  548 + _barButtons.push({
  549 + code: 'BATCH_ADD',
  550 + batch: true,
  551 + action: 'SYS',
  552 + name: '批量新增'
  553 + });
  554 + }
  555 +
  556 + if (props.originWidget === 'relSelector' && subformMode && type === 'edit') {
  557 + _barButtons.unshift({
  558 + code: 'subformEdit',
  559 + icon: 'EditOutlined',
  560 + batch: true,
  561 + action: 'SYS',
  562 + name: '表格编辑'
  563 + });
  564 + } // 选择位置提前
  565 +
  566 +
  567 + ['SELECT'].forEach(function (code) {
  568 + var _index = _barButtons.findIndex(function (item) {
  569 + return item.code === code;
  570 + });
  571 +
  572 + if (_index > -1) {
  573 + var btn = _barButtons.splice(_index, 1);
  574 +
  575 + _barButtons.unshift.apply(_barButtons, _toConsumableArray(btn));
  576 + }
  577 + });
  578 +
  579 + if (type === 'add') {
  580 + var addBtns = ['SELECT', 'IMPORT', 'ADD', 'BATCH_ADD'];
  581 +
  582 + if (props.originWidget === 'subform') {
  583 + addBtns.push('DELETE');
  584 + }
  585 +
  586 + return _barButtons.filter(function (item) {
  587 + return addBtns.includes(item.code);
  588 + });
  589 + } else if (type === 'view') {
  590 + return _barButtons.filter(function (item) {
  591 + return item.code === 'EXPORT';
  592 + });
  593 + }
  594 +
  595 + return _barButtons;
  596 + }, [schema.isReadOnly, bar.buttons, originWidget, type, subReadOnly]);
  597 + var moreButtons = useMemo(function () {
  598 + var _barButtons = _.cloneDeep(barButtons);
  599 +
  600 + return /*#__PURE__*/React.createElement(_Menu, null, _barButtons.slice(3).filter(function (item) {
  601 + return isInDing ? !['EXPORT', 'IMPORT'].includes(item.code) : true;
  602 + }).map(function (item) {
  603 + var name = item.name,
  604 + code = item.code,
  605 + needConfirm = item.needConfirm,
  606 + confirmContent = item.confirmContent,
  607 + icon = item.icon,
  608 + action = item.action;
  609 + return /*#__PURE__*/React.createElement(_Menu.Item, null, /*#__PURE__*/React.createElement(_Button, _extends({
  610 + key: code,
  611 + style: {
  612 + marginLeft: 8,
  613 + border: 'none'
  614 + }
  615 + }, item, {
  616 + icon: icon && bar.style !== 'TEXT' ? String(icon).indexOf('http') > -1 ? /*#__PURE__*/React.createElement("img", {
  617 + src: String(icon),
  618 + style: {
  619 + width: '16px',
  620 + height: '16px',
  621 + marginRight: '4px',
  622 + verticalAlign: 'text-bottom',
  623 + borderRadius: '50%'
  624 + },
  625 + alt: ""
  626 + }) : String(icon).indexOf('-') > -1 ? /*#__PURE__*/React.createElement(QxIcon, {
  627 + type: String(icon)
  628 + }) : BUTTON_ICONS_MAP[icon + ''] : null,
  629 + onClick: function onClick() {
  630 + barBtnClick(code, needConfirm, confirmContent, action, item);
  631 + }
  632 + }), name));
  633 + }));
  634 + }, [barButtons, barBtnClick]);
  635 +
  636 + var handleColumn = function handleColumn(schema, child, index) {
  637 + var _schema$props2;
  638 +
  639 + if (props.editable && props.originWidget === 'subform') {
  640 + if (isSubCanEdit && !['relField', 'qxFormula'].includes(schema.widget)) {
  641 + schema.readOnly = false;
  642 + } else if (!isSubCanEdit) {
  643 + schema.readOnly = true;
  644 + }
  645 + }
  646 +
  647 + if (schema.fieldName === searchKey) {
  648 + setSearchName(schema.title);
  649 + }
  650 +
  651 + var tip = schema.description ? /*#__PURE__*/React.createElement("span", {
  652 + className: 'qx-column_desc'
  653 + }, /*#__PURE__*/React.createElement(_Tooltip, {
  654 + title: schema.description
  655 + }, /*#__PURE__*/React.createElement(_InfoCircleOutlined, null))) : null;
  656 + var column = ((_schema$props2 = schema.props) === null || _schema$props2 === void 0 ? void 0 : _schema$props2.column) || {};
  657 +
  658 + var _dataIndex = child.indexOf(dataPath) === -1 ? dataPath + '[].' + child : child;
  659 +
  660 + var _width = parseInt(column.width);
  661 +
  662 + return {
  663 + dataIndex: _dataIndex,
  664 + width: (column.width && _width ? _width : FIELD_LENGTH) + padding,
  665 + align: props.originWidget === 'subform' ? 'left' : column.align || 'left',
  666 + fixed: column.fixed || props.fixed && typeof index === 'number' && !isMergeFieldExist.current && index < props.fixed,
  667 + title: /*#__PURE__*/React.createElement("div", {
  668 + style: {
  669 + width: (column.width ? parseInt(column.width) : FIELD_LENGTH) + "px"
  670 + }
  671 + }, schema.required ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
  672 + className: "fr-label-required"
  673 + }, " *"), /*#__PURE__*/React.createElement("span", {
  674 + className: "qx-virtual_title__required",
  675 + title: schema.title
  676 + }, schema.title), tip) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
  677 + className: "qx-virtual_title",
  678 + title: schema.title
  679 + }, schema.title), tip)),
  680 + render: function render(value, record, index) {
  681 + // Check: record.index 似乎是antd自己会给的,不错哦
  682 + var childIndex = [].concat(_toConsumableArray(dataIndex), [record.index]);
  683 + return /*#__PURE__*/React.createElement(Core, {
  684 + hideTitle: true,
  685 + displayType: "inline",
  686 + key: index.toString(),
  687 + id: _dataIndex,
  688 + dataIndex: childIndex,
  689 + _item: flatten[_dataIndex] ? null : getItemSchema(_dataIndex) // subReadOnly={subReadOnly}
  690 +
  691 + });
  692 + }
  693 + };
  694 + };
  695 +
  696 + var getItemSchema = function getItemSchema(id) {
  697 + var _item;
  698 +
  699 + Object.keys(mergeFieldsMap.current || {}).forEach(function (key) {
  700 + if (id.indexOf(key) > -1) {
  701 + _item = mergeFieldsMap.current[key];
  702 + }
  703 + });
  704 + return _item;
  705 + };
  706 +
  707 + var handleMergeField = function handleMergeField(schema) {
  708 + // const column = schema.props?.column || {};
  709 + var _props = schema.props;
  710 + return {
  711 + title: _props.title,
  712 + align: _props.align,
  713 + dataIndex: _props.dataIndex,
  714 + children: Object.keys(schema.children).map(function (key) {
  715 + var _schema$children$key, _schema$children$key2;
  716 +
  717 + if (key.indexOf('_merge_field') > -1 && Object.keys((_schema$children$key = schema.children[key]) === null || _schema$children$key === void 0 ? void 0 : _schema$children$key.children).length === 1 && ((_schema$children$key2 = schema.children[key]) === null || _schema$children$key2 === void 0 ? void 0 : _schema$children$key2.children.hidden)) {
  718 + return {
  719 + show: false
  720 + };
  721 + }
  722 +
  723 + var isMergeField = key.indexOf('_merge_field') > -1 && Object.keys(schema.children[key].children || {}).length;
  724 +
  725 + if (isMergeField) {
  726 + return handleMergeField(schema.children[key]);
  727 + } else {
  728 + return handleColumn(schema.children[key], key);
  729 + }
  730 + })
  731 + };
  732 + };
  733 +
  734 + var getMergeMap = function getMergeMap() {
  735 + var _map = {};
  736 + Object.keys(flatten).forEach(function (key) {
  737 + var _schema$schema;
  738 +
  739 + var _schema = flatten[key];
  740 +
  741 + var _children = (_schema === null || _schema === void 0 ? void 0 : (_schema$schema = _schema.schema) === null || _schema$schema === void 0 ? void 0 : _schema$schema.children) || {};
  742 +
  743 + if (key.indexOf('_merge_field') > -1 && Object.keys(_children).length) {
  744 + Object.keys(_children).forEach(function (item) {
  745 + var _schema1 = _children[item];
  746 +
  747 + var _children1 = _schema1.children || {};
  748 +
  749 + if (item.indexOf('_merge_field') > -1 && Object.keys(_children1).length) {
  750 + Object.keys(_children1).forEach(function (it) {
  751 + _map[it] = {
  752 + schema: _children1[it]
  753 + };
  754 + });
  755 + } else {
  756 + _map[item] = {
  757 + schema: _schema1
  758 + };
  759 + }
  760 + });
  761 + }
  762 + });
  763 + return _map;
  764 + };
  765 +
  766 + var columns = useMemo(function () {
  767 + var _line_buttons2;
  768 +
  769 + //console.log('useMemo columns', isSubCanEdit, subReadOnly, JSON.stringify(line.buttons))
  770 + mergeFieldsMap.current = getMergeMap();
  771 + isMergeFieldExist.current = false;
  772 +
  773 + var _line_buttons = _.cloneDeep(line.buttons);
  774 +
  775 + var _columns = (children || []).map(function (child, index) {
  776 + var _schema$children;
  777 +
  778 + var item = flatten[child];
  779 + var schema = item && item.schema || {};
  780 +
  781 + if (child.indexOf('_merge_field') > -1 && (((_schema$children = schema.children) === null || _schema$children === void 0 ? void 0 : _schema$children.hidden) || !Object.keys(schema.children || {}).length)) {
  782 + return {
  783 + show: false
  784 + };
  785 + }
  786 +
  787 + var isMergeField = child.indexOf('_merge_field') > -1 && Object.keys(schema.children || {}).length;
  788 +
  789 + if (isMergeField) {
  790 + isMergeFieldExist.current = true;
  791 + return handleMergeField(schema, index);
  792 + } else {
  793 + return handleColumn(schema, child, index);
  794 + }
  795 + });
  796 +
  797 + _columns = _columns.filter(function (item) {
  798 + return Object.keys(item).length !== 1 && (!item.hidden || item.show);
  799 + });
  800 +
  801 + if (((_line_buttons2 = _line_buttons) === null || _line_buttons2 === void 0 ? void 0 : _line_buttons2.length) || Array.isArray(itemProps.buttons)) {
  802 + var top = line.top,
  803 + _line$style = line.style,
  804 + style = _line$style === void 0 ? 'ICON' : _line$style,
  805 + fixed = line.fixed;
  806 +
  807 + if (type === 'add') {
  808 + if (props.originWidget === 'subform') {
  809 + _line_buttons = _line_buttons.filter(function (item) {
  810 + return item.code === 'DELETE';
  811 + });
  812 + }
  813 +
  814 + console.log('关联记录放开所有行按钮关联XQ230328006'); // 关联记录放开所有行按钮关联XQ230328006
  815 + // else if (props.originWidget === 'relSelector') {
  816 + // // jbl ERP需求,新增时放开编辑按钮
  817 + // _line_buttons = _line_buttons.filter(item => ['REMOVE', 'EDIT'].includes(item.code))
  818 + // }
  819 + } else if ((type === 'view' || isReadOnly) && originWidget === 'relSelector') {
  820 + _line_buttons = _line_buttons.filter(function (item) {
  821 + return item.code === 'VIEW';
  822 + });
  823 + }
  824 +
  825 + var len = (_line_buttons || []).length;
  826 + var action = subReadOnly || isReadOnly && originWidget === 'subform' ? {} : {
  827 + title: '操作',
  828 + key: '$action',
  829 + fixed: fixed ? top ? 'left' : 'right' : props.originWidget === 'subform' ? 'right' : false,
  830 + align: 'center',
  831 + // width: ((buttons || []).length + (props.removeable ? 1 : 0)) * (style === 'ICON' ? 32 : style === 'TEXT' ? 36 : 57) + 16,
  832 + render: function render(value, record, idx) {
  833 + return /*#__PURE__*/React.createElement(React.Fragment, null, Array.isArray(itemProps.buttons) ? itemProps.buttons.map(function (item, idx) {
  834 + var callback = item.callback,
  835 + text = item.text,
  836 + html = item.html;
  837 +
  838 + var onClick = function onClick() {};
  839 +
  840 + if (typeof window[callback] === 'function') {
  841 + onClick = function onClick() {
  842 + window[callback]({
  843 + value: listData,
  844 + onChange: changeList,
  845 + schema: schema
  846 + });
  847 + };
  848 + }
  849 +
  850 + return /*#__PURE__*/React.createElement("a", {
  851 + key: idx.toString(),
  852 + style: {
  853 + marginLeft: 8
  854 + },
  855 + onClick: onClick
  856 + }, /*#__PURE__*/React.createElement("span", {
  857 + dangerouslySetInnerHTML: {
  858 + __html: html || text
  859 + }
  860 + }));
  861 + }) : null, Array.isArray(_line_buttons) ? _line_buttons.map(function (item) {
  862 + var name = item.name,
  863 + code = item.code,
  864 + needConfirm = item.needConfirm,
  865 + confirmContent = item.confirmContent,
  866 + icon = item.icon;
  867 + var display = handleState(record, code, props.originWidget); // if (display === '') {
  868 + // btnMap[code] = ''
  869 + // }
  870 +
  871 + return /*#__PURE__*/React.createElement(_Tooltip, {
  872 + title: name
  873 + }, /*#__PURE__*/React.createElement(_Button, _extends({
  874 + key: code,
  875 + style: {
  876 + marginLeft: 8,
  877 + display: display
  878 + }
  879 + }, item, {
  880 + icon: icon && style !== 'TEXT' ? String(icon).indexOf('http') > -1 ? /*#__PURE__*/React.createElement("img", {
  881 + src: String(icon),
  882 + style: {
  883 + width: '16px',
  884 + height: '16px',
  885 + marginRight: '4px',
  886 + verticalAlign: 'text-bottom',
  887 + borderRadius: '50%'
  888 + },
  889 + alt: ""
  890 + }) : String(icon).indexOf('-') > -1 ? /*#__PURE__*/React.createElement(QxIcon, {
  891 + type: String(icon)
  892 + }) : BUTTON_ICONS_MAP[icon + ''] : null,
  893 + type: 'link',
  894 + size: 'small' // disabled={props.originWidget === 'subform' ? false : handleAuth(record, code)}
  895 + ,
  896 + onClick: function onClick() {
  897 + // 已有数据进行操作时才二次提示
  898 + if (needConfirm && confirmContent && (props.originWidget === 'relSelector' ? record.hasOwnProperty('$auth') : record.hasOwnProperty('id'))) {
  899 + confirm({
  900 + title: confirmContent,
  901 + icon: /*#__PURE__*/React.createElement(_ExclamationCircleOutlined, null),
  902 + okText: '确认',
  903 + okType: 'danger',
  904 + cancelText: '取消',
  905 + onOk: function onOk() {
  906 + if (code === 'DELETE' && props.originWidget === 'subform') {
  907 + deleteItem(idx);
  908 + } else if (code === 'REMOVE') {
  909 + deleteItem(record.orginIdx);
  910 + props.handleLineBtnClick(code, record, schema.$id);
  911 + } else if (code === 'COPY') {
  912 + copyItem(record.orginIdx);
  913 + } else if (item.action === 'CUSTOM') {
  914 + props.handleCustom(item, record, schema.$id);
  915 + } else {
  916 + props.handleLineBtnClick(code, record, schema.$id, line.action);
  917 + }
  918 + },
  919 + onCancel: function onCancel() {}
  920 + });
  921 + } else {
  922 + if (code === 'DELETE' && props.originWidget === 'subform') {
  923 + deleteItem(idx);
  924 + } else if (code === 'REMOVE') {
  925 + deleteItem(record.orginIdx);
  926 + props.handleLineBtnClick(code, record, schema.$id);
  927 + } else if (code === 'COPY') {
  928 + copyItem(record.orginIdx);
  929 + } else if (item.action === 'CUSTOM') {
  930 + props.handleCustom(item, record, schema.$id);
  931 + } else {
  932 + props.handleLineBtnClick(code, record, schema.$id, line.action, schema);
  933 + }
  934 + }
  935 + }
  936 + }), style !== 'ICON' || !icon ? name : null)); // }
  937 + }) : null);
  938 + }
  939 + };
  940 + var actionLength = 0;
  941 +
  942 + _line_buttons.forEach(function (item) {
  943 + if (props.originWidget === 'subform' || style === 'ICON' && item.icon) {
  944 + actionLength += 32;
  945 + } else if (style !== 'ICON' || style === 'ICON' && !item.icon) {
  946 + var div = document.createElement('div');
  947 + div.style.position = 'absolute';
  948 + div.style.visibility = 'hidden';
  949 + div.style.fontSize = '14px';
  950 + window.document.body.appendChild(div);
  951 + div.innerHTML = item.name;
  952 + actionLength += div.clientWidth + (style !== 'TEXT' && item.icon ? 32 : 0);
  953 + div.remove();
  954 + }
  955 + });
  956 +
  957 + action.width = actionLength + padding * 2 - 8;
  958 +
  959 + if ((_columns || []).findIndex(function (item) {
  960 + return item.key === '$action';
  961 + }) === -1 && len > 0 && action.title) {
  962 + if (top) {
  963 + _columns.unshift(action);
  964 + } else {
  965 + _columns.push(action);
  966 + }
  967 + }
  968 + }
  969 +
  970 + return _columns;
  971 + }, [isSubCanEdit, subReadOnly, JSON.stringify(line.buttons), deleteItem]);
  972 +
  973 + var handleAuth = function handleAuth(record, code) {
  974 + switch (code) {
  975 + case 'VIEW':
  976 + return !record.VIEW_flag_;
  977 +
  978 + case 'DELETE':
  979 + return !record.DELETE_flag_;
  980 +
  981 + case 'EDIT':
  982 + return !record.EDIT_flag_;
  983 + }
  984 + };
  985 +
  986 + var handleState = function handleState(record, code, originWidget) {
  987 + if (originWidget === 'subform') {
  988 + if (code === 'COPY' && !record.id) {
  989 + return 'none';
  990 + }
  991 +
  992 + return '';
  993 + } else {
  994 + switch (code) {
  995 + case 'VIEW':
  996 + return record.VIEW_flag_ === true ? '' : 'none';
  997 +
  998 + case 'DELETE':
  999 + return record.DELETE_flag_ === true ? '' : 'none';
  1000 +
  1001 + case 'EDIT':
  1002 + return record.EDIT_flag_ === true ? '' : 'none';
  1003 +
  1004 + case 'REMOVE':
  1005 + return '';
  1006 +
  1007 + default:
  1008 + return record[code + '_flag_'] ? '' : 'none';
  1009 + }
  1010 + }
  1011 + };
  1012 +
  1013 + var handleExport = /*#__PURE__*/function () {
  1014 + var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
  1015 + var queryParams, currentAppCode, currentFunCode, appCode, funCode, fieldName, result;
  1016 + return regeneratorRuntime.wrap(function _callee$(_context) {
  1017 + while (1) {
  1018 + switch (_context.prev = _context.next) {
  1019 + case 0:
  1020 + setProgressData({
  1021 + "percent": 0,
  1022 + "status": "PROCESSING"
  1023 + });
  1024 + queryParams = _defineProperty({
  1025 + dataId: props.dataId
  1026 + }, searchKey, keyWord);
  1027 + currentAppCode = qxProps.currentAppCode, currentFunCode = qxProps.currentFunCode, appCode = qxProps.appCode, funCode = qxProps.funCode, fieldName = qxProps.fieldName;
  1028 + _context.next = 5;
  1029 + return props.exportChild(props.originWidget === 'subform' ? appCode : currentAppCode, props.originWidget === 'subform' ? funCode : currentFunCode, fieldName, queryParams);
  1030 +
  1031 + case 5:
  1032 + result = _context.sent;
  1033 + exportTaskId.current = result.taskId || '';
  1034 +
  1035 + if (result.downloadUrl) {
  1036 + setTimeout(function () {
  1037 + exportData(result.taskId);
  1038 + }, 5000);
  1039 + }
  1040 +
  1041 + case 8:
  1042 + case "end":
  1043 + return _context.stop();
  1044 + }
  1045 + }
  1046 + }, _callee);
  1047 + }));
  1048 +
  1049 + return function handleExport() {
  1050 + return _ref2.apply(this, arguments);
  1051 + };
  1052 + }();
  1053 +
  1054 + var exportData = function exportData(taskId) {
  1055 + // const {appCode, funCode, viewCode} = qxProps
  1056 + // taskType: UPLOAD || EXPORT
  1057 + if (!taskId && !exportTaskId.current) return;
  1058 + props.childExportProgress(taskId || exportTaskId.current).then(function (res) {
  1059 + setProgressData(res || null);
  1060 + });
  1061 + };
  1062 +
  1063 + useEffect(function () {
  1064 + if (exportProgressData) {
  1065 + if (exportProgressData.status === 'PROCESSING' && !intervalName) {
  1066 + setIntervalName(setInterval(function () {
  1067 + return exportData('');
  1068 + }, 1000 * 10));
  1069 + return;
  1070 + }
  1071 +
  1072 + if (exportProgressData.status !== 'PROCESSING' && intervalName) {
  1073 + clearInterval(intervalName);
  1074 + return;
  1075 + }
  1076 + }
  1077 +
  1078 + return function () {
  1079 + if (intervalName) {
  1080 + setTimeout(function () {
  1081 + clearInterval(intervalName);
  1082 + }, 1000 * 60 * 10);
  1083 + }
  1084 + };
  1085 + }, [exportProgressData]);
  1086 +
  1087 + var handleCloseExport = function handleCloseExport(taskId) {
  1088 + var appCode = qxProps.appCode,
  1089 + funCode = qxProps.funCode,
  1090 + viewCode = qxProps.viewCode;
  1091 + props.closeExport(appCode, funCode, viewCode, {
  1092 + taskId: taskId
  1093 + }).then(function (res) {
  1094 + setProgressData(null);
  1095 +
  1096 + if (intervalName) {
  1097 + clearInterval(intervalName);
  1098 + }
  1099 + });
  1100 + };
  1101 +
  1102 + var getExportMessage = function getExportMessage() {
  1103 + if (exportProgressData.status === 'SUCCESS') {
  1104 + return /*#__PURE__*/React.createElement("div", null, "\u5BFC\u51FA\u6210\u529F\uFF0C\u70B9\u51FB", /*#__PURE__*/React.createElement(_Button, {
  1105 + onClick: function onClick() {
  1106 + return handleDownload(exportProgressData.downloadUrl, '导出文件.xlsx', props.REQUEST);
  1107 + },
  1108 + type: 'link'
  1109 + }, "\u4E0B\u8F7D\u6587\u4EF6"), /*#__PURE__*/React.createElement(_Button, {
  1110 + style: {
  1111 + float: "right"
  1112 + },
  1113 + onClick: function onClick() {
  1114 + return handleCloseExport(exportProgressData.taskId);
  1115 + },
  1116 + type: 'link'
  1117 + }, "\u3010\u5173\u95ED\u63D0\u9192\u3011"));
  1118 + }
  1119 +
  1120 + return /*#__PURE__*/React.createElement("div", null, "\u5BFC\u51FA\u8FDB\u884C\u4E2D\uFF0C\u8BF7\u7A0D\u540E......", /*#__PURE__*/React.createElement(_Button, {
  1121 + onClick: function onClick() {
  1122 + return exportData('');
  1123 + },
  1124 + type: 'link'
  1125 + }, "\u5237\u65B0"), /*#__PURE__*/React.createElement(_Button, {
  1126 + style: {
  1127 + float: "right"
  1128 + },
  1129 + onClick: function onClick() {
  1130 + return handleCloseExport(exportProgressData.taskId);
  1131 + },
  1132 + type: 'link'
  1133 + }, "\u3010\u5173\u95ED\u63D0\u9192\u3011"));
  1134 + };
  1135 +
  1136 + var cancelSubEdit = function cancelSubEdit() {
  1137 + setSubEdit(false);
  1138 + };
  1139 +
  1140 + var submitSubEdit = function submitSubEdit() {
  1141 + setSubEdit(false);
  1142 + };
  1143 +
  1144 + var barBtnClick = function barBtnClick(code, needConfirm, confirmContent, action, item) {
  1145 + setSelectedRowKeys([]);
  1146 +
  1147 + if (needConfirm && confirmContent) {
  1148 + if (!selectedRowKeys.length) {
  1149 + return _message.warning('请选择数据');
  1150 + }
  1151 +
  1152 + confirm({
  1153 + title: confirmContent,
  1154 + icon: /*#__PURE__*/React.createElement(_ExclamationCircleOutlined, null),
  1155 + okText: '确认',
  1156 + okType: 'danger',
  1157 + cancelText: '取消',
  1158 + onOk: function onOk() {
  1159 + if (code === 'DELETE') {
  1160 + if (props.originWidget === 'subform') {
  1161 + batchDelete(selectedRowKeys);
  1162 + setSelectedRowKeys([]);
  1163 + } else {
  1164 + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds);
  1165 + }
  1166 + } else if (code === 'EXPORT') {
  1167 + handleExport();
  1168 + } else if (code === 'SELECT') {
  1169 + props.openRelSelect(schema.$id);
  1170 + } else if (code === 'ADD') {
  1171 + props.handleRelAdd(schema.$id);
  1172 + } else if (code === 'subformEdit') {
  1173 + props.handleBatchEdit(fieldName, schema.$id, selectedIds);
  1174 + } else if (action === 'CUSTOM') {
  1175 + props.handleCustom(item, selectedIds, schema.$id);
  1176 + } else {
  1177 + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds);
  1178 + }
  1179 + },
  1180 + onCancel: function onCancel() {}
  1181 + });
  1182 + } else {
  1183 + if (code === 'DELETE') {
  1184 + if (props.originWidget === 'subform') {
  1185 + batchDelete(selectedRowKeys);
  1186 + setSelectedRowKeys([]);
  1187 + } else {
  1188 + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds);
  1189 + }
  1190 + } else if (code === 'EXPORT') {
  1191 + handleExport();
  1192 + } else if (code === 'SELECT') {
  1193 + props.openRelSelect(schema.$id);
  1194 + } else if (code === 'ADD') {
  1195 + props.handleRelAdd(schema.$id);
  1196 + } else if (code === 'subformEdit') {
  1197 + props.handleBatchEdit(fieldName, schema.$id, selectedIds);
  1198 + } else if (action === 'CUSTOM') {
  1199 + props.handleCustom(item, selectedIds, schema.$id);
  1200 + } else {
  1201 + props.handleBarBtnClick(code, fieldName, batchKey, selectedRowKeys, schema.$id, selectedIds);
  1202 + }
  1203 + }
  1204 + };
  1205 +
  1206 + return /*#__PURE__*/React.createElement("div", null, props.editable ? isSubCanEdit ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Button, {
  1207 + type: 'text',
  1208 + size: "small",
  1209 + icon: /*#__PURE__*/React.createElement(_CheckOutlined, null),
  1210 + onClick: submitSubEdit,
  1211 + style: {
  1212 + marginLeft: '5px'
  1213 + }
  1214 + }), /*#__PURE__*/React.createElement(_Button, {
  1215 + type: 'text',
  1216 + size: "small",
  1217 + icon: /*#__PURE__*/React.createElement(_CloseOutlined, null),
  1218 + onClick: cancelSubEdit,
  1219 + style: {
  1220 + marginLeft: '5px'
  1221 + }
  1222 + })) : /*#__PURE__*/React.createElement(_Button, {
  1223 + type: 'text',
  1224 + size: "small",
  1225 + icon: /*#__PURE__*/React.createElement(_EditOutlined, null),
  1226 + onClick: function onClick() {
  1227 + return setSubEdit(true);
  1228 + },
  1229 + style: {
  1230 + marginLeft: '5px'
  1231 + }
  1232 + }) : null, /*#__PURE__*/React.createElement("div", {
  1233 + className: "qx-virtual-searchLine ".concat(searchKey ? '' : 'rowReverse')
  1234 + }, searchKey ? /*#__PURE__*/React.createElement(_Input, {
  1235 + style: {
  1236 + width: '230px'
  1237 + },
  1238 + allowClear: true,
  1239 + size: 'small',
  1240 + placeholder: searchName ? "\u8BF7\u6839\u636E".concat(searchName, "\u5B57\u6BB5\u8FDB\u884C\u641C\u7D22") : "请输入搜索条件",
  1241 + prefix: /*#__PURE__*/React.createElement(_SearchOutlined, {
  1242 + style: {
  1243 + color: '#666'
  1244 + }
  1245 + }),
  1246 + onChange: function onChange(e) {
  1247 + var _e$target;
  1248 +
  1249 + setKeyWord(((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.value) || '');
  1250 + }
  1251 + }) : /*#__PURE__*/React.createElement(React.Fragment, null), /*#__PURE__*/React.createElement("div", null, (barButtons.length > 4 ? barButtons.slice(0, 3) : barButtons.slice(0, 4)).filter(function (item) {
  1252 + return isInDing ? !['EXPORT', 'IMPORT'].includes(item.code) : true;
  1253 + }).map(function (item) {
  1254 + var name = item.name,
  1255 + code = item.code,
  1256 + needConfirm = item.needConfirm,
  1257 + confirmContent = item.confirmContent,
  1258 + icon = item.icon,
  1259 + action = item.action;
  1260 + return /*#__PURE__*/React.createElement(_Button, _extends({
  1261 + key: code,
  1262 + style: {
  1263 + marginLeft: 8
  1264 + }
  1265 + }, item, {
  1266 + icon: icon && bar.style !== 'TEXT' ? String(icon).indexOf('http') > -1 ? /*#__PURE__*/React.createElement("img", {
  1267 + src: String(icon),
  1268 + style: {
  1269 + width: '16px',
  1270 + height: '16px',
  1271 + marginRight: '4px',
  1272 + verticalAlign: 'text-bottom',
  1273 + borderRadius: '50%'
  1274 + },
  1275 + alt: ""
  1276 + }) : String(icon).indexOf('-') > -1 ? /*#__PURE__*/React.createElement(QxIcon, {
  1277 + type: String(icon)
  1278 + }) : BUTTON_ICONS_MAP[icon + ''] : null,
  1279 + onClick: function onClick() {
  1280 + barBtnClick(code, needConfirm, confirmContent, action, item);
  1281 + }
  1282 + }), name); // }
  1283 + }), barButtons.slice(4).length ? /*#__PURE__*/React.createElement(_Dropdown, {
  1284 + overlay: moreButtons
  1285 + }, /*#__PURE__*/React.createElement(_Button, {
  1286 + style: {
  1287 + marginLeft: 8
  1288 + }
  1289 + }, /*#__PURE__*/React.createElement(_Space, null, "\u66F4\u591A\u64CD\u4F5C", /*#__PURE__*/React.createElement(_DownOutlined, null)))) : null), Array.isArray(props.buttons) ? props.buttons.map(function (item, idx) {
  1290 + var callback = item.callback,
  1291 + text = item.text,
  1292 + html = item.html;
  1293 +
  1294 + var onClick = function onClick() {};
  1295 +
  1296 + if (typeof window[callback] === 'function') {
  1297 + onClick = function onClick() {
  1298 + window[callback]({
  1299 + value: listData,
  1300 + onChange: changeList,
  1301 + schema: schema
  1302 + });
  1303 + };
  1304 + } else {
  1305 + if (typeof callback === 'function') {
  1306 + callback({
  1307 + value: listData,
  1308 + onChange: changeList,
  1309 + schema: schema
  1310 + });
  1311 + }
  1312 + }
  1313 +
  1314 + return /*#__PURE__*/React.createElement(_Button, {
  1315 + key: idx.toString(),
  1316 + style: {
  1317 + marginLeft: 8
  1318 + },
  1319 + size: "small",
  1320 + onClick: onClick
  1321 + }, /*#__PURE__*/React.createElement("span", {
  1322 + dangerouslySetInnerHTML: {
  1323 + __html: html || text
  1324 + }
  1325 + }));
  1326 + }) : null), exportProgressData ? /*#__PURE__*/React.createElement(_Alert, {
  1327 + style: {
  1328 + marginBottom: '12px'
  1329 + },
  1330 + message: getExportMessage(),
  1331 + type: EXPORT_STATUS[exportProgressData.status] || 'info',
  1332 + showIcon: true,
  1333 + onClose: function onClose() {
  1334 + handleCloseExport(exportProgressData.taskId);
  1335 + }
  1336 + }) : null, /*#__PURE__*/React.createElement(_Table, _extends({
  1337 + // key={props.originWidget === 'relSelector' ? refresh : ''}
  1338 + id: 'qxVirtualList',
  1339 + className: 'qx-virtualList',
  1340 + rowKey: props.originWidget === 'relSelector' ? 'id' : 'orginIdx',
  1341 + scroll: _objectSpread({
  1342 + x: '100%'
  1343 + }, !isFullScreen && {
  1344 + y: scrollY
  1345 + }) // components={vt}
  1346 + ,
  1347 + size: size || 'small'
  1348 + }, props.originWidget === 'relSelector' ? {
  1349 + loading: loading
  1350 + } : {}, {
  1351 + columns: columns,
  1352 + dataSource: dataSource,
  1353 + pagination: pagination // style={{marginBottom: 25}}
  1354 + ,
  1355 + rowSelection: newRowSelection,
  1356 + summary: function summary() {
  1357 + if (!_summary || Array.isArray(_summary) && !_summary.length) {
  1358 + return null;
  1359 + }
  1360 +
  1361 + return _summary(listData);
  1362 + }
  1363 + }, rest)), !props.hideAdd && props.originWidget === 'subform' && !subReadOnly && /*#__PURE__*/React.createElement(_Button, {
  1364 + type: "link",
  1365 + icon: /*#__PURE__*/React.createElement(_PlusOutlined, null),
  1366 + onClick: function onClick() {
  1367 + addItem();
  1368 + }
  1369 + }, "\u65B0\u589E"));
  1370 +};
  1371 +/**
  1372 + * 文件下载。依赖HTML页面
  1373 + *
  1374 + * @param url 下载URL
  1375 + * @param name 指定的文件名(包括扩展名)
  1376 + * @param request
  1377 + */
  1378 +
  1379 +
  1380 +function handleDownload(_x, _x2, _x3) {
  1381 + return _handleDownload.apply(this, arguments);
  1382 +}
  1383 +
  1384 +function _handleDownload() {
  1385 + _handleDownload = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(url, name, request) {
  1386 + var isDownload,
  1387 + link,
  1388 + blob,
  1389 + downloadUrl,
  1390 + _args2 = arguments;
  1391 + return regeneratorRuntime.wrap(function _callee2$(_context2) {
  1392 + while (1) {
  1393 + switch (_context2.prev = _context2.next) {
  1394 + case 0:
  1395 + // eslint-disable-next-line prefer-rest-params
  1396 + isDownload = _args2[3];
  1397 +
  1398 + if (isDownload === null || Boolean(isDownload)) {
  1399 + _message.warning('即将开始下载,请勿重复点击。');
  1400 + } // console.log('url========', url);
  1401 + // const isInDing = dd && dd?.env?.platform !== 'notInDingTalk';
  1402 + // if (isInDing) {
  1403 + // // 比如导出 导入
  1404 + // const needToken = !(url.includes('http://') || url.includes('https://'));
  1405 + // let dingUrl;
  1406 + // if (needToken) {
  1407 + // const apiUri = process.env.apiUrl || '';
  1408 + // const needConcat = !(apiUri.includes('http://') || apiUri.includes('https://')); // 打包后
  1409 + // const prev = `${needConcat ? location.origin : ''}${apiUri}${url}`;
  1410 + // const append = `_token=${QIXIAO_TOKEN}${isDesignPage() ? '&_bizCode=design' : ''}`;
  1411 + // dingUrl = `${prev}${prev.includes('?') ? '&' : '?'}${append}`; // 文件服务器 不能加参数
  1412 + // } else {
  1413 + // dingUrl = url;
  1414 + // }
  1415 + // console.log('dingUrl========', dingUrl);
  1416 + // const fileName = name || '下载文件';
  1417 + // dd.biz.util.downloadFile({
  1418 + // url: dingUrl,
  1419 + // name: fileName,
  1420 + // onFail: function () {
  1421 + // message.error(`${fileName} 文件下载失败`);
  1422 + // },
  1423 + // });
  1424 + // return;
  1425 + // }
  1426 +
  1427 +
  1428 + link = document.createElement('a');
  1429 + link.href = url;
  1430 + link.download = name;
  1431 + link.target = '_blank';
  1432 + document.body.appendChild(link); //TODO 文件过大时,看不到下载进度
  1433 +
  1434 + _context2.next = 9;
  1435 + return request.get(url, {
  1436 + autoShowError: true
  1437 + });
  1438 +
  1439 + case 9:
  1440 + blob = _context2.sent;
  1441 +
  1442 + if (blob !== null) {
  1443 + downloadUrl = URL.createObjectURL(blob);
  1444 + link.href = downloadUrl;
  1445 + link.click();
  1446 + document.body.removeChild(link);
  1447 + URL.revokeObjectURL(downloadUrl);
  1448 + }
  1449 +
  1450 + case 11:
  1451 + case "end":
  1452 + return _context2.stop();
  1453 + }
  1454 + }
  1455 + }, _callee2);
  1456 + }));
  1457 + return _handleDownload.apply(this, arguments);
  1458 +}
  1459 +
  1460 +export default VirtualList;
\ No newline at end of file
... ...
  1 +import { createFromIconfontCN } from '@ant-design/icons/lib';
  2 +/**
  3 + * 使用:
  4 + * import QxIcon from '@/packages/qx-icon';
  5 + * <QxIcon type="xxx"/>
  6 + * 说明:
  7 + * `xxx`为图标唯一标识,`iconfont.cn`对应图标下的“复制代码”所得,建议命名为“icon-xxx_yyy”,
  8 + * “icon-”为固定前缀,xxx为模块类型,yyy为图标名。公共类的xxx命名为“comm”
  9 + * eg: <QxIcon type="icon-flow_eye"/>
  10 + *
  11 + * @type {React.FC<IconFontProps<string>>}
  12 + */
  13 +
  14 +var QxIcon = createFromIconfontCN({
  15 + scriptUrl: 'https://lf1-cdn-tos.bytegoofy.com/obj/iconpark/icons_13749_95.b05de9dc2fbe8efffb150f83b64da806.es5.js'
  16 +});
  17 +export default QxIcon;
\ No newline at end of file
... ...
  1 +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
  2 +
  3 +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
  4 +
  5 +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  6 +
  7 +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
  8 +
  9 +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
  10 +
  11 +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  12 +
  13 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  14 +
  15 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  16 +
  17 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  18 +
  19 +/* eslint-disable jsx-a11y/anchor-is-valid */
  20 +import React from 'react';
  21 +import { cloneDeep, get, isFunction } from 'lodash-es';
  22 +import { useStore, useTools } from '../../../hooks';
  23 +import { generateDataSkeleton, getDataPath, getSchemaFromFlatten } from '../../../utils';
  24 +import CardList from './CardList';
  25 +import DrawerList from './DrawerList';
  26 +import "./list.css";
  27 +import SimpleList from './SimpleList';
  28 +import TableList from './TableList';
  29 +import TabList from './TabList';
  30 +import VirtualList from './VirtualList';
  31 +import ListForMobile from "./ListForMobile";
  32 +
  33 +var RenderList = function RenderList(_ref) {
  34 + var parentId = _ref.parentId,
  35 + _ref$schema = _ref.schema,
  36 + schema = _ref$schema === void 0 ? {} : _ref$schema,
  37 + _ref$dataIndex = _ref.dataIndex,
  38 + dataIndex = _ref$dataIndex === void 0 ? [] : _ref$dataIndex,
  39 + _ref$children = _ref.children,
  40 + children = _ref$children === void 0 ? [] : _ref$children,
  41 + errorFields = _ref.errorFields,
  42 + displayType = _ref.displayType;
  43 +
  44 + var _useStore = useStore(),
  45 + formData = _useStore.formData,
  46 + flatten = _useStore.flatten;
  47 +
  48 + var _useTools = useTools(),
  49 + onItemChange = _useTools.onItemChange,
  50 + removeTouched = _useTools.removeTouched,
  51 + methods = _useTools.methods,
  52 + layoutWidgets = _useTools.layoutWidgets;
  53 +
  54 + var _schema$props = schema.props,
  55 + props = _schema$props === void 0 ? {} : _schema$props;
  56 + var renderWidget = 'list';
  57 +
  58 + try {
  59 + renderWidget = schema.widget;
  60 + } catch (error) {} // 计算 list对应的formData
  61 +
  62 +
  63 + var dataPath = getDataPath(parentId, dataIndex);
  64 + var listData;
  65 +
  66 + if (typeof dataPath === 'string') {
  67 + // TODO: listData会有不少“窟窿”,submit 的时候,listData 需要补齐 or filter
  68 + listData = get(formData, dataPath);
  69 + }
  70 +
  71 + var displayList = Array.isArray(listData) && JSON.stringify(listData) !== '[{}]' ? listData : [];
  72 +
  73 + var changeList = function changeList(newList) {
  74 + onItemChange(dataPath, newList);
  75 + };
  76 +
  77 + var addItem = function addItem() {
  78 + var _item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
  79 +
  80 + var _schema = getSchemaFromFlatten(flatten, parentId);
  81 +
  82 + var newItem = _objectSpread(_objectSpread({}, generateDataSkeleton(_schema.items) || {}), _item);
  83 +
  84 + var newList = [].concat(_toConsumableArray(displayList), [_objectSpread(_objectSpread({}, newItem), {}, {
  85 + _active: true
  86 + })]);
  87 + var newIndex = newList.length - 1;
  88 + onItemChange(dataPath, newList);
  89 + return newIndex;
  90 + };
  91 +
  92 + var copyItem = function copyItem(idx) {
  93 + var newItem = cloneDeep(displayList[idx]);
  94 + delete newItem.id;
  95 + var newList = [].concat(_toConsumableArray(displayList.slice(0, idx + 1)), [newItem], _toConsumableArray(displayList.slice(idx + 1)));
  96 + onItemChange(dataPath, JSON.parse(JSON.stringify(newList)));
  97 + };
  98 +
  99 + var deleteItem = function deleteItem(idx) {
  100 + // TODO: 删除元素的时候,也需要delete相对于的校验信息(errorFields)
  101 + // remark: 删除时,不存在的item需要补齐,用null
  102 + displayList.forEach(function (item) {
  103 + return delete item.orginIdx;
  104 + });
  105 + var newList = displayList.filter(function (item, kdx) {
  106 + return kdx !== idx;
  107 + });
  108 + onItemChange(dataPath, newList);
  109 + removeTouched("".concat(dataPath, "[").concat(idx, "]"));
  110 + };
  111 +
  112 + var handleMoving = function handleMoving() {
  113 + if (props.onMove && typeof props.onMove === 'string') {
  114 + var cb = methods[props.onMove];
  115 +
  116 + if (typeof cb === 'function') {
  117 + cb();
  118 + }
  119 + }
  120 + }; // 批量删除的方法
  121 +
  122 +
  123 + var batchDelete = function batchDelete(ids) {
  124 + displayList.forEach(function (item) {
  125 + return delete item.orginIdx;
  126 + });
  127 + var newList = displayList.filter(function (item, kdx) {
  128 + return !ids.includes(kdx);
  129 + });
  130 + onItemChange(dataPath, newList);
  131 + (ids || []).forEach(function (id) {
  132 + removeTouched("".concat(dataPath, "[").concat(id, "]"));
  133 + });
  134 + }; //TODO1: 上线翻页要正确!!现在是错的
  135 +
  136 +
  137 + var moveItemUp = function moveItemUp(idx) {
  138 + handleMoving();
  139 + if (idx === 0) return;
  140 + var currentItem = displayList[idx];
  141 + var itemAbove = displayList[idx - 1];
  142 + var newList = displayList;
  143 + newList[idx] = itemAbove;
  144 + newList[idx - 1] = currentItem;
  145 + onItemChange(dataPath, newList); // TODO: 这块懒了,之后要处理一下
  146 +
  147 + removeTouched("".concat(dataPath, "[").concat(idx, "]"));
  148 + };
  149 +
  150 + var moveItemDown = function moveItemDown(idx) {
  151 + handleMoving();
  152 + if (idx >= displayList.length - 1) return;
  153 + var currentItem = displayList[idx];
  154 + var itemBelow = displayList[idx + 1];
  155 + var newList = displayList;
  156 + newList[idx] = itemBelow;
  157 + newList[idx + 1] = currentItem;
  158 + onItemChange(dataPath, newList); // TODO: 这块懒了,之后要处理一下
  159 +
  160 + removeTouched("".concat(dataPath, "[").concat(idx, "]"));
  161 + };
  162 +
  163 + var itemSchema = {
  164 + type: 'object',
  165 + properties: {},
  166 + props: schema.props || {},
  167 + $id: schema.$id
  168 + };
  169 + var itemFlatten = {
  170 + schema: itemSchema,
  171 + children: children
  172 + };
  173 +
  174 + var getFieldsProps = function getFieldsProps(idx, extraProps) {
  175 + return _objectSpread({
  176 + _item: itemFlatten,
  177 + dataIndex: [].concat(_toConsumableArray(dataIndex), [idx])
  178 + }, extraProps);
  179 + };
  180 +
  181 + var displayProps = {
  182 + displayList: displayList,
  183 + changeList: changeList,
  184 + schema: schema,
  185 + dataPath: dataPath,
  186 + dataIndex: dataIndex,
  187 + children: children,
  188 + deleteItem: deleteItem,
  189 + batchDelete: batchDelete,
  190 + addItem: addItem,
  191 + copyItem: copyItem,
  192 + moveItemDown: moveItemDown,
  193 + moveItemUp: moveItemUp,
  194 + listData: listData,
  195 + flatten: flatten,
  196 + errorFields: errorFields,
  197 + displayType: displayType,
  198 + getFieldsProps: getFieldsProps
  199 + }; // 外部定义:添加按钮事件
  200 +
  201 + var onAdd = methods[props.onAdd];
  202 +
  203 + if (isFunction(onAdd)) {
  204 + displayProps.addItem = function () {
  205 + return onAdd(function (_item) {
  206 + return addItem(_item);
  207 + }, {
  208 + schema: schema
  209 + });
  210 + };
  211 + }
  212 +
  213 + if (renderWidget === 'listForMobile') {
  214 + return /*#__PURE__*/React.createElement(ListForMobile, displayProps);
  215 + }
  216 +
  217 + if (layoutWidgets && layoutWidgets[renderWidget]) {
  218 + var Component = layoutWidgets[renderWidget];
  219 + return /*#__PURE__*/React.createElement(Component, displayProps);
  220 + }
  221 +
  222 + switch (renderWidget) {
  223 + case 'list1':
  224 + case 'simpleList':
  225 + return /*#__PURE__*/React.createElement(SimpleList, displayProps);
  226 +
  227 + case 'list2':
  228 + case 'tableList':
  229 + return /*#__PURE__*/React.createElement(TableList, displayProps);
  230 +
  231 + case 'list3':
  232 + case 'drawerList':
  233 + return /*#__PURE__*/React.createElement(DrawerList, displayProps);
  234 +
  235 + case 'list4':
  236 + case 'virtualList':
  237 + return /*#__PURE__*/React.createElement(VirtualList, displayProps);
  238 +
  239 + case 'tabList':
  240 + return /*#__PURE__*/React.createElement(TabList, displayProps);
  241 +
  242 + case 'list0':
  243 + case 'cardList':
  244 + default:
  245 + return /*#__PURE__*/React.createElement(CardList, displayProps);
  246 + }
  247 +};
  248 +
  249 +export default RenderList;
\ No newline at end of file
... ...
  1 +.fr-container .ant-table-container .field-block {
  2 + display: none !important;
  3 +}
  4 +.fr-container .fr-card-item {
  5 + border: 0.5px solid rgba(0, 0, 0, 0.1);
  6 + padding: 10px 0 4px 0;
  7 + margin-bottom: 8px;
  8 + position: relative;
  9 + display: flex;
  10 +}
  11 +.fr-container .fr-card-item-row {
  12 + padding-top: 34px;
  13 +}
  14 +.fr-container .fr-card-index {
  15 + position: absolute;
  16 + top: 0;
  17 + left: 0;
  18 + padding-left: 4px;
  19 + padding-right: 6px;
  20 + border-bottom-right-radius: 8px;
  21 + border-top-left-radius: 3px;
  22 + background-color: rgba(0, 0, 0, 0.36);
  23 + font-size: 8px;
  24 + color: #fff;
  25 +}
  26 +.fr-container .fr-card-toolbar {
  27 + position: absolute;
  28 + top: 8px;
  29 + right: 8px;
  30 + display: flex;
  31 +}
  32 +.qx-virtual-searchLine {
  33 + display: flex;
  34 + justify-content: space-between;
  35 + padding: 8px 0;
  36 +}
  37 +.qx-virtual-searchLine .ant-input-affix-wrapper-sm {
  38 + padding: 4px 7px;
  39 +}
  40 +.qx-virtualList .ant-btn-sm {
  41 + padding: 0;
  42 +}
  43 +.qx-virtualList .qx-fr-input--readonly {
  44 + background: none;
  45 +}
  46 +.qx-virtualList .ant-select:not(.ant-select-customize-input) .ant-select-selector {
  47 + border: none;
  48 +}
  49 +.qx-virtualList .ant-pagination-total-text {
  50 + line-height: 32px;
  51 +}
  52 +.rowReverse {
  53 + flex-direction: row-reverse;
  54 +}
  55 +.qx-card-mobile .adm-list-item-content-main {
  56 + font-size: 14px;
  57 +}
  58 +.qx-card-mobile .adm-list-default .adm-list-body {
  59 + border: none;
  60 +}
  61 +.qx-card-mobile .adm-list-item {
  62 + padding-left: 15px;
  63 +}
  64 +.qx-card-mobile .adm-list-item .adm-list-item-content {
  65 + padding-right: 15px;
  66 +}
  67 +.qx-card-mobile .adm-collapse-panel-header {
  68 + margin: 0 15px;
  69 + height: 40px;
  70 + background: #f6f7f9;
  71 + border-radius: 4px 4px 0 0;
  72 +}
  73 +.qx-card-mobile .adm-collapse-panel-header .adm-collapse-arrow {
  74 + font-size: 16px;
  75 +}
  76 +.qx-card-mobile .adm-list-item-content {
  77 + border-radius: 8px 8px 0 0;
  78 + border-top: none;
  79 +}
  80 +.qx-card-mobile .adm-list-item-content .fr-content-column {
  81 + padding: 0 15px 6px;
  82 +}
  83 +.qx-card-mobile-item {
  84 + border-radius: unset;
  85 + border-top: none;
  86 +}
  87 +.qx-card-mobile .adm-collapse-panel-content .adm-list-item-content-main {
  88 + padding: 0;
  89 +}
  90 +.qx-card-mobile .adm-list-item-content-arrow {
  91 + font-size: 15px;
  92 + width: 15px;
  93 + height: 15px;
  94 +}
  95 +.add-button {
  96 + color: #3499ff;
  97 + display: inline-block;
  98 + margin: 15px;
  99 +}
  100 +.qx-virtual_full {
  101 + position: fixed;
  102 + top: 0;
  103 + left: 0;
  104 + bottom: 0;
  105 + right: 0;
  106 + z-index: 999;
  107 + width: 100vw;
  108 + height: 100vh;
  109 + overflow: auto;
  110 + background: #fff;
  111 +}
  112 +.qx-virtual_full .qx-virtual-searchLine {
  113 + padding: 8px;
  114 +}
... ...
  1 +export function isDesignPage() {
  2 + var href = location.href;
  3 + var res = false;
  4 +
  5 + if (href.indexOf('/app-view/') > -1) {
  6 + res = true;
  7 + } else if (href.indexOf('/apps/design') > -1) {
  8 + res = true;
  9 + } else if (href.indexOf('/editor/form') > -1) {
  10 + res = true;
  11 + } else if (href.indexOf('/editor/setting') > -1) {
  12 + res = true;
  13 + } else if (href.indexOf('/editor/view') > -1) {
  14 + res = true;
  15 + } else if (href.indexOf('/editor/detail') > -1) {
  16 + res = true;
  17 + } else if (href.indexOf('/editor/custom') > -1) {
  18 + res = true;
  19 + } else if (href.indexOf('/editor/aggregation') > -1) {
  20 + res = true;
  21 + } else if (href.indexOf('/component') > -1) {
  22 + res = true;
  23 + } else if (href.indexOf('/editor/chart') > -1) {
  24 + res = true;
  25 + } else if (href.indexOf('businessCode=design') > -1) {
  26 + res = true;
  27 + } else if (href.indexOf('refer=/app-view/') > -1) {
  28 + res = true;
  29 + } else if (href.indexOf('/datacube/edit') > -1) {
  30 + res = true;
  31 + } else if (href.indexOf('/datacube/config') > -1) {
  32 + res = true;
  33 + } else if (href.indexOf('/datacube/design') > -1) {
  34 + res = true;
  35 + }
  36 +
  37 + return res;
  38 +}
\ No newline at end of file
... ...
  1 +function _extends() { _extends = Object.assign || 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); }
  2 +
  3 +import React from 'react';
  4 +import Core from '../index';
  5 +
  6 +var RenderObject = function RenderObject(_ref) {
  7 + var _ref$children = _ref.children,
  8 + children = _ref$children === void 0 ? [] : _ref$children,
  9 + _ref$dataIndex = _ref.dataIndex,
  10 + dataIndex = _ref$dataIndex === void 0 ? [] : _ref$dataIndex,
  11 + displayType = _ref.displayType,
  12 + labelAlign = _ref.labelAlign,
  13 + hideTitle = _ref.hideTitle;
  14 + return /*#__PURE__*/React.createElement(React.Fragment, null, children.map(function (child, i) {
  15 + var FRProps = {
  16 + displayType: displayType,
  17 + labelAlign: labelAlign,
  18 + id: child,
  19 + dataIndex: dataIndex,
  20 + hideTitle: hideTitle
  21 + };
  22 + return /*#__PURE__*/React.createElement(Core, _extends({
  23 + key: i.toString()
  24 + }, FRProps));
  25 + }));
  26 +};
  27 +
  28 +export default RenderObject;
\ No newline at end of file
... ...
  1 +.fr-container .error-message {
  2 + color: #ff4d4f;
  3 + min-height: 24px;
  4 + font-size: 14px;
  5 + line-height: 1.5715;
  6 + transition: color 0.3s cubic-bezier(0.215, 0.61, 0.355, 1);
  7 +}
  8 +.fr-container .field-block {
  9 + min-height: 24px;
  10 +}
... ...
  1 +import React from 'react';
  2 +import { translateMessage } from '../../utils';
  3 +import "./ErrorMessage.css";
  4 +
  5 +var ErrorMessage = function ErrorMessage(_ref) {
  6 + var message = _ref.message,
  7 + schema = _ref.schema,
  8 + softHidden = _ref.softHidden,
  9 + hardHidden = _ref.hardHidden;
  10 + var msg = '';
  11 + if (typeof message === 'string') msg = message;
  12 +
  13 + if (Array.isArray(message)) {
  14 + msg = message[0] || '';
  15 + }
  16 +
  17 + msg = translateMessage(msg, schema); // 无错误信息不渲染 msg 元素占位,表单之间的间隔通过 field-block 元素分隔
  18 +
  19 + if (!msg) return null;
  20 + if (hardHidden) return /*#__PURE__*/React.createElement("div", {
  21 + className: "error-message"
  22 + });
  23 + return !msg && softHidden ? null : /*#__PURE__*/React.createElement("div", {
  24 + className: "error-message"
  25 + }, msg);
  26 +};
  27 +
  28 +export default ErrorMessage;
\ No newline at end of file
... ...
  1 +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
  2 +
  3 +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
  4 +
  5 +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
  6 +
  7 +import React, { Suspense } from 'react';
  8 +import { transformProps } from '../../createWidget';
  9 +import { useStore, useTools } from '../../hooks';
  10 +import { extraSchemaList, getWidgetName } from '../../mapping';
  11 +import { isListType, isObject, isObjType } from '../../utils';
  12 +
  13 +var ErrorSchema = function ErrorSchema(schema) {
  14 + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
  15 + style: {
  16 + color: 'red'
  17 + }
  18 + }, "schema\u672A\u5339\u914D\u5230\u5C55\u793A\u7EC4\u4EF6\uFF1A"), /*#__PURE__*/React.createElement("div", null, JSON.stringify(schema)));
  19 +};
  20 +
  21 +var ExtendedWidget = function ExtendedWidget(_ref) {
  22 + var schema = _ref.schema,
  23 + onChange = _ref.onChange,
  24 + value = _ref.value,
  25 + dependValues = _ref.dependValues,
  26 + children = _ref.children,
  27 + onItemChange = _ref.onItemChange,
  28 + formData = _ref.formData,
  29 + getValue = _ref.getValue,
  30 + readOnly = _ref.readOnly,
  31 + dataPath = _ref.dataPath,
  32 + disabled = _ref.disabled,
  33 + dataIndex = _ref.dataIndex,
  34 + watch = _ref.watch,
  35 + hasError = _ref.hasError;
  36 +
  37 + var _useTools = useTools(),
  38 + widgets = _useTools.widgets,
  39 + mapping = _useTools.mapping,
  40 + setValueByPath = _useTools.setValueByPath,
  41 + getSchemaByPath = _useTools.getSchemaByPath,
  42 + setSchemaByPath = _useTools.setSchemaByPath,
  43 + setSchema = _useTools.setSchema,
  44 + setValues = _useTools.setValues,
  45 + getValues = _useTools.getValues,
  46 + resetFields = _useTools.resetFields,
  47 + setErrorFields = _useTools.setErrorFields,
  48 + removeErrorField = _useTools.removeErrorField,
  49 + validateFields = _useTools.validateFields,
  50 + isFieldTouched = _useTools.isFieldTouched,
  51 + isFieldsTouched = _useTools.isFieldsTouched,
  52 + isFieldValidating = _useTools.isFieldValidating,
  53 + scrollToPath = _useTools.scrollToPath,
  54 + getFieldError = _useTools.getFieldError,
  55 + getFieldsError = _useTools.getFieldsError,
  56 + setFields = _useTools.setFields;
  57 +
  58 + var _useStore = useStore(),
  59 + globalProps = _useStore.globalProps; // if (isObjType(schema)) {
  60 + // return <Map value={value} onChange={onChange} children={children} />;
  61 + // }
  62 + // if (isListType(schema)) {
  63 + // return 'haha';
  64 + // }
  65 + // return <Input value={value} onChange={e => onChange(e.target.value)} />;
  66 + // TODO: calc widget, better way?
  67 + // let widgetName = useMemo(() => getWidgetName(schema, mapping), [
  68 + // JSON.stringify(schema),
  69 + // ]);
  70 +
  71 +
  72 + var widgetName = getWidgetName(schema, mapping);
  73 + var customName = schema.widget || schema['ui:widget'];
  74 +
  75 + if (customName && widgets[customName]) {
  76 + widgetName = customName;
  77 + }
  78 +
  79 + var readOnlyName = schema.readOnlyWidget || 'html';
  80 +
  81 + if (readOnly && !isObjType(schema) && !isListType(schema)) {
  82 + widgetName = readOnlyName;
  83 + }
  84 +
  85 + if (!widgetName) {
  86 + widgetName = 'input';
  87 + return /*#__PURE__*/React.createElement(ErrorSchema, {
  88 + schema: schema
  89 + });
  90 + }
  91 +
  92 + var Widget = widgets[widgetName] || widgets['html'];
  93 + var extraSchema = extraSchemaList[widgetName]; // console.log(hasError, '----------');
  94 +
  95 + var widgetProps = _objectSpread(_objectSpread({
  96 + schema: _objectSpread(_objectSpread({}, schema), extraSchema),
  97 + onChange: onChange,
  98 + value: value,
  99 + children: children,
  100 + disabled: disabled,
  101 + readOnly: readOnly,
  102 + // dataPath,
  103 + // dataIndex,
  104 + className: hasError ? 'fr-item-status-error' : ''
  105 + }, schema.props), globalProps);
  106 +
  107 + if (schema.type === 'string' && typeof schema.max === 'number') {
  108 + widgetProps.maxLength = schema.max;
  109 + }
  110 +
  111 + ['title', 'placeholder', 'disabled', 'format'].forEach(function (key) {
  112 + if (schema[key]) {
  113 + widgetProps[key] = schema[key];
  114 + }
  115 + });
  116 +
  117 + if (schema.props) {
  118 + widgetProps = _objectSpread(_objectSpread({}, widgetProps), schema.props);
  119 + }
  120 +
  121 + Object.keys(schema).forEach(function (key) {
  122 + if (typeof key === 'string' && key.toLowerCase().indexOf('props') > -1 && key.length > 5) {
  123 + widgetProps[key] = schema[key];
  124 + }
  125 + }); // 支持 addonAfter 为自定义组件的情况
  126 +
  127 + if (isObject(widgetProps.addonAfter) && widgetProps.addonAfter.widget) {
  128 + var AddonAfterWidget = widgets[widgetProps.addonAfter.widget];
  129 + widgetProps.addonAfter = /*#__PURE__*/React.createElement(AddonAfterWidget, schema);
  130 + }
  131 +
  132 + var hideSelf = function hideSelf() {
  133 + var hidden = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
  134 + setSchemaByPath(schema.$id, {
  135 + hidden: hidden
  136 + });
  137 + }; // 避免传组件不接受的props,按情况传多余的props
  138 +
  139 +
  140 + widgetProps.addons = {
  141 + dependValues: dependValues,
  142 + onItemChange: onItemChange,
  143 + getValue: getValue,
  144 + formData: formData,
  145 + dataPath: dataPath,
  146 + dataIndex: dataIndex,
  147 + setValueByPath: setValueByPath,
  148 + setValue: setValueByPath,
  149 + getSchemaByPath: getSchemaByPath,
  150 + setSchemaByPath: setSchemaByPath,
  151 + setSchema: setSchema,
  152 + setValues: setValues,
  153 + getValues: getValues,
  154 + resetFields: resetFields,
  155 + setErrorFields: setErrorFields,
  156 + removeErrorField: removeErrorField,
  157 + validateFields: validateFields,
  158 + isFieldTouched: isFieldTouched,
  159 + isFieldsTouched: isFieldsTouched,
  160 + isFieldValidating: isFieldValidating,
  161 + scrollToPath: scrollToPath,
  162 + getFieldError: getFieldError,
  163 + getFieldsError: getFieldsError,
  164 + setFields: setFields,
  165 + hideSelf: hideSelf,
  166 + watch: watch
  167 + };
  168 + var finalProps = transformProps(widgetProps);
  169 + return /*#__PURE__*/React.createElement(Suspense, {
  170 + fallback: /*#__PURE__*/React.createElement("div", null)
  171 + }, /*#__PURE__*/React.createElement("div", {
  172 + className: "fr-item-wrapper"
  173 + }, /*#__PURE__*/React.createElement(Widget, finalProps)));
  174 +};
  175 +
  176 +function getValue(_data, key) {
  177 + if (!key) {
  178 + return null;
  179 + }
  180 +
  181 + var keys = key.split('.');
  182 + return keys.reduce(function (prev, cur) {
  183 + if (cur === keys[keys.length - 1]) {
  184 + return prev[cur];
  185 + } else {
  186 + return prev[cur] || {};
  187 + }
  188 + }, _data);
  189 +}
  190 +
  191 +var areEqual = function areEqual(prev, current) {
  192 + var _prev$schema, _prev$schema$props;
  193 +
  194 + if (prev.schema && current.schema) {
  195 + if (prev.schema.$id === '#') {
  196 + return false;
  197 + } // if (prev.schema.hidden && current.schema.hidden) {
  198 + // return true;
  199 + // }
  200 +
  201 + }
  202 +
  203 + if (prev.readOnly !== current.readOnly) {
  204 + return false;
  205 + }
  206 +
  207 + if (prev.hasError !== current.hasError) {
  208 + return false;
  209 + }
  210 +
  211 + if (prev.disabled !== current.disabled) {
  212 + return false;
  213 + }
  214 +
  215 + if (JSON.stringify(prev.dependValues) !== JSON.stringify(current.dependValues)) {
  216 + return false;
  217 + }
  218 +
  219 + if ((prev.schema.widget === 'virtualList' || prev.schema.widget === 'relSelector') && ((_prev$schema = prev.schema) === null || _prev$schema === void 0 ? void 0 : (_prev$schema$props = _prev$schema.props) === null || _prev$schema$props === void 0 ? void 0 : _prev$schema$props.mode) === 'TAG' && JSON.stringify(getValue(prev.formData, prev.schema.relformKey)) !== JSON.stringify(getValue(current.formData, current.schema.relformKey))) {
  220 + return false;
  221 + }
  222 +
  223 + if (isObjType(prev.schema) && isObjType(current.schema)) {
  224 + return false;
  225 + }
  226 +
  227 + if (JSON.stringify(prev.value) === JSON.stringify(current.value) && JSON.stringify(prev.schema) === JSON.stringify(current.schema)) {
  228 + return true;
  229 + }
  230 +
  231 + return false;
  232 +};
  233 +
  234 +export default /*#__PURE__*/React.memo(ExtendedWidget, areEqual); // export default ExtendedWidget;
\ No newline at end of file
... ...
  1 +.fr-container .fr-form-item-extra {
  2 + clear: both;
  3 + color: rgba(0, 0, 0, 0.45);
  4 + font-size: 14px;
  5 + line-height: 1.5715;
  6 + min-height: 24px;
  7 +}
... ...
  1 +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  2 +
  3 +import React from 'react';
  4 +import { useTools } from '../../hooks';
  5 +import "./Extra.css";
  6 +
  7 +var Extra = function Extra(_ref) {
  8 + var schema = _ref.schema;
  9 + var extra = schema.extra;
  10 +
  11 + var _useTools = useTools(),
  12 + widgets = _useTools.widgets;
  13 +
  14 + if (!extra) return null; // widget 这个api也可以不对外
  15 +
  16 + var widgetName = extra.widget;
  17 + var Widget = widgets[widgetName];
  18 + if (Widget) return /*#__PURE__*/React.createElement(Widget, {
  19 + schema: schema
  20 + });
  21 + var __html = '';
  22 +
  23 + if (typeof extra === 'string') {
  24 + __html = extra;
  25 + } // 内部BU使用的口子,这个api不对外,也没有必要
  26 +
  27 +
  28 + if (_typeof(extra) === 'object' && extra.text) {
  29 + __html = extra.text;
  30 + }
  31 +
  32 + return __html && /*#__PURE__*/React.createElement("div", {
  33 + className: "fr-form-item-extra",
  34 + dangerouslySetInnerHTML: {
  35 + __html: __html
  36 + }
  37 + });
  38 +};
  39 +
  40 +export default Extra;
\ No newline at end of file
... ...
  1 +import "antd/es/tooltip/style";
  2 +import _Tooltip from "antd/es/tooltip";
  3 +import React from 'react';
  4 +import { useStore2, useTools } from '../../hooks';
  5 +import { isCheckBoxType } from '../../utils';
  6 +
  7 +var Description = function Description(_ref) {
  8 + var displayType = _ref.displayType,
  9 + schema = _ref.schema;
  10 + var description = schema.description,
  11 + descType = schema.descType,
  12 + descWidget = schema.descWidget;
  13 + if (!description && !descWidget) return null;
  14 +
  15 + var _useTools = useTools(),
  16 + widgets = _useTools.widgets;
  17 +
  18 + var _description = typeof description === 'string' && /(^<|\/>)/.test(description) ? /*#__PURE__*/React.createElement("div", {
  19 + dangerouslySetInnerHTML: {
  20 + __html: description
  21 + }
  22 + }) : description;
  23 +
  24 + var RenderDesc = function RenderDesc() {
  25 + var Widget = widgets[schema.descWidget];
  26 +
  27 + if (Widget) {
  28 + return /*#__PURE__*/React.createElement(Widget, {
  29 + schema: schema
  30 + });
  31 + }
  32 +
  33 + return null;
  34 + };
  35 +
  36 + switch (displayType) {
  37 + case 'row':
  38 + if (descType === 'widget') {
  39 + return /*#__PURE__*/React.createElement(RenderDesc, null);
  40 + }
  41 +
  42 + return /*#__PURE__*/React.createElement(_Tooltip, {
  43 + title: _description
  44 + }, /*#__PURE__*/React.createElement("i", {
  45 + className: "fr-tooltip-icon"
  46 + }));
  47 +
  48 + case 'inline':
  49 + return null;
  50 +
  51 + default:
  52 + if (descType === 'widget') {
  53 + return /*#__PURE__*/React.createElement(RenderDesc, null);
  54 + }
  55 +
  56 + if (descType === 'icon') {
  57 + return /*#__PURE__*/React.createElement(_Tooltip, {
  58 + title: _description
  59 + }, /*#__PURE__*/React.createElement("i", {
  60 + className: "fr-tooltip-icon"
  61 + }));
  62 + }
  63 +
  64 + return /*#__PURE__*/React.createElement("span", {
  65 + className: "fr-desc ml2",
  66 + title: description
  67 + }, "( ".concat(description, " )"));
  68 + }
  69 +};
  70 +
  71 +var Title = function Title(_ref2) {
  72 + var labelClass = _ref2.labelClass,
  73 + labelStyle = _ref2.labelStyle,
  74 + schema = _ref2.schema,
  75 + displayType = _ref2.displayType,
  76 + renderTitle = _ref2.renderTitle,
  77 + globalRequiredMark = _ref2.requiredMark;
  78 +
  79 + var _useStore = useStore2(),
  80 + globalDisplayType = _useStore.displayType,
  81 + readOnly = _useStore.readOnly,
  82 + colon = _useStore.colon;
  83 +
  84 + var title = schema.title,
  85 + required = schema.required,
  86 + type = schema.type,
  87 + schemaRequiredMark = schema.requiredMark;
  88 + var isObjType = type === 'object';
  89 +
  90 + var _displayType = schema.displayType || displayType || globalDisplayType || 'column';
  91 +
  92 + if (renderTitle) {
  93 + return renderTitle({
  94 + labelClass: labelClass,
  95 + labelStyle: labelStyle,
  96 + schema: schema,
  97 + displayType: _displayType,
  98 + readOnly: readOnly,
  99 + colon: colon
  100 + });
  101 + }
  102 +
  103 + var requiredMark = typeof schemaRequiredMark === 'undefined' ? globalRequiredMark : schemaRequiredMark; // 左侧的的 * 号提示
  104 +
  105 + var TitleRequiredMark = null; // 左侧的 option 提示
  106 +
  107 + var TitleTextMark = null;
  108 +
  109 + if (required) {
  110 + /**
  111 + * ant-design requiredMark 实现
  112 + * https://ant.design/components/form-cn/
  113 + */
  114 + if (requiredMark !== false && requiredMark !== 'optional') {
  115 + TitleRequiredMark = /*#__PURE__*/React.createElement("span", {
  116 + className: "fr-label-required"
  117 + }, " *");
  118 + TitleTextMark = null;
  119 + }
  120 + } else {
  121 + if (requiredMark === 'optional') {
  122 + TitleRequiredMark = null;
  123 + TitleTextMark = /*#__PURE__*/React.createElement("span", {
  124 + className: "fr-label-required-text"
  125 + }, "\uFF08\u53EF\u9009\uFF09");
  126 + }
  127 + } // requiredMark 为 false 不展示必填符号
  128 +
  129 +
  130 + if (requiredMark === false) {
  131 + TitleRequiredMark = null;
  132 + TitleTextMark = null;
  133 + }
  134 +
  135 + return /*#__PURE__*/React.createElement("div", {
  136 + className: labelClass,
  137 + style: labelStyle
  138 + }, title ? /*#__PURE__*/React.createElement("label", {
  139 + className: "fr-label-title ".concat(isCheckBoxType(schema, readOnly) || _displayType === 'column' || !colon ? 'no-colon' : '') // checkbox不带冒号
  140 + ,
  141 + title: title
  142 + }, TitleRequiredMark, /*#__PURE__*/React.createElement("span", {
  143 + className: "".concat(isObjType ? 'b' : '', " ").concat(_displayType === 'column' ? 'flex-none' : '')
  144 + }, /*#__PURE__*/React.createElement("span", {
  145 + dangerouslySetInnerHTML: {
  146 + __html: title
  147 + }
  148 + })), TitleTextMark, /*#__PURE__*/React.createElement(Description, {
  149 + schema: schema,
  150 + displayType: _displayType
  151 + })) : null);
  152 +};
  153 +
  154 +export default Title;
\ No newline at end of file
... ...