diff --git a/web-react/src/pages/system/user/form.jsx b/web-react/src/pages/system/user/form.jsx index 63b94d3..b9e4e8d 100644 --- a/web-react/src/pages/system/user/form.jsx +++ b/web-react/src/pages/system/user/form.jsx @@ -1,13 +1,15 @@ import React, { Component } from 'react' -import { Cascader, Form, Input, InputNumber, Select, Spin, TreeSelect } from 'antd' +import { Button, Row, Col, Form, Input, DatePicker, Radio, Table, Select, Spin, TreeSelect } from 'antd' import { AntIcon } from 'components' import { cloneDeep } from 'lodash' import getDicData from 'util/dic' import { EMPTY_ID } from 'util/global' import { api } from 'common/api' +import moment from 'moment' const initialValues = { - sort: 100 + sex: 0, + sysEmpParam: {} } export default class form extends Component { @@ -15,17 +17,74 @@ export default class form extends Component { state = { // 加载状态 loading: true, - codes: { orgType: [] }, options: { orgData: [], - areaData: [] + posData: [] + }, + sysEmpParam: { + extIds: [] } } - + extColumns = [ + { + title: '附属机构', + dataIndex: 'orgId', + width: '45%', + render: (text, record, index) => ( + + + + ) + }, + { + title: '附属岗位', + dataIndex: 'posId', + width: '45%', + render: (text, record, index) => ( + + + + ) + }, + { + title: '操作', + key: 'action', + width: '70px', + render: (text, record) => ( + + ) + }, + ] // 表单实例 form = React.createRef() @@ -46,54 +105,63 @@ export default class form extends Component { * @param {*} params */ async fillData(params) { - - this.record = cloneDeep(params.record) + this.record = cloneDeep(params.record || {}) //#region 从后端转换成前段所需格式 const orgData = await this.loadOrgData() - const areaData = await this.loadAreaData() - + const posData = await this.loadPosData() const codes = await getDicData('org_type') + + // 日期特殊处理 + if (this.record.birthday) { + this.record.birthday = moment(this.record.birthday) + } + + // 提交的时候是"param",而获取下来却是"info",在这里转换一下 + if (this.record.sysEmpInfo) { + this.record.sysEmpParam = this.record.sysEmpInfo; + delete this.record.sysEmpInfo; + } else if (!this.record.sysEmpParam) { + this.record.sysEmpParam = { + extIds: [], + }; + } + + // 转换职位信息列表 + if (this.record.sysEmpParam.positions) { + this.record.sysEmpParam.posIdList = this.record.sysEmpParam.positions.map((p) => p.posId); + } + + // 附加信息 + if (this.record.sysEmpParam.extOrgPos) { + this.record.sysEmpParam.extIds = this.record.sysEmpParam.extOrgPos.map((p, i) => { + return { + key: i, + orgId: p.orgId, + posId: p.posId, + }; + }); + } + + if (params.orgId) { + this.record.sysEmpParam.orgId = params.orgId; + } + this.setState({ codes, options: { + ...this.state.options, orgData, - areaData + posData, + }, + sysEmpParam: { + ...this.record.sysEmpParam } }) - const areaCode = []; - const findCode = (data, level) => { - level = level || 0; - for (let i = 0; i < data.length; i++) { - const item = data[i]; - areaCode[level] = item.code; - - if (item.code === params.record.areaCode) { - areaCode.length = level + 1; - return true; - } - - if (item.children && item.children.length) { - const found = findCode(item.children, level + 1); - if (found) { - return true; - } - } - } - }; - - if (params.record && params.record.areaCode) { - findCode(areaData); - } - this.record = { - pid: params.orgId, - ...this.record, - areaCode + ...this.record } - this.record.areaCode = areaCode //#endregion - this.form.current.setFieldsValue(this.record) this.setState({ @@ -117,7 +185,7 @@ export default class form extends Component { postData.id = this.record.id } //#region 从前段转换后端所需格式 - postData.areaCode = postData.areaCode[postData.areaCode.length - 1] + console.log(postData) //#endregion return postData } @@ -126,39 +194,79 @@ export default class form extends Component { //#region 自定义方法 async loadOrgData() { const { data } = await api.getOrgTree() - return [{ - id: EMPTY_ID, - parentId: undefined, - title: '顶级', - value: EMPTY_ID, - pid: undefined, - children: data, - }] - } - - async loadAreaData() { - const { data } = await api.getAreaTree() - const clearChiildren = (data) => { - data.forEach((item) => { - if (item.children && item.children.length) { - clearChiildren(item.children); - } else { - delete item.children; - } - }); - }; - clearChiildren(data); return data } + async loadPosData() { + const { data } = await api.sysPosList() + return data + } + onAddExtData() { + const { extIds } = this.state.sysEmpParam - onAreaCodeChange(selectedOptions) { - const data = selectedOptions[selectedOptions.length - 1] - this.form.current.setFieldsValue({ - name: data.name, - code: data.code + const record = { + key: extIds.length > 0 ? extIds[extIds.length - 1].key + 1 : 0, + orgId: undefined, + posId: undefined + } + + this.setState({ + sysEmpParam: { + extIds: [...extIds, record] + } + }, () => { + console.log(this.form.current.getFieldsValue()) }) + + } + onRemoveExtData(record) { + const ext = this.state.sysEmpParam.extIds, + remove = ext.find((p) => p.key === record.key), + index = ext.indexOf(remove); + + ext.splice(index, 1); + console.log(ext) + + // this.form.current.setFieldsValue({ + // sysEmpParam: { + // extIds: {} + // } + // }) + + this.setState({ + sysEmpParam: { + extIds: ext + } + }, () => { + //console.log(this.form.current.getFieldsValue()) + }) + } //#endregion + renderExtInfoTable() { + //console.log(this.state.sysEmpParam.extIds) + return ( + record.key} + footer={ + () => + + } + > +
+ ) + } render() { return ( @@ -167,59 +275,104 @@ export default class form extends Component { ref={this.form} className="yo-form" > - }> -
- - this.onAreaCodeChange(selectedOptions)} - /> - - - - - - - - - + + + + + {this.props.mode == 'add' && <> + + + + + + + } - - - - - - - - - - - -
+ + + + + + + + + + + 保密 + + + + + + + + + + + + + + + + + + + + + + + +

员工信息

+
+ + + + + + + + + +
+ {/*

附加信息

+
+ {this.renderExtInfoTable()} +
*/} + +
) diff --git a/web-react/src/pages/system/user/index.jsx b/web-react/src/pages/system/user/index.jsx index e3e284e..3188887 100644 --- a/web-react/src/pages/system/user/index.jsx +++ b/web-react/src/pages/system/user/index.jsx @@ -301,8 +301,9 @@ export default class index extends Component { action={apiAction.add} ref={this.addForm} onSuccess={() => this.list.current.onReloadData()} + width={1100} > - + this.list.current.onReloadData()} + width={1100} > - + )