同步操作将从 robergroup/chiner 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import React, {useEffect, useRef} from 'react';import * as _ from 'lodash/object';import * as Component from 'components/index';import {emptyDict, getColumnWidth, validateDictBase} from '../../lib/datasource_util';import DictBase from '../../app/container/dict/DictBase';export default React.memo(({f, name, dataSource, remarkChange, onKeyDown, currentPrefix,onChange, onBlur, checkboxComponents, reading, cellRef, dicts,setDict, getDataSource, updateDataSource,openDict, defaultGroups}) => {const tooltipRef = useRef(null);const columnWidth = getColumnWidth();const cell = useRef(null);useEffect(() => {cellRef && cellRef(cell);}, []);const domains = _.get(dataSource, 'domains', []);const uiHint = _.get(dataSource, 'profile.uiHint', []);const numberComponents = ['len', 'scale'];const openRemark = () => {const { Button, openModal } = Component;let tempValue = f[name];const onOk = (modal) => {remarkChange(name, {target: { value: tempValue }});modal && modal.close();};const onCancel = (modal) => {modal && modal.close();};const remarkDetailChange = (e) => {tempValue = e.target.value;};const modal = openModal(<Component.Textstyle={{width: 510, height: 250, marginBottom: 10}}defaultValue={f[name]}onChange={remarkDetailChange}/>, {title: Component.FormatMessage.string({id: name === 'intro' ? 'dict.item.intro' : 'fieldRemarkDetail'}),buttons: [<Button key='ok' onClick={() => onOk(modal)}>{Component.FormatMessage.string({id: 'button.ok'})}</Button>,<Button key='cancel' onClick={() => onCancel(modal)}>{Component.FormatMessage.string({id: 'button.cancel'})}</Button>],});};const onCreate = () => {const { Button, openModal, Modal, FormatMessage } = Component;const currentDataSource = getDataSource();let dictModal;let newDict = {...emptyDict, group: defaultGroups};const dictChange = (dictData, dictName) => {if (dictName === 'fields') {newDict.items = dictData;} else {newDict[dictName] = dictData;}};const onOK = () => {if (validateDictBase(newDict)&& !(currentDataSource.dicts || []).map(d => d.defKey).includes(newDict.defKey)) {onChange && onChange({target: {value: newDict.defKey,},});dictModal && dictModal.close();const newDicts = (currentDataSource.dicts || []).concat(_.omit(newDict, 'group'));updateDataSource && updateDataSource({...currentDataSource,dicts: newDicts,viewGroups: (currentDataSource?.viewGroups || []).map((g) => {if (newDict.group.includes(g.defKey)) {return {...g,refDicts: [...new Set((g.refDicts || []).concat(newDict.defKey))],};}return g;}),});setDict(newDicts);} else {Modal.error({title: FormatMessage.string({id: 'optFail'}),message: FormatMessage.string({id: 'dict.dictAndItemNotAllowRepeatAndEmpty'}),});}};const onCancel = () => {dictModal && dictModal.close();};dictModal = openModal(<div style={{height: '70vh'}}><DictBasedefaultGroups={defaultGroups}dataSource={currentDataSource}dictData={emptyDict}dictChange={dictChange}/></div>, {title: FormatMessage.string({id: 'dict.create'}),width: '80%',bodyStyle: {width: '80%'},buttons: [<Button key='ok' onClick={onOK}>{FormatMessage.string({id: 'button.ok'})}</Button>,<Button key='cancel' onClick={onCancel}>{FormatMessage.string({id: 'button.cancel'})}</Button>],});};const viewDict = () => {const { Table, Button } = Component;const data = (dicts || [])?.filter(d => d.defKey === f[name])[0];if (data) {const onOk = () => {tooltipRef.current.setTooltipVisible(false);openDict(data.defKey, 'dict', null, 'dict.svg');};return <div className={`${currentPrefix}-table-dict-items`}><div style={{width: '100%', height: '100%', overflow: 'auto'}}><TabledisableDragRowdisableHeaderSortdisableHeaderIconcustomerHeadersreadingdata={{headers: ['defKey', 'defName', 'intro', 'enabled'].map(i => ({refKey: i,value: Component.FormatMessage.string({id: `dict.item.${i}`}),})),fields: data?.items || [],}}/></div><Button key='ok' onClick={() => onOk()}>{Component.FormatMessage.string({id: 'button.edit'})}</Button></div>;}return '';};if (reading) {const width = columnWidth[name];let label = f[name] || '';if (name === 'enabled' || name === 'isStandard') {label = label ? Component.FormatMessage.string({id: 'dict.enabled'}): Component.FormatMessage.string({id: 'dict.disabled'});}return <Component.Tooltip title={label}><spanstyle={{width: width ? (width - 3) : '100%'}}className={`${currentPrefix}-table-reading`}>{label}</span></Component.Tooltip>;} else if (name === 'domain') {return <Component.Select value={f[name]} onChange={onChange}>{domains.map(d =>(<Component.Select.Optionkey={d.defKey}value={d.defKey}>{d.defName || d.defKey}</Component.Select.Option>))}</Component.Select>;} else if(name === 'uiHint') {return <Component.Select value={f[name]} onChange={onChange}>{uiHint.map(d =>(<Component.Select.Optionkey={d.defKey}value={d.defKey}>{d.defName || d.defKey}</Component.Select.Option>))}</Component.Select>;} else if(name === 'codeType') {return <Component.Select value={f[name]} onChange={onChange}><Component.Select.Optionkey='dbDDL'value='dbDDL'>{Component.FormatMessage.string({id: 'codeType.dbDDL'})}</Component.Select.Option><Component.Select.Optionkey='appCode'value='appCode'>{Component.FormatMessage.string({id: 'codeType.appCode'})}</Component.Select.Option></Component.Select>;} if (checkboxComponents.includes(name)) {return <Component.Checkbox checked={!!f[name]} onChange={onChange}/>;} else if (name === 'hideInGraph') {let type = 'fa-eye';if (f[name]) {type = 'fa-eye-slash';}return <Component.Icontype={type}onClick={() => onChange({target: { value: !f[name]}})}/>;} else if (numberComponents.includes(name)) {return <Component.NumberInput value={f[name]} onChange={onChange}/>;} else if (name === 'intro' || name === 'comment') {return <Component.InputonKeyDown={onKeyDown}ref={cell}onChange={onChange}value={f[name]}suffix={<span style={{padding: '0 5px', display: 'inline-block', height: '100%'}} onClick={openRemark}><Component.Icon type='fa-ellipsis-h'/></span>}/>;} else if (name === 'refDict') {return <div className={`${currentPrefix}-table-dict`}><Component.MultipleSelectdropdownRender={menus => <div>{menus}<spanonClick={onCreate}className={`${currentPrefix}-table-dict-create`}>{Component.FormatMessage.string({id: 'dict.create'})}</span></div>}onChange={values => onChange({target: {value: values[0] || '',},})}checkValue={[f[name]]}simple>{dicts.map(v => (<Component.MultipleSelect.Optionkey={v.defKey}value={v.defKey}>{`${v.defKey}(${v.defName || v.defKey})`}</Component.MultipleSelect.Option>))}</Component.MultipleSelect><Component.Tooltip ref={tooltipRef} visible={f[name]} title={viewDict()} force placement='topLeft'><spanclassName={`${currentPrefix}-table-dict-view-${f[name] ? 'normal' : 'disabled'}`}>{Component.FormatMessage.string({id: 'dict.view'})}</span></Component.Tooltip></div>;} else if (name === 'ascOrDesc') {return <Component.Select value={f[name]} onChange={onChange}>{[{key: 'A', name: 'ASC'}, {key: 'D', name: 'DESC'}].map(d =>(<Component.Select.Optionkey={d.key}value={d.key}>{d.name}</Component.Select.Option>))}</Component.Select>;}return <Component.InputonKeyDown={onKeyDown}ref={cell}value={f[name]}onChange={onChange}onBlur={onBlur}/>;}, (pre, next) => {if (pre.name === 'domain') {return !((pre?.dataSource?.domains !== next?.dataSource?.domains)|| (pre.f[pre.name] !== next.f[next.name]));} else if (pre.name === 'refDict') {return !((pre?.dicts !== next?.dicts)|| (pre.f[pre.name] !== next.f[next.name]));} else if (pre.name === 'uiHint') {return !((pre?.dataSource?.uiHint !== next?.dataSource?.uiHint)|| (pre.f[pre.name] !== next.f[next.name]));}return pre.f[pre.name] === next.f[next.name];});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。