import React, { Component } from 'react'
import {
Button,
Row,
Col,
Form,
Input,
DatePicker,
Radio,
Table,
Select,
Spin,
TreeSelect,
} from 'antd'
import { AntIcon } from 'components'
import { cloneDeep } from 'lodash'
import getDictData from 'util/dic'
import { EMPTY_ID } from 'util/global'
import { api } from 'common/api'
import moment from 'moment'
const initialValues = {
sex: 0,
sysEmpParam: {},
}
export default class form extends Component {
state = {
// 加载状态
loading: true,
codes: {
orgType: [],
},
options: {
orgData: [],
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()
// 初始化数据
record = {}
/**
* mount后回调
*/
componentDidMount() {
this.props.created && this.props.created(this)
}
/**
* 填充数据
* 可以在设置this.record之后对其作出数据结构调整
* [异步,必要]
* @param {*} params
*/
async fillData(params) {
//#region 从后端转换成前段所需格式
if (params.id) {
this.record = (await api.sysUserDetail({ id: params.id })).data
}
const orgData = await this.loadOrgData()
const posData = await this.loadPosData()
const codes = await getDictData('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,
posData,
},
sysEmpParam: {
...this.record.sysEmpParam,
},
})
this.record = {
...this.record,
}
//#endregion
this.form.current.setFieldsValue(this.record)
this.setState({
loading: false,
})
}
/**
* 获取数据
* 可以对postData进行数据结构调整
* [异步,必要]
* @returns
*/
async getData() {
const form = this.form.current
const valid = await form.validateFields()
if (valid) {
const postData = form.getFieldsValue()
if (this.record) {
postData.id = this.record.id
}
//#region 从前段转换后端所需格式
console.log(postData)
//#endregion
return postData
}
}
//#region 自定义方法
async loadOrgData() {
const { data } = await api.getOrgTree()
return data
}
async loadPosData() {
const { data } = await api.sysPosList()
return data
}
onAddExtData() {
const { extIds } = this.state.sysEmpParam
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={() => (
}
type="dashed"
onClick={() => this.onAddExtData()}
>
新增一项
)}
>
)
}
render() {
return (
)
}
}