@luck-design-biz/luckda 0.0.25-7 → 0.0.25-8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/es/components/LDActions/index.js +8 -10
  2. package/es/components/LDActions/index.less +7 -4
  3. package/es/components/LdAutoForm/index.js +8 -6
  4. package/es/components/LdFormList/index.js +12 -4
  5. package/es/components/LdGrid/index.js +11 -5
  6. package/es/components/LdGridForm/index.js +4 -2
  7. package/es/components/LdTree/index.js +30 -13
  8. package/es/helper/form.js +9 -5
  9. package/es/locales/zh-CN.js +15 -10
  10. package/es/lowcode/constants/api-url.js +112 -26
  11. package/es/lowcode/constants/event-topics.js +2 -0
  12. package/es/lowcode/engine/meta/box.props.json +3 -3
  13. package/es/lowcode/engine/meta/button.props.json +3 -3
  14. package/es/lowcode/engine/meta/components-list.json +6 -0
  15. package/es/lowcode/engine/meta/dialog.props.json +5 -5
  16. package/es/lowcode/engine/meta/drawer.props.json +8 -20
  17. package/es/lowcode/engine/meta/form.props.json +13 -7
  18. package/es/lowcode/engine/meta/imex.props.default.json +8 -1
  19. package/es/lowcode/engine/meta/imex.props.json +54 -22
  20. package/es/lowcode/engine/meta/js-editor/auto-complete.json +53 -3
  21. package/es/lowcode/engine/meta/layout.props.json +2 -2
  22. package/es/lowcode/engine/meta/page.props.json +2 -2
  23. package/es/lowcode/engine/meta/pagelayout.props.default.json +14 -0
  24. package/es/lowcode/engine/meta/pagelayout.props.json +47 -0
  25. package/es/lowcode/engine/meta/section.props.json +2 -2
  26. package/es/lowcode/engine/meta/split.props.default.json +1 -1
  27. package/es/lowcode/engine/meta/split.props.json +4 -4
  28. package/es/lowcode/engine/meta/table.props.json +15 -9
  29. package/es/lowcode/engine/meta/tabs.props.json +3 -3
  30. package/es/lowcode/engine/meta/tree.props.default.json +1 -0
  31. package/es/lowcode/engine/meta/tree.props.json +55 -6
  32. package/es/lowcode/engine/provider/ContextProvider/index.js +12 -3
  33. package/es/lowcode/engine/provider/RemoteSourceProvider.js +55 -6
  34. package/es/lowcode/engine/tools/dataProcess.js +4 -0
  35. package/es/lowcode/engine/tools/usePageDataStore.js +4 -2
  36. package/es/lowcode/painter/DesignOperator.js +1 -1
  37. package/es/lowcode/painter/DesignToolbar.js +2 -1
  38. package/es/lowcode/painter/Panel.js +3 -3
  39. package/es/lowcode/painter/components/ActionBindModal.js +25 -13
  40. package/es/lowcode/painter/components/AdvancePanel.js +6 -1
  41. package/es/lowcode/painter/components/AttrsPanel.js +13 -11
  42. package/es/lowcode/painter/components/field-setting/CheckFrontRules.js +108 -0
  43. package/es/lowcode/painter/components/field-setting/CheckRules.js +1 -26
  44. package/es/lowcode/painter/components/field-setting/FieldRulesModal.js +33 -13
  45. package/es/lowcode/painter/components/field-setting/SettingUI.js +156 -24
  46. package/es/lowcode/painter/components/field-setting/index.js +32 -63
  47. package/es/lowcode/painter/components/field-setting/meta/frontRules.js +53 -0
  48. package/es/lowcode/painter/panel-section/BlocksEditor/index.js +6 -9
  49. package/es/lowcode/painter/panel-section/FieldsSetting.js +53 -12
  50. package/es/lowcode/painter/panel-section/ImpExp.js +93 -6
  51. package/es/lowcode/painter/panel-section/ImpExpAlone.js +109 -0
  52. package/es/lowcode/painter/panel-section/PageLayoutDisplay.js +95 -0
  53. package/es/lowcode/painter/panel-section/SplitDisplay.js +25 -110
  54. package/es/lowcode/painter/panel-section/StylePanel/index.js +10 -4
  55. package/es/lowcode/painter/style/action-bind-modal.less +3 -3
  56. package/es/lowcode/painter/style/page-layout-display.less +28 -0
  57. package/es/lowcode/painter/style/split-display.less +0 -9
  58. package/es/lowcode/preview/index.js +4 -2
  59. package/es/lowcode/view/lc-components/Box/FunctionDesign.js +3 -2
  60. package/es/lowcode/view/lc-components/Box/meta.json +3 -3
  61. package/es/lowcode/view/lc-components/Button/index.js +2 -6
  62. package/es/lowcode/view/lc-components/Button/meta.json +3 -3
  63. package/es/lowcode/view/lc-components/Dialog/index.js +27 -2
  64. package/es/lowcode/view/lc-components/Dialog/meta.json +5 -5
  65. package/es/lowcode/view/lc-components/Drawer/meta.json +8 -20
  66. package/es/lowcode/view/lc-components/Form/FunctionPreview.js +8 -1
  67. package/es/lowcode/view/lc-components/Form/index.js +99 -21
  68. package/es/lowcode/view/lc-components/Form/meta.json +13 -7
  69. package/es/lowcode/view/lc-components/ImEx/FunctionDesign.js +8 -3
  70. package/es/lowcode/view/lc-components/ImEx/index.js +260 -10
  71. package/es/lowcode/view/lc-components/ImEx/index.less +7 -0
  72. package/es/lowcode/view/lc-components/ImEx/meta.json +55 -23
  73. package/es/lowcode/view/lc-components/Layout/meta.json +2 -2
  74. package/es/lowcode/view/lc-components/Page/meta.json +2 -2
  75. package/es/lowcode/view/lc-components/PageLayout/FunctionDesign.js +63 -0
  76. package/es/lowcode/view/lc-components/PageLayout/FunctionLive.js +10 -0
  77. package/es/lowcode/view/lc-components/PageLayout/FunctionPreview.js +10 -0
  78. package/es/lowcode/view/lc-components/PageLayout/index.js +32 -0
  79. package/es/lowcode/view/lc-components/PageLayout/meta.json +47 -0
  80. package/es/lowcode/view/lc-components/Section/meta.json +2 -2
  81. package/es/lowcode/view/lc-components/Split/FunctionDesign.js +11 -5
  82. package/es/lowcode/view/lc-components/Split/index.js +5 -9
  83. package/es/lowcode/view/lc-components/Split/meta.json +4 -4
  84. package/es/lowcode/view/lc-components/Table/components/TopImex.js +138 -0
  85. package/es/lowcode/view/lc-components/Table/index.js +60 -17
  86. package/es/lowcode/view/lc-components/Table/meta.json +15 -9
  87. package/es/lowcode/view/lc-components/Tabs/FunctionDesign.js +1 -0
  88. package/es/lowcode/view/lc-components/Tabs/index.js +3 -1
  89. package/es/lowcode/view/lc-components/Tabs/meta.json +3 -3
  90. package/es/lowcode/view/lc-components/Tree/FunctionDesign.js +2 -1
  91. package/es/lowcode/view/lc-components/Tree/index.js +60 -18
  92. package/es/lowcode/view/lc-components/Tree/meta.json +55 -7
  93. package/es/upload/FormItem/index.js +1 -4
  94. package/lib/components/LDActions/index.js +7 -9
  95. package/lib/components/LDActions/index.less +7 -4
  96. package/lib/components/LdAutoForm/index.js +7 -5
  97. package/lib/components/LdFormList/index.js +11 -3
  98. package/lib/components/LdGrid/index.js +11 -5
  99. package/lib/components/LdGridForm/index.js +4 -2
  100. package/lib/components/LdTree/index.js +30 -13
  101. package/lib/helper/form.js +8 -4
  102. package/lib/locales/zh-CN.js +15 -10
  103. package/lib/lowcode/constants/api-url.js +113 -26
  104. package/lib/lowcode/constants/event-topics.js +3 -1
  105. package/lib/lowcode/engine/meta/box.props.json +3 -3
  106. package/lib/lowcode/engine/meta/button.props.json +3 -3
  107. package/lib/lowcode/engine/meta/components-list.json +6 -0
  108. package/lib/lowcode/engine/meta/dialog.props.json +5 -5
  109. package/lib/lowcode/engine/meta/drawer.props.json +8 -20
  110. package/lib/lowcode/engine/meta/form.props.json +13 -7
  111. package/lib/lowcode/engine/meta/imex.props.default.json +8 -1
  112. package/lib/lowcode/engine/meta/imex.props.json +54 -22
  113. package/lib/lowcode/engine/meta/js-editor/auto-complete.json +53 -3
  114. package/lib/lowcode/engine/meta/layout.props.json +2 -2
  115. package/lib/lowcode/engine/meta/page.props.json +2 -2
  116. package/lib/lowcode/engine/meta/pagelayout.props.default.json +14 -0
  117. package/lib/lowcode/engine/meta/pagelayout.props.json +47 -0
  118. package/lib/lowcode/engine/meta/section.props.json +2 -2
  119. package/lib/lowcode/engine/meta/split.props.default.json +1 -1
  120. package/lib/lowcode/engine/meta/split.props.json +4 -4
  121. package/lib/lowcode/engine/meta/table.props.json +15 -9
  122. package/lib/lowcode/engine/meta/tabs.props.json +3 -3
  123. package/lib/lowcode/engine/meta/tree.props.default.json +1 -0
  124. package/lib/lowcode/engine/meta/tree.props.json +55 -6
  125. package/lib/lowcode/engine/provider/ContextProvider/index.js +11 -2
  126. package/lib/lowcode/engine/provider/RemoteSourceProvider.js +54 -5
  127. package/lib/lowcode/engine/tools/dataProcess.js +4 -0
  128. package/lib/lowcode/engine/tools/usePageDataStore.js +4 -2
  129. package/lib/lowcode/painter/DesignOperator.js +1 -1
  130. package/lib/lowcode/painter/DesignToolbar.js +2 -1
  131. package/lib/lowcode/painter/Panel.js +3 -3
  132. package/lib/lowcode/painter/components/ActionBindModal.js +23 -11
  133. package/lib/lowcode/painter/components/AdvancePanel.js +6 -1
  134. package/lib/lowcode/painter/components/AttrsPanel.js +12 -10
  135. package/lib/lowcode/painter/components/field-setting/CheckFrontRules.js +116 -0
  136. package/lib/lowcode/painter/components/field-setting/CheckRules.js +1 -26
  137. package/lib/lowcode/painter/components/field-setting/FieldRulesModal.js +34 -13
  138. package/lib/lowcode/painter/components/field-setting/SettingUI.js +153 -21
  139. package/lib/lowcode/painter/components/field-setting/index.js +32 -63
  140. package/lib/lowcode/painter/components/field-setting/meta/frontRules.js +59 -0
  141. package/lib/lowcode/painter/panel-section/BlocksEditor/index.js +6 -9
  142. package/lib/lowcode/painter/panel-section/FieldsSetting.js +53 -12
  143. package/lib/lowcode/painter/panel-section/ImpExp.js +92 -5
  144. package/lib/lowcode/painter/panel-section/ImpExpAlone.js +115 -0
  145. package/lib/lowcode/painter/panel-section/PageLayoutDisplay.js +103 -0
  146. package/lib/lowcode/painter/panel-section/SplitDisplay.js +24 -109
  147. package/lib/lowcode/painter/panel-section/StylePanel/index.js +10 -4
  148. package/lib/lowcode/painter/style/action-bind-modal.less +3 -3
  149. package/lib/lowcode/painter/style/page-layout-display.less +28 -0
  150. package/lib/lowcode/painter/style/split-display.less +0 -9
  151. package/lib/lowcode/preview/index.js +4 -2
  152. package/lib/lowcode/view/lc-components/Box/FunctionDesign.js +3 -2
  153. package/lib/lowcode/view/lc-components/Box/meta.json +3 -3
  154. package/lib/lowcode/view/lc-components/Button/index.js +2 -6
  155. package/lib/lowcode/view/lc-components/Button/meta.json +3 -3
  156. package/lib/lowcode/view/lc-components/Dialog/index.js +29 -4
  157. package/lib/lowcode/view/lc-components/Dialog/meta.json +5 -5
  158. package/lib/lowcode/view/lc-components/Drawer/meta.json +8 -20
  159. package/lib/lowcode/view/lc-components/Form/FunctionPreview.js +8 -1
  160. package/lib/lowcode/view/lc-components/Form/index.js +96 -18
  161. package/lib/lowcode/view/lc-components/Form/meta.json +13 -7
  162. package/lib/lowcode/view/lc-components/ImEx/FunctionDesign.js +8 -3
  163. package/lib/lowcode/view/lc-components/ImEx/index.js +257 -8
  164. package/lib/lowcode/view/lc-components/ImEx/index.less +7 -0
  165. package/lib/lowcode/view/lc-components/ImEx/meta.json +55 -23
  166. package/lib/lowcode/view/lc-components/Layout/meta.json +2 -2
  167. package/lib/lowcode/view/lc-components/Page/meta.json +2 -2
  168. package/lib/lowcode/view/lc-components/PageLayout/FunctionDesign.js +71 -0
  169. package/lib/lowcode/view/lc-components/PageLayout/FunctionLive.js +17 -0
  170. package/lib/lowcode/view/lc-components/PageLayout/FunctionPreview.js +17 -0
  171. package/lib/lowcode/view/lc-components/PageLayout/index.js +40 -0
  172. package/lib/lowcode/view/lc-components/PageLayout/meta.json +47 -0
  173. package/lib/lowcode/view/lc-components/Section/meta.json +2 -2
  174. package/lib/lowcode/view/lc-components/Split/FunctionDesign.js +12 -6
  175. package/lib/lowcode/view/lc-components/Split/index.js +2 -6
  176. package/lib/lowcode/view/lc-components/Split/meta.json +4 -4
  177. package/lib/lowcode/view/lc-components/Table/components/TopImex.js +145 -0
  178. package/lib/lowcode/view/lc-components/Table/index.js +59 -16
  179. package/lib/lowcode/view/lc-components/Table/meta.json +15 -9
  180. package/lib/lowcode/view/lc-components/Tabs/FunctionDesign.js +3 -2
  181. package/lib/lowcode/view/lc-components/Tabs/index.js +3 -1
  182. package/lib/lowcode/view/lc-components/Tabs/meta.json +3 -3
  183. package/lib/lowcode/view/lc-components/Tree/FunctionDesign.js +2 -1
  184. package/lib/lowcode/view/lc-components/Tree/index.js +58 -16
  185. package/lib/lowcode/view/lc-components/Tree/meta.json +55 -7
  186. package/lib/upload/FormItem/index.js +1 -4
  187. package/package.json +2 -2
