/* * << * Davinci * == * Copyright (C) 2016 - 2017 EDP * == * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * >> */ import React from 'react' import classnames from 'classnames' import { Form, Row, Col, Input, Tag, Button, Select, Menu, Icon, Tooltip, Popconfirm, Table, Modal} from 'antd' import { FormComponentProps } from 'antd/lib/form/Form' const TextArea = Input.TextArea const Option = Select.Option const FormItem = Form.Item const styles = require('../Project.less') import Avatar from 'components/Avatar' const utilStyles = require('assets/less/util.less') import ProjectRole from './ProjectRole' import ProjectAdmin from './ProjectAdmin' interface IProjectsFormProps { type: string deleteProject: (id: number) => any currentProject: any organizations?: any onModalOk: () => any modalLoading: boolean onCancel: () => any showEditProjectForm: (e) => any onCheckUniqueName: (pathname: any, data: any, resolve: () => any, reject: (error: string) => any) => any onTabsChange: (mode: string) => any } interface IProjectsFormStates { mode: string name: string description: string visibility: string relationRoleVisible: boolean authSettingVisible: boolean } export class ProjectsForm extends React.PureComponent { constructor (props) { super(props) this.state = { mode: '', name: '', description: '', visibility: '', relationRoleVisible: false, authSettingVisible: false } } private checkout = ({item, key, keyPath}) => { this.setState({ mode: key }, () => { const { onTabsChange } = this.props if (onTabsChange) { onTabsChange(this.state.mode) } }) } private stopPPG = (e) => { e.stopPropagation() } private deleteProject = (id) => () => { const {deleteProject, onCancel} = this.props deleteProject(id)() onCancel() } private toggleModal = (flag: string) => () => { if (flag === 'relationRoleVisible') { this.setState({ relationRoleVisible: !this.state[flag] }) } else { this.setState({ authSettingVisible: !this.state[flag] }) } } private substr (str: string) { return str?.length > 14 ? `${str.substr(0, 14)}...` : str } public render () { const { type, organizations, modalLoading, onCheckUniqueName } = this.props const { getFieldDecorator } = this.props.form const commonFormItemStyle = { labelCol: { span: 3 }, wrapperCol: { span: 24 } } const modalButtons = [( )] const organizationOptions = organizations ? organizations.map((o) => { const orgId = this.props.form.getFieldValue('orgId_hc') if (this.props.type === 'transfer' && o.id === Number(orgId)) { return [] } const disabled = o.allowCreateProject === false return ( ) }) : '' const isShowOrganization = classnames({ [utilStyles.hide]: (this.props.type === 'organizationProject') || (this.props.type === 'edit') }) const isShowDesc = classnames({ [utilStyles.hide]: this.props.type === 'transfer' }) let modalTitle = '创建' if (type === 'edit') { modalTitle = '修改' } else if (type === 'transfer') { modalTitle = '移交' } let mode = void 0 if (this.state.mode === 'role') { mode = } else if (this.state.mode === 'admin') { mode = } else { const { currentProject: {name, id, description, visibility, createBy}} = this.props const currentState = this.props.form.getFieldsValue() const disabled = name !== currentState.name || description !== currentState.description || `${visibility}` !== currentState.visibility mode = (
{type !== 'add' && ( {getFieldDecorator('id', {})( )} )} {getFieldDecorator('name', { // hidden: this.props.type === 'transfer', rules: [{ required: true, message: 'Name 不能为空' }, { validator: onCheckUniqueName }] })( )} {getFieldDecorator('visibility', { // hidden: this.props.type !== 'edit', initialValue: 'true' })( )} {getFieldDecorator('description', { // hidden: this.props.type === 'transfer', initialValue: '' })(