Commit ac7c1ea51b0250e5b4d2951b6c7581106359200a

Authored by 陈洋
1 parent 7c35ecb7

feat: 表单参数 添加选择列表

... ... @@ -35,10 +35,11 @@
35 35 .qx-field-setter {
36 36 display: flex;
37 37 width: 100%;
38   - background-color: transparent;
39 38 border: 1px solid @N4;
40 39 border-radius: 4px;
41 40 min-height: 32px;
  41 + box-sizing: border-box;
  42 + background-color: transparent;
42 43
43 44 &__icon-text {
44 45 color: @N9;
... ... @@ -64,48 +65,62 @@
64 65 border-radius: 4px 0 0 4px;
65 66 box-sizing: border-box;
66 67 }
  68 +
67 69 .ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
68 70 padding: 0 4px 0 8px;
69 71 }
  72 +
70 73 .ant-picker {
71 74 padding: 4px 8px;
72 75 }
  76 +
73 77 .ant-input-number-input {
74 78 padding: 0 8px;
75 79 line-height: 30px;
76 80 }
  81 +
77 82 .ant-select.select.qx-filter-select {
78   - width: calc(100% - 24px);
  83 + width: calc(100% - 32px);
79 84 padding: 0;
80 85 .ant-select-selector {
  86 + border-radius: 6px 0 0 6px;
  87 + }
  88 +
  89 + .ant-select-selector {
81 90 min-height: 32px;
82 91 padding: 0 4px 4px 8px;
83 92 }
  93 +
84 94 .ant-select-selection-overflow-item {
85 95 height: 28px;
86 96 }
  97 +
87 98 .ant-select-selection-placeholder {
88 99 left: 8px;
89 100 }
  101 +
90 102 .ant-select-selection-overflow-item-suffix {
91 103 padding-top: 4px;
92 104 }
93 105 }
94 106
95 107 .ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input)
96   - .ant-select-selector {
  108 + .ant-select-selector {
97 109 box-shadow: none;
98 110 }
  111 +
99 112 .ant-picker {
100 113 padding: 4px 8px;
101 114 }
102 115
103 116 .ant-tag {
104 117 font-size: 14px;
  118 +
105 119 .anticon + span {
106 120 margin-left: 0;
107 121 }
108 122 }
  123 +
109 124 // todo 目前表单名字过长导致页面变形
110 125 .qx-tags-input.ant-input .ant-tag,
111 126 .tag.qx-select-tag {
... ... @@ -131,10 +146,12 @@
131 146 font-size: 8px;
132 147 }
133 148 }
  149 +
134 150 .qx-tags-input__box {
135 151 margin-top: 4px;
136 152 padding-left: 0;
137 153 }
  154 +