@@ -0,0 +1,108 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import React, { useRef, useImperativeHandle, useState } from 'react';
3
+ import { useMount, useCreation } from 'ahooks';
4
+ import { keyBy } from 'lodash';
5
+ import { Form, Row, Col, Select } from 'luck-design/antd';
6
+ import styled from 'styled-components';
7
+ import { formatMessage } from '@luck-design-biz/base/utils';
8
+ import { JSEditor } from "../code-editor";
9
+ import { getFrontRules } from "./meta/frontRules";
10
+ var _I18N_PREFIX_ = 'luckda.lowcode.painter.panel-section.fieldsSetting.checkRules';
11
+ var FormItem = styled(Form.Item).withConfig({
12
+ displayName: "FormItem",
13
+ componentId: "luckda-6530__sc-d9mrmm-0"
14
+ })(["margin-bottom:0;"]);
15
+ var CheckRules = function CheckRules(_ref) {
16
+ var form = _ref.form,
17
+ fields = _ref.fields,
18
+ rule = _ref.rule,
19
+ fieldData = _ref.fieldData,
20
+ ruleRef = _ref.ruleRef;
21
+ var _useState = useState(),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ verifyType = _useState2[0],
24
+ setVerifyType = _useState2[1];
25
+ var _useState3 = useState(''),
26
+ _useState4 = _slicedToArray(_useState3, 2),
27
+ expression = _useState4[0],
28
+ setExpression = _useState4[1];
29
+ var jsRef = useRef();
30
+ useImperativeHandle(ruleRef, function () {
31
+ return jsRef.current;
32
+ });
33
+ useMount(function () {
34
+ if (rule.uid) {
35
+ form.setFieldsValue({
36
+ verifyType: rule.verifyType
37
+ });
38
+ setExpression(rule.expression);
39
+ } else {
40
+ var defaultType = getFrontRules(fieldData.property)[0].key;
41
+ form.setFieldsValue({
42
+ verifyType: defaultType
43
+ });
44
+ setVerifyType(defaultType);
45
+ }
46
+ });
47
+ var frontRulesObj = useCreation(function () {
48
+ return keyBy(getFrontRules(fieldData.property), 'key');
49
+ }, []);
50
+ var frontRule = useCreation(function () {
51
+ var _frontRulesObj$verify;
52
+ setExpression(((_frontRulesObj$verify = frontRulesObj[verifyType]) === null || _frontRulesObj$verify === void 0 ? void 0 : _frontRulesObj$verify.defaultCode) || '');
53
+ if (verifyType) return frontRulesObj[verifyType];
54
+ return {
55
+ noCode: false
56
+ };
57
+ }, [verifyType]);
58
+ return /*#__PURE__*/React.createElement(Form, {
59
+ layout: "vertical"
60
+ }, /*#__PURE__*/React.createElement(Row, {
61
+ gutter: 8
62
+ }, /*#__PURE__*/React.createElement(Col, {
63
+ span: 24
64
+ }, /*#__PURE__*/React.createElement(FormItem, {
65
+ label: formatMessage({
66
+ id: "".concat(_I18N_PREFIX_, ".verifyType"),
67
+ label: '校验规则'
68
+ })
69
+ }, form.getFieldDecorator('verifyType', {
70
+ rules: [{
71
+ required: true,
72
+ message: formatMessage({
73
+ id: "".concat(_I18N_PREFIX_, ".message.verifyType"),
74
+ label: '请选择校验规则'
75
+ })
76
+ }]
77
+ })( /*#__PURE__*/React.createElement(Select, {
78
+ onChange: function onChange(val) {
79
+ console.log('setVerifyType');
80
+ setVerifyType(val);
81
+ }
82
+ }, getFrontRules(fieldData.property).map(function (rule) {
83
+ return /*#__PURE__*/React.createElement(Option, {
84
+ key: rule.key,
85
+ value: rule.key
86
+ }, rule.label);
87
+ }))))), !frontRule.noCode && /*#__PURE__*/React.createElement(Col, {
88
+ span: 24
89
+ }, /*#__PURE__*/React.createElement("span", {
90
+ style: {
91
+ fontSize: '14px',
92
+ marginBottom: '16px',
93
+ color: 'rgba(0, 0, 0, 0.85)'
94
+ }
95
+ }, formatMessage({
96
+ id: "".concat(_I18N_PREFIX_, ".logic"),
97
+ label: '校验逻辑'
98
+ })), /*#__PURE__*/React.createElement(JSEditor, {
99
+ style: {
100
+ height: '300px',
101
+ border: '1px solid rgb(217, 217, 217)',
102
+ borderRadius: '4px',
103
+ padding: '12px'
104
+ },
105
+ ref: jsRef
106
+ }, expression))));
107
+ };
108
+ export default CheckRules;
@@ -29,7 +29,7 @@ var CheckRules = function CheckRules(_ref) {
29
29
  }, /*#__PURE__*/React.createElement(Row, {
30
30
  gutter: 8
31
31
  }, /*#__PURE__*/React.createElement(Col, {
32
- span: 12
32
+ span: 24
33
33
  }, /*#__PURE__*/React.createElement(FormItem, {
34
34
  label: formatMessage({
35
35
  id: "".concat(_I18N_PREFIX_, ".verifyType"),
@@ -50,31 +50,6 @@ var CheckRules = function CheckRules(_ref) {
50
50
  }, val));
51
51
  return types;
52
52
  }, []))))), /*#__PURE__*/React.createElement(Col, {
53
- span: 12
54
- }, /*#__PURE__*/React.createElement(FormItem, {
55
- label: formatMessage({
56
- id: "".concat(_I18N_PREFIX_, ".verifyScope"),
57
- label: '校验类型'
58
- })
59
- }, form.getFieldDecorator('verifyScope', {
60
- rules: [{
61
- required: true,
62
- message: formatMessage({
63
- id: "".concat(_I18N_PREFIX_, ".message.verifyScope"),
64
- label: '请选择校验类型'
65
- })
66
- }]
67
- })( /*#__PURE__*/React.createElement(Select, null, /*#__PURE__*/React.createElement(Option, {
68
- value: 0
69
- }, formatMessage({
70
- id: "".concat(_I18N_PREFIX_, ".frontend"),
71
- label: '前端'
72
- })), /*#__PURE__*/React.createElement(Option, {
73
- value: 1
74
- }, formatMessage({
75
- id: "".concat(_I18N_PREFIX_, ".backend"),
76
- label: '后端'
77
- })))))), /*#__PURE__*/React.createElement(Col, {
78
53
  span: 24
79
54
  }, /*#__PURE__*/React.createElement(FormItem, {
80
55
  label: formatMessage({
@@ -2,12 +2,15 @@ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
2
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
3
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
4
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
5
- import React from 'react';
5
+ import React, { useRef } from 'react';
6
6
  import { useMemoizedFn, useBoolean } from 'ahooks';
7
7
  import { Modal, Form } from 'luck-design/antd';
8
+ import { formatMessage } from '@luck-design-biz/base/utils';
8
9
  import CheckRules from "./CheckRules";
10
+ import CheckFrontRules from "./CheckFrontRules";
9
11
  import { fetchAddFieldAttrs, fetchUpdateFieldAttrs } from "../../../constants/api-url";
10
12
  import { FIELD_SCOPES } from "../../../constants";
13
+ var _I18N_PREFIX_ = 'luckda.lowcode.painter.panel-section.fieldsSetting';
11
14
  var FieldRulesModal = Form.create({
12
15
  name: 'field-rules-form'
13
16
  })(function (_ref) {
@@ -27,6 +30,7 @@ var FieldRulesModal = Form.create({
27
30
  _useBoolean2$ = _useBoolean2[1],
28
31
  setTrue = _useBoolean2$.setTrue,
29
32
  setFalse = _useBoolean2$.setFalse;
33
+ var frontRuleRef = useRef();
30
34
  var handleOk = useMemoizedFn( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
31
35
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
32
36
  while (1) switch (_context2.prev = _context2.next) {
@@ -34,7 +38,8 @@ var FieldRulesModal = Form.create({
34
38
  setTrue();
35
39
  form.validateFields( /*#__PURE__*/function () {
36
40
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(err, vals) {
37
- var request, data, _yield$request, code;
41
+ var _frontRuleRef$current;
42
+ var request, data, expression, _val, _yield$request, code;
38
43
  return _regeneratorRuntime().wrap(function _callee$(_context) {
39
44
  while (1) switch (_context.prev = _context.next) {
40
45
  case 0:
@@ -48,29 +53,35 @@ var FieldRulesModal = Form.create({
48
53
  data = {
49
54
  scope: FIELD_SCOPES.CHECK_RULES
50
55
  };
56
+ expression = (_frontRuleRef$current = frontRuleRef.current) === null || _frontRuleRef$current === void 0 ? void 0 : _frontRuleRef$current.editor.getValue();
57
+ _val = expression ? _objectSpread(_objectSpread({}, vals), {}, {
58
+ expression: expression
59
+ }) : vals;
51
60
  if (rule.uid) {
52
- data.ccmModuleFieldVerifies = [_objectSpread(_objectSpread({}, vals), {}, {
53
- uid: rule.uid
61
+ data.ccmModuleFieldVerifies = [_objectSpread(_objectSpread({}, _val), {}, {
62
+ uid: rule.uid,
63
+ verifyScope: (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'front' ? 0 : 1
54
64
  })];
55
65
  } else {
56
- data.ccmModuleFieldVerifies = [_objectSpread(_objectSpread({}, vals), {}, {
57
- dataModelKey: dataModelKey
66
+ data.ccmModuleFieldVerifies = [_objectSpread(_objectSpread({}, _val), {}, {
67
+ dataModelKey: dataModelKey,
68
+ verifyScope: (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'front' ? 0 : 1
58
69
  })];
59
70
  data.dataModelKey = dataModelKey;
60
71
  data.datasetBusinessUids = [fieldData.uid];
61
72
  data.moduleDatasetUid = datasetId;
62
73
  data.moduleUid = moduleId;
63
74
  }
64
- _context.next = 7;
75
+ _context.next = 9;
65
76
  return request(data);
66
- case 7:
77
+ case 9:
67
78
  _yield$request = _context.sent;
68
79
  code = _yield$request.code;
69
80
  setFalse();
70
81
  if (code === 1) {
71
- onClose(true);
82
+ onClose(true, (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'front' ? 0 : 1);
72
83
  }
73
- case 11:
84
+ case 13:
74
85
  case "end":
75
86
  return _context.stop();
76
87
  }
@@ -87,7 +98,10 @@ var FieldRulesModal = Form.create({
87
98
  }, _callee2);
88
99
  })));
89
100
  return /*#__PURE__*/React.createElement(Modal, {
90
- title: condition === null || condition === void 0 || (_condition$FIELD_SCOP = condition[FIELD_SCOPES.CHECK_RULES]) === null || _condition$FIELD_SCOP === void 0 ? void 0 : _condition$FIELD_SCOP.scopeName,
101
+ title: (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'front' ? formatMessage({
102
+ id: "".concat(_I18N_PREFIX_, ".rules.front"),
103
+ label: '前端校验规则'
104
+ }) : condition === null || condition === void 0 || (_condition$FIELD_SCOP = condition[FIELD_SCOPES.CHECK_RULES]) === null || _condition$FIELD_SCOP === void 0 ? void 0 : _condition$FIELD_SCOP.scopeName,
91
105
  width: 800,
92
106
  visible: !!rule,
93
107
  getContainer: function getContainer() {
@@ -104,9 +118,15 @@ var FieldRulesModal = Form.create({
104
118
  },
105
119
  onOk: handleOk,
106
120
  onCancel: function onCancel() {
107
- return onClose(false);
121
+ return onClose(false, (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'front' ? 0 : 1);
108
122
  }
109
- }, /*#__PURE__*/React.createElement(CheckRules, {
123
+ }, (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'front' && /*#__PURE__*/React.createElement(CheckFrontRules, {
124
+ form: form,
125
+ rule: rule,
126
+ fields: fields,
127
+ ruleRef: frontRuleRef,
128
+ fieldData: fieldData
129
+ }), (rule === null || rule === void 0 ? void 0 : rule.ruleType) === 'back' && /*#__PURE__*/React.createElement(CheckRules, {
110
130
  form: form,
111
131
  rule: rule,
112
132
  condition: condition === null || condition === void 0 ? void 0 : condition[FIELD_SCOPES.CHECK_RULES],
@@ -1,10 +1,13 @@
1
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
2
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
5
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
6
  import React, { useState } from 'react';
4
- import { useRequest, useMemoizedFn } from 'ahooks';
5
- import { Spin, Input, Segmented, Switch, Tooltip, Icon, Radio } from 'luck-design/antd';
7
+ import { useRequest, useMemoizedFn, useCreation } from 'ahooks';
8
+ import { Spin, Input, Segmented, Switch, Tooltip, Icon, Radio, Modal } from 'luck-design/antd';
6
9
  import styled from 'styled-components';
7
- import { isArray } from 'lodash';
10
+ import { isArray, keyBy, isNil, groupBy } from 'lodash';
8
11
  import { formatMessage } from '@luck-design-biz/base/utils';
9
12
  import Collapse from "../../components/Collapse";
10
13
  import PanelItem from "../../components/PanelItem";
@@ -13,6 +16,7 @@ import WidthHeight from "../../panel-section/WidthHeight";
13
16
  import FieldAttrsModal from "./FieldAttrsModal";
14
17
  import FieldRulesModal from "./FieldRulesModal";
15
18
  import { fetchFieldCondition, fetchAttrs } from "../../../constants/api-url";
19
+ import { getFrontRules } from "./meta/frontRules";
16
20
  import { FIELD_SCOPES } from "../../../constants";
17
21
  var _I18N_PREFIX_ = 'luckda.lowcode.painter.panel-section.fieldsSetting';
18
22
  var _ALIGN_OPTIONS_ = [{
@@ -100,12 +104,16 @@ var SettingUI = function SettingUI(_ref) {
100
104
  setRules = _useState6[1];
101
105
  var _useState7 = useState(null),
102
106
  _useState8 = _slicedToArray(_useState7, 2),
103
- condition = _useState8[0],
104
- setCondition = _useState8[1];
107
+ frontRules = _useState8[0],
108
+ setFrontRules = _useState8[1];
105
109
  var _useState9 = useState(null),
106
110
  _useState10 = _slicedToArray(_useState9, 2),
107
- optionalFields = _useState10[0],
108
- setOptionalFields = _useState10[1];
111
+ condition = _useState10[0],
112
+ setCondition = _useState10[1];
113
+ var _useState11 = useState(null),
114
+ _useState12 = _slicedToArray(_useState11, 2),
115
+ optionalFields = _useState12[0],
116
+ setOptionalFields = _useState12[1];
109
117
  var fieldData = isBatch ? {} : data;
110
118
  var _useRequest = useRequest(fetchFieldCondition, {
111
119
  defaultParams: [{
@@ -131,20 +139,37 @@ var SettingUI = function SettingUI(_ref) {
131
139
  }],
132
140
  ready: !isBatch,
133
141
  refreshDeps: [fieldData.datasetFieldUid],
134
- onSuccess: function onSuccess(_ref4) {
142
+ onSuccess: function onSuccess(_ref4, _ref5) {
135
143
  var code = _ref4.code,
136
144
  list = _ref4.list,
137
145
  detail = _ref4.detail;
146
+ var _ref6 = _slicedToArray(_ref5, 1),
147
+ verifyScope = _ref6[0].verifyScope;
138
148
  if (code === 1) {
139
149
  var _detail$list$;
140
- setRules((_detail$list$ = detail[list[0]]) === null || _detail$list$ === void 0 ? void 0 : _detail$list$.ccmModuleFieldVerifies);
150
+ var _data = (_detail$list$ = detail[list[0]]) === null || _detail$list$ === void 0 ? void 0 : _detail$list$.ccmModuleFieldVerifies;
151
+ if (isNil(verifyScope)) {
152
+ var dataByGroup = groupBy(_data, 'verifyScope');
153
+ setRules(dataByGroup[1]);
154
+ setFrontRules(dataByGroup[0]);
155
+ } else if (verifyScope === 0) setFrontRules(_data);else if (verifyScope === 1) setRules(_data);
141
156
  }
142
157
  }
143
158
  }),
159
+ rulesParams = _useRequest2.params,
144
160
  rulesLoading = _useRequest2.loading,
145
- rulesRefresh = _useRequest2.refresh;
146
- var handleFieldRulesModalClose = useMemoizedFn(function (success) {
147
- success && rulesRefresh();
161
+ rulesRun = _useRequest2.run;
162
+ var rulesRefresh = function rulesRefresh() {
163
+ var newParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
164
+ return rulesRun(_objectSpread(_objectSpread({}, rulesParams[0]), newParams));
165
+ };
166
+ var propertyRules = useCreation(function () {
167
+ return keyBy(getFrontRules(fieldData.property), 'key');
168
+ }, [fieldData]);
169
+ var handleFieldRulesModalClose = useMemoizedFn(function (success, verifyScope) {
170
+ success && rulesRefresh({
171
+ verifyScope: verifyScope
172
+ });
148
173
  setRule(null);
149
174
  });
150
175
  var renderCodeIcon = useMemoizedFn(function (_stateItem, _scope) {
@@ -170,6 +195,55 @@ var SettingUI = function SettingUI(_ref) {
170
195
  }
171
196
  })));
172
197
  });
198
+ var handleDelete = useMemoizedFn( /*#__PURE__*/function () {
199
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(uid, verifyScope) {
200
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
201
+ while (1) switch (_context2.prev = _context2.next) {
202
+ case 0:
203
+ Modal.confirm({
204
+ title: formatMessage({
205
+ id: 'luckda.lowcode.painter.delete.tip',
206
+ label: '确定删除吗?'
207
+ }),
208
+ getContainer: function getContainer() {
209
+ return document.getElementById('lc-design-workspace');
210
+ },
211
+ zIndex: 1001,
212
+ onOk: function () {
213
+ var _onOk = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
214
+ var success;
215
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
216
+ while (1) switch (_context.prev = _context.next) {
217
+ case 0:
218
+ _context.next = 2;
219
+ return run('delRule', uid);
220
+ case 2:
221
+ success = _context.sent;
222
+ if (success) rulesRefresh({
223
+ verifyScope: verifyScope
224
+ });
225
+ case 4:
226
+ case "end":
227
+ return _context.stop();
228
+ }
229
+ }, _callee);
230
+ }));
231
+ function onOk() {
232
+ return _onOk.apply(this, arguments);
233
+ }
234
+ return onOk;
235
+ }()
236
+ });
237
+ case 1:
238
+ case "end":
239
+ return _context2.stop();
240
+ }
241
+ }, _callee2);
242
+ }));
243
+ return function (_x, _x2) {
244
+ return _ref7.apply(this, arguments);
245
+ };
246
+ }());
173
247
  return /*#__PURE__*/React.createElement(Spin, {
174
248
  spinning: _loading || loading || rulesLoading
175
249
  }, !isBatch ? /*#__PURE__*/React.createElement(PanelItem, {
@@ -183,7 +257,7 @@ var SettingUI = function SettingUI(_ref) {
183
257
  onChange: function onChange(e) {
184
258
  return onAliasChange(fieldData, e.target.value);
185
259
  }
186
- })) : null, (component === 'table' || component === 'tableForm') && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PanelItem, {
260
+ })) : null, ['table', 'tableForm'].includes(component) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(PanelItem, {
187
261
  label: formatMessage({
188
262
  id: "".concat(_I18N_PREFIX_, ".width"),
189
263
  label: '列宽'
@@ -327,15 +401,15 @@ var SettingUI = function SettingUI(_ref) {
327
401
  id: "".concat(_I18N_PREFIX_, ".required"),
328
402
  label: '是否必填'
329
403
  })
330
- }, renderCodeIcon(fieldRequired, FIELD_SCOPES.FIELD_REQUIRED)), 'table' === component && /*#__PURE__*/React.createElement(PanelItem, {
404
+ }, renderCodeIcon(fieldRequired, FIELD_SCOPES.FIELD_REQUIRED)), ['table', 'tableForm'].includes && /*#__PURE__*/React.createElement(PanelItem, {
331
405
  label: formatMessage({
332
- id: "".concat(_I18N_PREFIX_, ".display"),
333
- label: '是否显示'
406
+ id: "".concat(_I18N_PREFIX_, ".table.display"),
407
+ label: '表格中显示'
334
408
  })
335
- }, renderCodeIcon(fieldTable, FIELD_SCOPES.FIELD_TABLE_DISPLAY)), 'form' === component && /*#__PURE__*/React.createElement(PanelItem, {
409
+ }, renderCodeIcon(fieldTable, FIELD_SCOPES.FIELD_TABLE_DISPLAY)), ['form', 'tableForm'].includes(component) && /*#__PURE__*/React.createElement(PanelItem, {
336
410
  label: formatMessage({
337
- id: "".concat(_I18N_PREFIX_, ".display"),
338
- label: '是否显示'
411
+ id: "".concat(_I18N_PREFIX_, ".form.display"),
412
+ label: '表单中显示'
339
413
  })
340
414
  }, renderCodeIcon(fieldForm, FIELD_SCOPES.FIELD_FORM_DISPLAY)), /*#__PURE__*/React.createElement(PanelItem, {
341
415
  label: formatMessage({
@@ -362,7 +436,61 @@ var SettingUI = function SettingUI(_ref) {
362
436
  }), "\n \u3010").concat(fieldDefaultValue.expression, "\u3011") : formatMessage({
363
437
  id: 'luckda.lowcode.painter.setting',
364
438
  label: '设置'
365
- }))) : null, !isBatch ? /*#__PURE__*/React.createElement(Collapse, {
439
+ }))) : null, !isBatch ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Collapse, {
440
+ label: formatMessage({
441
+ id: "".concat(_I18N_PREFIX_, ".rules.front"),
442
+ label: '前端校验规则'
443
+ }),
444
+ bodyStyle: {
445
+ padding: '12px 16px'
446
+ }
447
+ }, /*#__PURE__*/React.createElement(ListEditor, {
448
+ addText: formatMessage({
449
+ id: "".concat(_I18N_PREFIX_, ".addRules"),
450
+ label: '添加校验规则'
451
+ }),
452
+ handleAdd: function handleAdd() {
453
+ return setRule({
454
+ ruleType: 'front'
455
+ });
456
+ }
457
+ }, frontRules === null || frontRules === void 0 ? void 0 : frontRules.map(function (_rule) {
458
+ return /*#__PURE__*/React.createElement(ListEditorItem, {
459
+ left: /*#__PURE__*/React.createElement("span", null, propertyRules[_rule.verifyType].label),
460
+ right: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tooltip, {
461
+ title: formatMessage({
462
+ id: 'luckda.lowcode.painter.edit',
463
+ label: '编辑'
464
+ })
465
+ }, /*#__PURE__*/React.createElement(Icon, {
466
+ type: "edit",
467
+ style: {
468
+ marginRight: '8px',
469
+ cursor: 'pointer'
470
+ },
471
+ onClick: function onClick() {
472
+ return setRule(_objectSpread(_objectSpread({}, _rule), {}, {
473
+ ruleType: 'front'
474
+ }));
475
+ }
476
+ })), /*#__PURE__*/React.createElement(Tooltip, {
477
+ title: formatMessage({
478
+ id: 'luckda.lowcode.painter.delete',
479
+ label: '删除'
480
+ })
481
+ }, /*#__PURE__*/React.createElement(Icon, {
482
+ type: "delete",
483
+ style: {
484
+ cursor: 'pointer'
485
+ },
486
+ onClick: function onClick() {
487
+ return handleDelete(_rule.uid, 0);
488
+ }
489
+ }))),
490
+ item: _rule,
491
+ sortable: false
492
+ });
493
+ }))), /*#__PURE__*/React.createElement(Collapse, {
366
494
  label: formatMessage({
367
495
  id: "".concat(_I18N_PREFIX_, ".rules"),
368
496
  label: '校验规则'
@@ -376,7 +504,9 @@ var SettingUI = function SettingUI(_ref) {
376
504
  label: '添加校验规则'
377
505
  }),
378
506
  handleAdd: function handleAdd() {
379
- return setRule({});
507
+ return setRule({
508
+ ruleType: 'back'
509
+ });
380
510
  }
381
511
  }, rules === null || rules === void 0 ? void 0 : rules.map(function (_rule) {
382
512
  return /*#__PURE__*/React.createElement(ListEditorItem, {
@@ -393,7 +523,9 @@ var SettingUI = function SettingUI(_ref) {
393
523
  cursor: 'pointer'
394
524
  },
395
525
  onClick: function onClick() {
396
- return setRule(_rule);
526
+ return setRule(_objectSpread(_objectSpread({}, _rule), {}, {
527
+ ruleType: 'back'
528
+ }));
397
529
  }
398
530
  })), /*#__PURE__*/React.createElement(Tooltip, {
399
531
  title: formatMessage({
@@ -406,13 +538,13 @@ var SettingUI = function SettingUI(_ref) {
406
538
  cursor: 'pointer'
407
539
  },
408
540
  onClick: function onClick() {
409
- return run('delRule', _rule.uid);
541
+ return handleDelete(_rule.uid, 1);
410
542
  }
411
543
  }))),
412
544
  item: _rule,
413
545
  sortable: false
414
546
  });
415
- }))) : null, /*#__PURE__*/React.createElement(FieldAttrsModal, {
547
+ })))) : null, /*#__PURE__*/React.createElement(FieldAttrsModal, {
416
548
  dataModelKey: dataModelKey,
417
549
  datasetId: datasetId,
418
550
  moduleId: moduleId,
@@ -211,88 +211,57 @@ var FieldSetting = function FieldSetting(_ref) {
211
211
  }),
212
212
  runDebounce = _useDebounceFn.run;
213
213
  var run = useMemoizedFn( /*#__PURE__*/function () {
214
- var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(key, val) {
215
- var mapping, _stateItem, request, c, d, _yield$request, code;
216
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
217
- while (1) switch (_context2.prev = _context2.next) {
214
+ var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(key, val) {
215
+ var _yield$fetchDelAttrs, code, mapping, _stateItem, request, c, d, _yield$request, _code;
216
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
217
+ while (1) switch (_context.prev = _context.next) {
218
218
  case 0:
219
219
  if (!(key === 'isEqual')) {
220
- _context2.next = 5;
220
+ _context.next = 5;
221
221
  break;
222
222
  }
223
- _context2.next = 3;
223
+ _context.next = 3;
224
224
  return runFetchUpdateUniqueField(_defineProperty({
225
225
  moduleDatasetUid: datasetId,
226
226
  moduleUid: moduleId
227
227
  }, val ? 'uniqueFieldUid' : 'noUniqueFieldUid', fieldData.uid));
228
228
  case 3:
229
- _context2.next = 30;
229
+ _context.next = 34;
230
230
  break;
231
231
  case 5:
232
232
  if (!(key === 'align' || key === 'headerAlign' || key === 'pinned' || key === 'tip')) {
233
- _context2.next = 9;
233
+ _context.next = 9;
234
234
  break;
235
235
  }
236
236
  handleUIChange(key, val);
237
- _context2.next = 30;
237
+ _context.next = 34;
238
238
  break;
239
239
  case 9:
240
240
  if (!(key === 'col' || key === 'row')) {
241
- _context2.next = 13;
241
+ _context.next = 13;
242
242
  break;
243
243
  }
244
244
  handleUIChange(key, val);
245
- _context2.next = 30;
245
+ _context.next = 34;
246
246
  break;
247
247
  case 13:
248
248
  if (!(key === 'delRule')) {
249
- _context2.next = 17;
249
+ _context.next = 21;
250
250
  break;
251
251
  }
252
- Modal.confirm({
253
- title: formatMessage({
254
- id: 'luckda.lowcode.painter.delete.tip',
255
- label: '确定删除吗?'
256
- }),
257
- getContainer: function getContainer() {
258
- return document.getElementById('lc-design-workspace');
259
- },
260
- zIndex: 1001,
261
- onOk: function () {
262
- var _onOk = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
263
- var _yield$fetchDelAttrs, code;
264
- return _regeneratorRuntime().wrap(function _callee$(_context) {
265
- while (1) switch (_context.prev = _context.next) {
266
- case 0:
267
- _context.next = 2;
268
- return fetchDelAttrs({
269
- moduleDatasetUid: fieldData.datasetFieldUid,
270
- ccmModuleFieldVerifies: [{
271
- uid: val
272
- }],
273
- scope: FIELD_SCOPES.CHECK_RULES
274
- });
275
- case 2:
276
- _yield$fetchDelAttrs = _context.sent;
277
- code = _yield$fetchDelAttrs.code;
278
- if (code === 1) {
279
- rulesRefresh();
280
- }
281
- case 5:
282
- case "end":
283
- return _context.stop();
284
- }
285
- }, _callee);
286
- }));
287
- function onOk() {
288
- return _onOk.apply(this, arguments);
289
- }
290
- return onOk;
291
- }()
252
+ _context.next = 16;
253
+ return fetchDelAttrs({
254
+ moduleDatasetUid: fieldData.datasetFieldUid,
255
+ ccmModuleFieldVerifies: [{
256
+ uid: val
257
+ }],
258
+ scope: FIELD_SCOPES.CHECK_RULES
292
259
  });
293
- _context2.next = 30;
294
- break;
295
- case 17:
260
+ case 16:
261
+ _yield$fetchDelAttrs = _context.sent;
262
+ code = _yield$fetchDelAttrs.code;
263
+ return _context.abrupt("return", code === 1);
264
+ case 21:
296
265
  mapping = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FIELD_SCOPES.FIELD_REQUIRED, {
297
266
  key: 'fieldRequired',
298
267
  refresh: requiredRefresh
@@ -328,19 +297,19 @@ var FieldSetting = function FieldSetting(_ref) {
328
297
  if (!_stateItem) {
329
298
  d.datasetBusinessUids = [fieldData.uid];
330
299
  }
331
- _context2.next = 27;
300
+ _context.next = 31;
332
301
  return request(d);
333
- case 27:
334
- _yield$request = _context2.sent;
335
- code = _yield$request.code;
336
- if (code === 1) {
302
+ case 31:
303
+ _yield$request = _context.sent;
304
+ _code = _yield$request.code;
305
+ if (_code === 1) {
337
306
  mapping[key].refresh();
338
307
  }
339
- case 30:
308
+ case 34:
340
309
  case "end":
341
- return _context2.stop();
310
+ return _context.stop();
342
311
  }
343
- }, _callee2);
312
+ }, _callee);
344
313
  }));
345
314
  return function (_x, _x2) {
346
315
  return _ref8.apply(this, arguments);