提交 d55855f6 authored 作者: chscls@163.com's avatar chscls@163.com

树型组件

上级 e97216ea
...@@ -41,10 +41,10 @@ export default class TableList extends React.Component { ...@@ -41,10 +41,10 @@ export default class TableList extends React.Component {
} }
render() { render() {
const {isTree} = this.props const {isTree,json} = this.props
return isTree? return isTree?
<TreeList <TreeList
json={json}
onSelectRow={this.props.value.onSelectRow} onSelectRow={this.props.value.onSelectRow}
istableCom={true} istableCom={true}
showHeader={this.props.showHeader} showHeader={this.props.showHeader}
......
...@@ -13,6 +13,7 @@ import { ...@@ -13,6 +13,7 @@ import {
message, message,
Modal, Modal,
Select, Select,
Tree,
Popconfirm, Popconfirm,
Tooltip, Tooltip,
Spin Spin
...@@ -30,17 +31,15 @@ import StatisticsInfo from '../../App/StatisticsInfo'; ...@@ -30,17 +31,15 @@ import StatisticsInfo from '../../App/StatisticsInfo';
import ImportUtil from '../../App/ImportUtil'; import ImportUtil from '../../App/ImportUtil';
import SearchInfo from '../../App/SearchInfo'; import SearchInfo from '../../App/SearchInfo';
import {Base16Encode} from "../../Base16/index"; import {Base16Encode} from "../../Base16/index";
import baseX from 'base-x'
import {isEmpty} from 'lodash' import {isEmpty} from 'lodash'
import FilePreview from "@/webPublic/one_stop_public/filePreview"; import FilePreview from "@/webPublic/one_stop_public/filePreview";
import {queryApiActionPath} from "@/webPublic/one_stop_public/utils/queryConfig"; import {queryApiActionPath} from "@/webPublic/one_stop_public/utils/queryConfig";
import UploadCom from "@/webPublic/one_stop_public/libs/UploadCom"; import UploadCom from "@/webPublic/one_stop_public/libs/UploadCom";
const BASE16 = '0123456789abcdef'
const bs16 = baseX(BASE16)
const FormItem = Form.Item; const FormItem = Form.Item;
let AllWidth = 0; // 表格总长度 let AllWidth = 0; // 表格总长度
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
const TreeNode = Tree.TreeNode;
const text = [ const text = [
'BINARY', 'BINARY',
'BIT', 'BIT',
...@@ -145,6 +144,10 @@ class TreeList extends React.Component { ...@@ -145,6 +144,10 @@ class TreeList extends React.Component {
list: [], list: [],
pagination: {}, pagination: {},
}, },
treeData: [{title: '根目录', key: '0-0'}],
isReady: false,
parentName: "根节点",
parentId: null,
selects:[], selects:[],
modalVisible: false, modalVisible: false,
formData: null, formData: null,
...@@ -189,6 +192,19 @@ class TreeList extends React.Component { ...@@ -189,6 +192,19 @@ class TreeList extends React.Component {
}); });
} }
} }
getList = (values, callback) => {
const {dispatch, json:{treeParentIdName}} = this.props;
if (!values) {
values = this.state.formValues
}
dispatch({
type: 'formList/tree',
payload: {...values, parentIdName: treeParentIdName,dataObjId:this.state.objId},
callback: callback
});
}
modify = record => { modify = record => {
// if (this.state.formItem.length < 10) { // if (this.state.formItem.length < 10) {
this.getOptions() this.getOptions()
...@@ -937,6 +953,71 @@ class TreeList extends React.Component { ...@@ -937,6 +953,71 @@ class TreeList extends React.Component {
</Form> </Form>
); );
} }
onSelect = (selectedKeys, info) => {
if (info.selectedNodes.length > 0) {
const parentId = selectedKeys[0] != "0-0" ? selectedKeys[0] : null
this.setState({parentName: info.selectedNodes[0].props.title, parentId})
this.getPage({parentId: parentId})
}
}
onLoadData = (treeNode) => {
return new Promise((resolve) => {
if (treeNode.props.childs) {
resolve();
return;
}
const parentId = treeNode.props.eventKey != "0-0" ? treeNode.props.eventKey : null
this.getList({parentId: parentId}, (list) => {
treeNode.props.dataRef.childs = list;
this.setState({
treeData: [...this.state.treeData]
});
resolve();
})
});
}
renderTreeNodes = (list) => {
const{json:{treeTitleName,treeKeyName}}=this.props
return list.map((item) => {
item.title=item[treeTitleName]
item.key = item[treeKeyName]
if (item.childs) {
return (
<TreeNode title={item[treeTitleName]} key={item.key} dataRef={item}>
{this.renderTreeNodes(item.childs)}
</TreeNode>
);
}
return <TreeNode {...item} dataRef={item}/>;
})
}
refesh = (parentId, list, data) => {
if (parentId == null) {
data[0].childs = list
return data
}
for (var i = 0; i < data.length; i++) {
if (data[i].key == parentId) {
data[i].childs = list
break;
} else {
if (data[i].childs) {
this.refesh(parentId, list, data[i].childs)
}
}
}
return data
}
render() { render() {
const { const {
modalVisible, modalVisible,
...@@ -958,6 +1039,7 @@ class TreeList extends React.Component { ...@@ -958,6 +1039,7 @@ class TreeList extends React.Component {
valueName, valueName,
notShowBack, notShowBack,
istableCom, // 是否有模板设计器调用 istableCom, // 是否有模板设计器调用
json:{treeSpan}
} = this.props; } = this.props;
const { const {
showMobileDiv, showMobileDiv,
...@@ -1066,7 +1148,24 @@ class TreeList extends React.Component { ...@@ -1066,7 +1148,24 @@ class TreeList extends React.Component {
AllWidth+=100 AllWidth+=100
} }
} }
const xxxx = <><Card bordered={false} bodyStyle={{padding:0}}> const xxxx = <>
<Row gutter={16}>
<Col span={treeSpan}>
<Card bordered={false} style={{minHeight: 500}}>
<Tree showLine defaultExpandedKeys={["0-0"]} onSelect={this.onSelect} loadData={this.onLoadData}>
{this.renderTreeNodes(this.state.treeData)}
</Tree>
</Card>
</Col>
<Col span={24-treeSpan}>
<Card bordered={false} bodyStyle={{padding:0}}>
<div className={styles.tableList}> <div className={styles.tableList}>
<div className={styles.tableListForm}>{this.renderForm()}</div> <div className={styles.tableListForm}>{this.renderForm()}</div>
<div className={styles.tableListOperator}> <div className={styles.tableListOperator}>
...@@ -1155,7 +1254,7 @@ class TreeList extends React.Component { ...@@ -1155,7 +1254,7 @@ class TreeList extends React.Component {
</div> </div>
</Card> </Card></Col></Row>
<CreateForm {...parentMethods} modalVisible={modalVisible}/></> <CreateForm {...parentMethods} modalVisible={modalVisible}/></>
if (isFormCom) { if (isFormCom) {
return xxxx return xxxx
......
...@@ -843,11 +843,19 @@ class FormList extends React.Component { ...@@ -843,11 +843,19 @@ class FormList extends React.Component {
} else if (number.indexOf(item.type) > -1) { } else if (number.indexOf(item.type) > -1) {
return ( return (
<FormItem labelCol={labelCol} wrapperCol={wrapperCol} label={item.title} key={item.id}> <FormItem labelCol={labelCol} wrapperCol={wrapperCol} label={item.title} key={item.id}>
{form.getFieldDecorator(item.name, { {form.getFieldDecorator(item.name, {
initialValue: formData == null ? '' : formData[item.name], initialValue: formData == null ? '' : formData[item.name],
rules: [{ required: !item.isNull }], rules: [{ required: !item.isNull},(rule, value, callback)=>{
})(<InputNumber placeholder="请输入" min={0}/>)} var errors=[];
</FormItem> var reg=new RegExp(/(^-?[0-9][0-9]*(.[0-9]+)?)$/)
if(!reg.test(value)){
errors.push(new Error("请输入数字"),rule.field);
}
callback(errors)
}],
})(<Input placeholder="请输入"/>)}
</FormItem>
); );
} else if (isQuery&&data.indexOf(item.type) > -1) { } else if (isQuery&&data.indexOf(item.type) > -1) {
......
...@@ -27,6 +27,14 @@ export default { ...@@ -27,6 +27,14 @@ export default {
} }
if (callback) callback(response); if (callback) callback(response);
}, },
*tree({ payload, callback }, { call, put }) {
const response = yield call(apiRequest,api +'/getFormDataList', payload);
if (!response) {
yield put({ type: 'nom' });
return;
}
if (callback) callback(response);
},
*getAppId({ payload, callback }, { call, put }) { *getAppId({ payload, callback }, { call, put }) {
const response = yield call(apiRequest, '/UnifiedAppFormApi/getDetailByCode', payload); const response = yield call(apiRequest, '/UnifiedAppFormApi/getDetailByCode', payload);
if (!response) { if (!response) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论