138 155 .qx-tags-input.ant-input > .ant-tag:first-child {
139 156 margin-left: unset;
140 157 }
... ...
1 1 ### 选择表单
2 2
3 3 ```tsx
4   -import { request } from '@qx/common';
  4 +import { request, QxFormSelect } from '@qx/common';
5 5 import React, { useState } from 'react';
6   -import { QxFormSelect } from './index';
7 6
8 7 export default () => {
9 8 const [value, setValue] = useState({});
... ...
... ... @@ -80,11 +80,12 @@ export const QxFormSelect: React.FC<FormSelectProps> = (props) => {
80 80 ),
81 81 }}
82 82 disabled={disabled}
  83 + popupOnBody={props?.popupOnBody}
83 84 />
84 85
85 86 {state.modalVisible ? (
86 87 <QxAppSelector
87   - title={title || placeholder || "选择数据源"}
  88 + title={title || placeholder || '选择数据源'}
88 89 item={{
89 90 flag: 'SINGLE',
90 91 currentId: '',
... ... @@ -113,6 +114,7 @@ interface FormSelectProps extends InputSelectProps {
113 114 appId?: string;
114 115 request?: any;
115 116 disabled?: boolean;
  117 + popupOnBody?: boolean;
116 118 }
117 119 interface FormSelectState {
118 120 visible: boolean;
... ...
... ... @@ -73,7 +73,13 @@ export const QxInputSelect = React.forwardRef<any, InputSelectProps>(
73 73 {...dropdownProps}
74 74 />
75 75 )}
76   - getPopupContainer={(triggerNode) => triggerNode}
  76 + getPopupContainer={(triggerNode) => {
  77 + if (props?.popupOnBody) {
  78 + return document.body;
  79 + } else {
  80 + return triggerNode;
  81 + }
  82 + }}
77 83 onOpenChange={onVisibleChange}
78 84 disabled={disabled}
79 85 >
... ... @@ -96,6 +102,7 @@ export interface InputSelectProps extends Omit<InputProps, 'onChange'> {
96 102 options?: DropdownContentOptions[];
97 103 dropdownProps?: DropdownContentProps;
98 104 disabled?: boolean;
  105 + popupOnBody?: boolean;
99 106 }
100 107 export interface InputSelectState {
101 108 visible: boolean;
... ...
1 1 /* eslint-disable array-callback-return */
2 2 /* eslint-disable eqeqeq */
3 3 import {
4   - DeleteOutlined,
5   - PlusOutlined,
6   - SisternodeOutlined,
7 4 SnippetsOutlined,
8 5 } from '@ant-design/icons';
9 6 import {
... ... @@ -30,7 +27,7 @@ import React, {
30 27 } from 'react';
31 28 import JSONEditor from './codeMirror';
32 29 import './style.less';
33   -import { QxFieldSetter } from '@qx/common';
  30 +import { QxFieldSetter, QxFormSelect, ValueOptionProps } from '@qx/common';
34 31 import { formatEnum } from './constant';
35 32 import {
36 33 typeTranslateFieIdtype,
... ... @@ -39,11 +36,10 @@ import {
39 36 typeTranslateItemtype,
40 37 } from './constant';
41 38 // import { Controlled as CodeMirror } from 'react-codemirror2'
42   -import { cloneDeep, debounce } from 'lodash-es';
43   -import _ from 'lodash';
  39 +import { cloneDeep, debounce, isEmpty } from 'lodash-es';
44 40 import moment from 'dayjs';
45 41 import { QxBaseIcon } from '@qx/common';
46   -
  42 +import Icon from '@ant-design/icons';
47 43 const valueOptions = [
48 44 { key: 'STRING', title: '文本' },
49 45 { key: 'NUMBER', title: '数字' },
... ... @@ -58,6 +54,8 @@ const valueOptions = [
58 54 { key: 'ORG', title: '部门' },
59 55 ];
60 56
  57 +import { ReactComponent as SubNodeIcon } from './sub-node.svg';
  58 +
61 59 const timeFormat = [
62 60 { lable: '年', value: 'YEAR' },
63 61 { lable: '年-月', value: 'YEAR_MONTH' },
... ... @@ -77,9 +75,11 @@ interface ParameterSettingProps {
77 75 handleChangeField: (val?: any, data?: any) => void;
78 76 handleChange: (e?: any, data?: any, code?: string) => void;
79 77 handleDrop: (val: any) => void;
80   - handleAddtree: (val: any) => void;
  78 + handleAddTree: (val: any) => void;
81 79 handleAdd: (val: any) => void;
82 80 handleDelete: (val: any) => void;
  81 + appFormList?: any[]; // 当前应用表单list
  82 + request?: any,
83 83 }
84 84 const EditableContext = React.createContext<FormInstance<any> | null>(null);
85 85
... ... @@ -115,7 +115,7 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
115 115 handleCancel,
116 116 handleDrop,
117 117 handleAdd,
118   - handleAddtree,
  118 + handleAddTree,
119 119 handleDelete,
120 120 handleChange,
121 121 handleChangeField,
... ... @@ -139,7 +139,7 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
139 139 };
140 140
141 141 const checkShowTree = (_data: any) => {
142   - console.log('_data', _data)
  142 + // console.log('_data', _data)
143 143 if (_data.type == 'ARRAY') {
144 144 if (_data.child && _data.child.length > 0) {
145 145 return false;
... ... @@ -243,36 +243,33 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
243 243 dataIndex: 'qxProps',
244 244 editable: true,
245 245 key: 'qxProps',
246   - render: (text, record) => (
247   - <div key={record.id}>
248   - <span>
249   - {record.type == 'TIME'
250   - ? moment(text?.min).format(
251   - formatEnum[text?.format] || 'YYYY-MM-DD',
252   - )
253   - : text?.min}
254   - </span>
255   - {text?.min && (
256   - <Space style={{ marginLeft: 5, marginRight: 5 }}>-</Space>
257   - )}
258   - <span>
259   - {record.type == 'TIME'
260   - ? moment(text?.max).format(
261   - formatEnum[text?.format] || 'YYYY-MM-DD',
262   - )
263   - : text?.max}
264   - </span>
265   - </div>
266   - // <Form.Item
267   - // name={'qxProps' + record.id}
268   - // >
269   - // <>
270   - // <Input disabled={record.disabled} defaultValue={text?.min} onBlur={(e) => props.handleChange(e, record, 'qxProps-min')} style={{ width: '45%' }} />
271   - // &nbsp; - &nbsp;
272   - // <Input disabled={record.disabled} defaultValue={text?.max} onBlur={(e) => props.handleChange(e, record, 'qxProps-max')} style={{ width: '45%' }} />
273   - // </>
274   - // </Form.Item>
275   - ),
  246 + render: (text: any, record: any) => {
  247 + console.log('record ====', record);
  248 + console.log('text ====', text);
  249 + return (
  250 + <>
  251 + {record.type === 'FORM' ? <>
  252 + <div key={record.id}>
  253 + <span>
  254 + {text?.name}
  255 + </span>
  256 + </div>
  257 + </> : <>
  258 + <div key={record.id}>
  259 + <span>{record.type == 'TIME' ? moment(text?.min).format(
  260 + formatEnum[text?.format] || 'YYYY-MM-DD',) : text?.min}
  261 + </span>
  262 + {text?.min && (
  263 + <Space style={{marginLeft: 5, marginRight: 5}}>-</Space>
  264 + )}
  265 + <span>{record.type == 'TIME' ? moment(text?.max).format(
  266 + formatEnum[text?.format] || 'YYYY-MM-DD',) : text?.max}
  267 + </span>
  268 + </div>
  269 + </>}
  270 + </>
  271 + )
  272 + },
276 273 },
277 274 {
278 275 title: '必填',
... ... @@ -343,26 +340,29 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
343 340 <Space size="small">
344 341 {isShowAdd && (
345 342 <Button
  343 + size={'small'}
346 344 type="link"
347 345 disabled={record.disabled}
348   - icon={<PlusOutlined />}
  346 + icon={<QxBaseIcon style={{fontSize: 16}} type={'qx-icon-plus'} />}
349 347 onClick={() => handleAdd(record.pid)}
350 348 />
351 349 )}
352 350 {(record.type === 'OBJECT' || record.type === 'ARRAY') &&
353 351 isShowTree && (
354 352 <Button
  353 + size={'small'}
355 354 type="link"
356 355 disabled={record.disabled}
357   - icon={<SisternodeOutlined />}
358   - onClick={() => handleAddtree(record.id)}
  356 + icon={<Icon style={{fontSize: 16}} component={SubNodeIcon} />}
  357 + onClick={() => handleAddTree(record.id)}
359 358 />
360 359 )}
361 360 <Button
  361 + size={'small'}
362 362 type="link"
363 363 className="btn-high-del"
364 364 disabled={record.disabled}
365   - icon={<DeleteOutlined />}
  365 + icon={<QxBaseIcon style={{fontSize: 16}} className={'title-btn-del-btn'} type={'qx-icon-delete'} />}
366 366 onClick={() => handleDelete(record)}
367 367 />
368 368 </Space>
... ... @@ -648,6 +648,28 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
648 648 </Select>
649 649 </div>
650 650 );
  651 + case 'FORM':
  652 + return (
  653 + <div
  654 + key={record.id}
  655 + ref={inputRef}
  656 + className="editable-around-cell"
  657 + onBlur={(e) => toggleEdit1(e)} tabIndex={
  658 + 0
  659 + }
  660 + >
  661 + <QxFormSelect
  662 + value={qxProps}
  663 + request={props?.request}
  664 + options={props?.appFormList}
  665 + placeholder={'选择表单'}
  666 + popupOnBody={true}
  667 + onChange={(val: any) => {
  668 + props.handleChange(val, record, 'qxProps');
  669 + }}
  670 + />
  671 + </div>
  672 + );
651 673 default:
652 674 return (
653 675 <div
... ... @@ -678,7 +700,7 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
678 700 };
679 701
680 702 const handleField = (val) => {
681   - if (!val || _.isEmpty(val)) {
  703 + if (!val || isEmpty(val)) {
682 704 return;
683 705 }
684 706 if (val[0].extVal) {
... ... @@ -1041,8 +1063,8 @@ const ParameterModal: React.FC<ParameterSettingProps> = (props) => {
1041 1063 ) : (
1042 1064 <Row>
1043 1065 <Col span={12}>
1044   - <Button type="link" onClick={() => onOpen()}>
1045   - {'</>JSON参数设置'}
  1066 + <Button type="link" icon={<QxBaseIcon style={{fontSize: 16}} type={'qx-icon-flow-code'} />} onClick={() => onOpen()}>
  1067 + JSON参数设置
1046 1068 </Button>
1047 1069 </Col>
1048 1070 <Col
... ...
1 1 /* eslint-disable eqeqeq */
2 2 /* eslint-disable array-callback-return */
3 3 import React, { useCallback, useEffect, useState } from 'react';
4   -// import type { FRWidgetProps } from '@/packages/qx-form-generator/src';
5   -import {
6   - DeleteOutlined,
7   - PlusOutlined,
8   - SettingOutlined,
9   -} from '@ant-design/icons';
10 4 import {
11 5 Button,
12 6 Dropdown,
... ... @@ -17,6 +11,7 @@ import {
17 11 Tree,
18 12 message,
19 13 } from 'antd';
  14 +import Icon from '@ant-design/icons';
20 15 import type { TreeProps } from 'antd/lib/tree';
21 16 import ParameterModal from './ParameterModal';
22 17 import { formatEnum } from './constant';
... ... @@ -36,6 +31,8 @@ import { QxFieldSetter, QxBaseIcon } from '@qx/common';
36 31
37 32 import './style.less';
38 33
  34 +import { ReactComponent as SubNodeIcon } from './sub-node.svg';
  35 +
39 36 const valueOptions = [
40 37 { key: 'STRING', label: '文本' },
41 38 { key: 'NUMBER', label: '数字' },
... ... @@ -70,12 +67,13 @@ interface ParameterSettingProps {
70 67 onChange: (val: any) => void;
71 68 value: any;
72 69 isHideSearch?: boolean; //是否隐藏搜索框
73   - isShowTitle?: boolean; //是否显示左侧标题
74   - isShowField?: boolean; //是否显示下部默认值组件
75   - title?: string;
  70 + isShowField?: boolean; // 是否显示下部默认值组件
  71 + title?: React.ReactNode; // 左侧标题
76 72 // component?: any;
77 73 // componentItem?: any;
78 74 // comHandleChange?: (val: any) => void;
  75 + appFormList?: any[]; // 当前应用表单list
  76 + request?: any,
79 77 }
80 78
81 79 export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
... ... @@ -451,7 +449,7 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
451 449 };
452 450
453 451 //增加子节点
454   - const onAddtree = (key: string) => {
  452 + const onAddTree = (key: string) => {
455 453 function addNode(pid: string, data: any) {
456 454 data.forEach((item) => {
457 455 const id = uidGen();
... ... @@ -623,18 +621,18 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
623 621 {(nodeData.type === 'OBJECT' || nodeData.type === 'ARRAY') &&
624 622 isShowTree && (
625 623 <Button
626   - icon={<PlusOutlined />}
  624 + icon={<Icon component={SubNodeIcon} />}
627 625 disabled={disabled}
628   - type="text"
  626 + type="link"
629 627 className="title-btn"
630   - onClick={() => onAddtree(nodeData.id)}
  628 + onClick={() => onAddTree(nodeData.id)}
631 629 />
632 630 )}
633 631 <Button
634 632 className="title-btn-del"
635   - icon={<DeleteOutlined />}
  633 + icon={<QxBaseIcon className={'title-btn-del-btn'} type={'qx-icon-delete'} />}
636 634 disabled={disabled}
637   - type="text"
  635 + type="link"
638 636 onClick={() => deleteParameter(nodeData)}
639 637 />
640 638 </div>
... ... @@ -702,18 +700,28 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
702 700 />
703 701 )}
704 702 >
705   - <Button type={'link'}>
706   - <PlusOutlined />
  703 + <Button
  704 + size={'small'}
  705 + type={'link'}
  706 + style={{
  707 + padding: '0 0 0 8px',
  708 + }}
  709 + >
  710 + <QxBaseIcon style={{fontSize: '16px'}} type={'qx-icon-plus'} />
707 711 添加参数
708 712 </Button>
709 713 </Dropdown>
710 714 <Button
  715 + size={'small'}
711 716 type={'link'}
  717 + style={{
  718 + padding: '0 0 0 12px',
  719 + }}
712 720 onClick={() => {
713 721 openModal();
714 722 }}
715 723 >
716   - <SettingOutlined />
  724 + <QxBaseIcon style={{fontSize: '16px'}} type={'icon-app-terminal-box-line'} />
717 725 高级设置
718 726 </Button>
719 727 </div>
... ... @@ -725,9 +733,9 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
725 733 onChange={onChange}
726 734 />
727 735 )}
728   - {props.isShowTitle && (
729   - <div style={{ overflow: 'hidden', textOverflow: 'ellipsis' }}>
730   - <span style={{ fontSize: '18px' }}>{props.title}</span>
  736 + {props.isHideSearch && !!props.title && (
  737 + <div className={'header-title'}>
  738 + {props.title}
731 739 </div>
732 740 )}
733 741 </div>
... ... @@ -749,8 +757,6 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
749 757 onDrop={onDrop}
750 758 draggable
751 759 blockNode
752   - selectable
753   - checkStrictly={true} //??这是啥意思
754 760 expandedKeys={expandedKeys ? expandedKeys : defaultExpandedKeys}
755 761 autoExpandParent={autoExpandParent}
756 762 onExpand={onExpand}
... ... @@ -769,8 +775,10 @@ export const QxParameterSetting: React.FC<ParameterSettingProps> = (props) => {
769 775 handleDelete={deleteParameter}
770 776 handleChange={handleChange}
771 777 handleDrop={handleDrop}
772   - handleAddtree={onAddtree}
  778 + handleAddTree={onAddTree}
773 779 visible={visible}
  780 + request={props?.request}
  781 + appFormList={props?.appFormList}
774 782 />
775 783 </div>
776 784 );
... ...
  1 +export const appFormList = [
  2 + {
  3 + name: '地址',
  4 + code: 'UdXaoSj9EHYr3wZL253',
  5 + extract: {
  6 + code: 'o72gf',
  7 + isTree: false,
  8 + appName: 'LT-表单',
  9 + type: 'form',
  10 + },
  11 + },
  12 + {
  13 + name: '测试关联记录按钮',
  14 + code: 'ZRLa6NjJ98u3lFVLSur',
  15 + extract: {
  16 + code: 'vwxxw',
  17 + isTree: false,
  18 + appName: 'LT-表单',
  19 + type: 'form',
  20 + },
  21 + },
  22 + {
  23 + name: '测试关联记录权限',
  24 + code: 'SRqC0JJmcjKquqnn228',
  25 + extract: {
  26 + code: '60jte',
  27 + isTree: false,
  28 + appName: 'LT-表单',
  29 + type: 'form',
  30 + },
  31 + },
  32 + {
  33 + name: '子表',
  34 + code: 'GYsqE8yphn1amjVM2OY',
  35 + extract: {
  36 + code: 'oi0d2',
  37 + isTree: false,
  38 + appName: 'LT-表单',
  39 + type: 'form',
  40 + },
  41 + },
  42 + {
  43 + name: '关联基础',
  44 + code: '2wN04K7nF0fHjRbOAvu',
  45 + extract: {
  46 + code: '0jpbl',
  47 + isTree: false,
  48 + appName: 'LT-表单',
  49 + type: 'form',
  50 + },
  51 + },
  52 + {
  53 + name: '关联记录',
  54 + code: 's6k5W5aovjtiU7kvqVl',
  55 + extract: {
  56 + code: 'zbynu',
  57 + isTree: false,
  58 + appName: 'LT-表单',
  59 + type: 'form',
  60 + },
  61 + },
  62 + {
  63 + name: '关联记录-关联记录',
  64 + code: 'hfbs4k6Lbs4WV7tOept',
  65 + extract: {
  66 + code: 'fz7nl',
  67 + isTree: false,
  68 + appName: 'LT-表单',
  69 + type: 'form',
  70 + },
  71 + },
  72 + {
  73 + name: '关联属性-关联记录',
  74 + code: 'WPjXCOemcBxoXqeEX6x',
  75 + extract: {
  76 + code: 's585f',
  77 + isTree: false,
  78 + appName: 'LT-表单',
  79 + type: 'form',
  80 + },
  81 + },
  82 + {
  83 + name: '子表-关联记录',
  84 + code: 'H3moABKMnhVqjqcVbsa',
  85 + extract: {
  86 + code: 'snfhq',
  87 + isTree: false,
  88 + appName: 'LT-表单',
  89 + type: 'form',
  90 + },
  91 + },
  92 + {
  93 + name: '关联记录1',
  94 + code: 'PQspcwgyiewytF9iizd',
  95 + extract: {
  96 + code: 'f53ql',
  97 + isTree: false,
  98 + appName: 'LT-表单',
  99 + type: 'form',
  100 + },
  101 + },
  102 + {
  103 + name: '富文本',
  104 + code: 'On7QbrZv9u1qtVgMAGm',
  105 + extract: {
  106 + code: 'tmh23',
  107 + isTree: false,
  108 + appName: 'LT-表单',
  109 + type: 'form',
  110 + },
  111 + },
  112 + {
  113 + name: '关联记录删除',
  114 + code: 'MdUFSBxWOYKXSYGSqSk',
  115 + extract: {
  116 + code: 'uxenf',
  117 + isTree: false,
  118 + appName: 'LT-表单',
  119 + type: 'form',
  120 + },
  121 + },
  122 + {
  123 + name: '1',
  124 + code: 'HAJ8dEcoPLnjx81Uxjc',
  125 + extract: {
  126 + code: '3xtcr',
  127 + isTree: false,
  128 + appName: 'LT-表单',
  129 + type: 'form',
  130 + },
  131 + },
  132 + {
  133 + name: '基础表单',
  134 + code: 'oOY4njEfrHx7PlSlFRf',
  135 + extract: {
  136 + code: 'fd3eb',
  137 + isTree: false,
  138 + appName: 'LT-表单',
  139 + type: 'form',
  140 + },
  141 + },
  142 + {
  143 + name: '关联记录',
  144 + code: 'HaIdxngReF8WtKclakp',
  145 + extract: {
  146 + code: 'qbroi',
  147 + isTree: false,
  148 + appName: 'LT-表单',
  149 + type: 'form',
  150 + },
  151 + },
  152 + {
  153 + name: '筛选',
  154 + code: 'amWz1TlerTCrysLhKdD',
  155 + extract: {
  156 + code: 'ionr7',
  157 + isTree: false,
  158 + appName: 'LT-表单',
  159 + type: 'form',
  160 + },
  161 + },
  162 + {
  163 + name: '子表',
  164 + code: 'JV5IeD1Xc4MtwWdbPhB',
  165 + extract: {
  166 + code: 'x4lh4',
  167 + isTree: false,
  168 + appName: 'LT-表单',
  169 + type: 'form',
  170 + },
  171 + },
  172 + {
  173 + name: '附件图片',
  174 + code: 'jCfTNFw7tjERB5jnnWv',
  175 + extract: {
  176 + code: 'pqqko',
  177 + isTree: false,
  178 + appName: 'LT-表单',
  179 + type: 'form',
  180 + },
  181 + },
  182 + {
  183 + name: '日期时间',
  184 + code: 'WruqGjaxMj0jLsZ6Ufr',
  185 + extract: {
  186 + code: 'z15we',
  187 + isTree: false,
  188 + appName: 'LT-表单',
  189 + type: 'form',
  190 + },
  191 + },
  192 + {
  193 + name: '选人员部门',
  194 + code: 'wqsubyh5kJFsxXuHYyQ',
  195 + extract: {
  196 + code: '0h42r',
  197 + isTree: false,
  198 + appName: 'LT-表单',
  199 + type: 'form',
  200 + },
  201 + },
  202 + {
  203 + name: '数值',
  204 + code: 'HEsh8KhnUToggsWuboT',
  205 + extract: {
  206 + code: 'bb8ev',
  207 + isTree: false,
  208 + appName: 'LT-表单',
  209 + type: 'form',
  210 + },
  211 + },
  212 + {
  213 + name: '多字段',
  214 + code: 'deTV0Jjc1prqYZTERfN',
  215 + extract: {
  216 + code: 'hxaxj',
  217 + isTree: false,
  218 + appName: 'LT-表单',
  219 + type: 'form',
  220 + },
  221 + },
  222 +];
... ...
... ... @@ -12,6 +12,14 @@
12 12 flex-direction: row-reverse;
13 13 flex-wrap: nowrap;
14 14 justify-content: space-between;
  15 + align-items: flex-end;
  16 +
  17 + .header-title {
  18 + overflow:hidden;
  19 + white-space: nowrap;
  20 + text-overflow: ellipsis;
  21 + -o-text-overflow:ellipsis;
  22 + }
15 23 }
16 24
17 25 .tree-wrapper {
... ... @@ -36,10 +44,10 @@
36 44 }
37 45
38 46 .border-none
39   - .ant-select-focused:not(.ant-select-disabled).ant-select:not(
  47 +.ant-select-focused:not(.ant-select-disabled).ant-select:not(
40 48 .ant-select-customize-input
41 49 )
42   - .ant-select-selector {
  50 +.ant-select-selector {
43 51 border: none;
44 52 box-shadow: none;
45 53 }
... ... @@ -61,24 +69,48 @@
61 69 align-items: center;
62 70 margin-left: 10px;
63 71
64   - .title-btn-del {
65   - display: none;
66   - color: #666;
  72 + .ant-btn.ant-btn-icon-only,
  73 + .ant-btn.ant-btn-icon-only {
  74 + font-size: 16px;
  75 + color: @N7;
67 76
68 77 &:hover {
69   - color: @E3;
  78 + color: @B8;
70 79 opacity: 1;
  80 +
  81 + .anticon {
  82 + color: @B8;
  83 +
  84 + &.title-btn-del-btn {
  85 + color: @E3;
  86 + }
  87 + }
  88 + }
  89 +
  90 + &:disabled,
  91 + &.ant-btn-disabled {
  92 + color: @N5;
  93 +
  94 + &:hover {
  95 + color: @N5;
  96 +
  97 + .anticon {
  98 + color: @N5;
  99 +
  100 + &.title-btn-del-btn {
  101 + color: @N5;
  102 + }
  103 + }
  104 + }
71 105 }
72 106 }
73 107
74   - .title-btn {
  108 + .title-btn-del {
75 109 display: none;
76   - color: #666;
  110 + }
77 111
78   - &:hover {
79   - color: #91d5ff;
80   - opacity: 1;
81   - }
  112 + .title-btn {
  113 + display: none;
82 114 }
83 115
84 116 .select-tree {
... ... @@ -100,6 +132,10 @@
100 132 margin-bottom: 2px;
101 133 overflow: hidden;
102 134 text-overflow: ellipsis;
  135 +
  136 + .ant-input-affix-wrapper {
  137 + border-color: @N4;
  138 + }
103 139 }
104 140
105 141 .opt-left-down {
... ... @@ -114,6 +150,8 @@
114 150 margin-bottom: 2px;
115 151 overflow: hidden;
116 152 text-overflow: ellipsis;
  153 + background-color: #fff;
  154 + border-radius: 4px;
117 155 }
118 156
119 157 // .ant-tree-node-content-wrapper :hover .select-tree {
... ... @@ -298,3 +336,10 @@
298 336 padding-top: 0 !important;
299 337 }
300 338 }
  339 +
  340 +.qx-parameter-setting--search {
  341 + .anticon {
  342 + font-size: 16px;
  343 + color: @N6;
  344 + }
  345 +}
... ...
  1 +<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M6.333 5.333a1 1 0 0 0-1 1v3h-.667V2.667h10V1.333H1.333v1.334h2v6.666c0 .737.597 1.334 1.333 1.334h.667v3a1 1 0 0 0 1 1h7.333a1 1 0 0 0 1-1V6.333a1 1 0 0 0-1-1H6.333Zm.333 8V6.667h6.667v6.666H6.666Zm2.667-2.666h-2V9.333h2v-2h1.333v2h2v1.334h-2v2H9.333v-2Z" clip-rule="evenodd"/></svg>
... ...