weaver_trunk_cli/pc4mobx/prj/components/dialog/addProjectDialog.js

232 lines
13 KiB
JavaScript
Raw Normal View History

2023-03-08 15:22:38 +08:00
import { Button,Spin} from 'antd';
import {WeaDialog,WeaTab,WeaNewScroll,WeaRightMenu,WeaLocaleProvider } from 'ecCom';
import {inject, observer} from "mobx-react";
import {toJS} from 'mobx';
import PrjTaskListTable from '../comp/prjTaskListTable'
import ProjectCondition from '../list/projectCondition'
import StageList from '../common/stageList';
const getLabel = WeaLocaleProvider.getLabel;
@observer
class AddProjectDialog extends React.Component {
constructor(props) {
super(props);
this.state={
width:1020,
height:650,
}
}
componentDidMount(){
}
componentWillReceiveProps(nextProps){
}
render() {
const {addProjectStore} = this.props.contentStore;
const {title,selectedKey,visible,conditionDatas:{userid,taskinfo,fieldinfo,taskViewAttr},saveListDatas,saveRowKeys,selectedRowKey,spinning} = addProjectStore;
const {form,setFormFields,setValidate,isTimeShow} = addProjectStore;
const tabs = [{key:"prjinfo",title:getLabel(16290,"项目信息")},{key:"sublist",title:getLabel(18505,"任务列表")}, { key: "stagelist", title: getLabel('387407',"阶段设置") },{ key: "rolelist", title: "角色管理" }];
const { width} = this.state;
const formParams = form.getFormParams() || {};
const {roleIframeUrl} = addProjectStore;
let dialogHeight = window.innerHeight - 150;
if (dialogHeight > 600) dialogHeight = 600;
return (
<div>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@8q3ggi`}
title={title}
visible={visible}
style= {{width: width, height: dialogHeight}}
maskClosable={false}
icon="icon-coms-project"
iconBgcolor="#217346"
onCancel={()=>addProjectStore.handleShareDialog(false)}
buttons={this.getDialogButtons()}
>
<WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@rg25at`} datas={this.getRightMenu()}>
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@u3s389`}
buttons={this.getButtons()}
datas={tabs}
selectedKey={selectedKey}
keyParam="key" //主键
onChange={this.changeTab.bind(this)} />
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@q8bmh0`} height={"calc(100% - 50px)"}>
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@y99n9e`} spinning={spinning}>
<div style = {{display:selectedKey == "prjinfo"? "block":"none"}}>
<ProjectCondition ecId={`${this && this.props && this.props.ecId || ''}_ProjectCondition@a799e4`} fieldInfo={fieldinfo} form={form} setFormFields={(v)=>{setFormFields(v)}} setValidate={(v)=>{setValidate(v)}} />
</div>
<div style = {{display:selectedKey == "sublist"? "block":"none"}}>
<PrjTaskListTable ecId={`${this && this.props && this.props.ecId || ''}_PrjTaskListTable@kzq9ip`}
ref = "PrjTaskListTable"
taskViewAttr={taskViewAttr}
datas={toJS(taskinfo)}
userid = {formParams.manager}
isworkday = {formParams.passnoworktime}
selectedRowKeys={toJS(selectedRowKey)}
onChange={(datas)=>{saveListDatas(datas)}}
onRowSelect={(rowkeys)=>{saveRowKeys(rowkeys)}}
stageOptions={this.getStageOptions()}
isTimeShow={isTimeShow}
/>
</div>
<div style={{ display: selectedKey == "stagelist" ? "block" : "none" }}>
<StageList ecId={`${this && this.props && this.props.ecId || ''}_StageList@8uu82g`} ref={el => { this.StageList = el }} contentStore={addProjectStore} />
</div>
<div style={{ display: selectedKey == "rolelist" ? "block" : "none" }}>
<iframe
src={roleIframeUrl}
width="100%"
height={540}
/>
</div>
</Spin>
</WeaNewScroll>
</WeaRightMenu>
</WeaDialog>
</div>)
}
getButtons(){
const {addProjectStore} = this.props.contentStore;
const {selectedKey,addNewListDatas,deleListDatas,selectedRowKey,conditionDatas:{userid,taskinfo,fieldinfo,taskViewAttr},stageInfo} = addProjectStore;
const isDisabled = !(selectedRowKey.length>0 && `${toJS(selectedRowKey)}`);
const stageDisabled = !(stageInfo.selectedRowKeys.length > 0)
let btn = [];
if(taskViewAttr==2){
if(selectedKey == "sublist"){
btn = [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@adjhai`} style={{ border: 'none', padding: '0px', fontSize: '20px', lineHeight: '1', color: '#55a1f8', backgroundColor: '#fff' }} type="primary" title={getLabel(611, '添加')} size="small" disabled={0} onClick={() => {
addNewListDatas();
}}><span className="icon-coms-Add-to-hot" /></Button>),
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@85e37z`} style={{ border: 'none', padding: '0px', fontSize: '20px', lineHeight: '1', color: (isDisabled) ? '#d8d8d8' : '#55a1f8', marginLeft: '-5px', backgroundColor: '#fff' }} type="primary" title={getLabel(91, '删除')} size="small" disabled={isDisabled} onClick={() => {
deleListDatas();
}} ><span className="icon-coms-form-delete-hot" /></Button>
];
} else if (selectedKey == "stagelist") {
btn = [
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@9vrk3o`} style={{ border: 'none', padding: '0px', fontSize: '20px', lineHeight: '1', color: '#55a1f8', backgroundColor: '#fff' }} type="primary" title={getLabel(611, '添加')} size="small" disabled={0} onClick={() => {
this.StageList.tableEdit.refs.edit.doAdd()
}}><span className="icon-coms-Add-to-hot" /></Button>),
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@6q0hxn`} style={{ border: 'none', padding: '0px', fontSize: '20px', lineHeight: '1', color: (stageDisabled) ? '#d8d8d8' : '#55a1f8', marginLeft: '-5px', backgroundColor: '#fff' }} type="primary" title={getLabel(91, '删除')} size="small" disabled={stageDisabled} onClick={() => {
this.StageList.tableEdit.refs.edit.doDelete()
}} ><span className="icon-coms-form-delete-hot" /></Button>
];
}
}
return btn
}
getDialogButtons(){
const {isreflesh} = this.props;
const {addProjectStore} = this.props.contentStore;
const {saveAddProject,conditionDatas:{taskViewAttr}} = addProjectStore;
let btn = [];
if(taskViewAttr==2){
btn.push(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@kmwp7b`} type="primary" onClick={ ()=>{saveAddProject({isreflesh:isreflesh,checkProps:this.StageList.tableEdit.refs.edit.doRequiredCheck()});this.refs.PrjTaskListTable.showErrors();}}>{getLabel(86,"保存")}</Button>);
btn.push(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@hd7lss`} type="primary" onClick={()=>addProjectStore.handleShareDialog(false)}>{getLabel(309,"关闭")}</Button>);
}else{
btn.push(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@q4i367`} type="primary" onClick={()=>addProjectStore.handleShareDialog(false)}>{getLabel(309,"关闭")}</Button>);
}
return btn
}
getRightMenu(){
const {isreflesh} = this.props;
const {addProjectStore} = this.props.contentStore;
const {conditionDatas:{rightMenu}} = addProjectStore;
const {selectedKey,saveAddProject,addNewListDatas,deleListDatas,selectedRowKey,conditionDatas:{userid,taskinfo,fieldinfo,taskViewAttr},stageInfo} = addProjectStore;
const isDisabled = !(selectedRowKey.length>0 && `${toJS(selectedRowKey)}`);
const stageDisabled = !(stageInfo.selectedRowKeys.length > 0)
let btn = [];
if(taskViewAttr==2){
if(selectedKey == "prjinfo"){
btn.push({
key: '1',
icon: <i className={"icon-coms-Preservation"} />,
content: getLabel(86,"保存"),
onClick:(key)=>{
const checkProps = this.StageList.tableEdit.refs.edit.doRequiredCheck();
saveAddProject({ isreflesh: isreflesh, checkProps: checkProps });
}
});
}
if(selectedKey == "sublist"){
btn.push({
key: '1',
icon: <i className={"icon-coms-New-Flow"} />,
content: getLabel(611,"添加"),
onClick:(key)=>{
addNewListDatas();
}
});
btn.push({
key: '2',
icon: <i className={"icon-coms-delete"} />,
content: getLabel(91,"删除"),
disabled:isDisabled,
onClick:(key)=>{
deleListDatas();
}
});
btn.push({
key: '3',
icon: <i className={"icon-coms-Preservation"} />,
content: getLabel(86,"保存"),
onClick:(key)=>{
this.refs.PrjTaskListTable.showErrors();
const checkProps = this.StageList.tableEdit.refs.edit.doRequiredCheck();
saveAddProject({ isreflesh: isreflesh, checkProps: checkProps });
}
});
}
if (selectedKey == "stagelist") {
btn.push({
key: '1',
icon: <i className={"icon-coms-New-Flow"} />,
content: getLabel(611, "添加"),
onClick: (key) => {
this.StageList.tableEdit.refs.edit.doAdd()
}
});
btn.push({
key: '2',
icon: <i className={"icon-coms-delete"} />,
content: getLabel(91, "删除"),
disabled: stageDisabled,
onClick: (key) => {
this.StageList.tableEdit.refs.edit.doDelete()
}
});
btn.push({
key: '3',
icon: <i className={"icon-coms-Preservation"} />,
content: getLabel(86, "保存"),
onClick: (key) => {
const checkProps = this.StageList.tableEdit.refs.edit.doRequiredCheck();
saveAddProject({ isreflesh: isreflesh, checkProps: checkProps });
}
});
}
}
return btn
}
changeTab(key){
const {addProjectStore} = this.props.contentStore;
addProjectStore.changeTab(key)
}
getStageOptions = () => {
const { addProjectStore: { stageInfo: { stageColumns, stageColumnDatas, selectedRowKeys, selectedDatas } } } = this.props.contentStore;
let options = [];
options.push({ disabled: false, selected: false, showname: " ", key:"", visible: true })
stageColumnDatas && stageColumnDatas.length > 0 && stageColumnDatas.map(item => {
options.push({ disabled: false, key: item.id, selected: false, showname: item.name, visible: true })
})
return options;
}
}
export default AddProjectDialog;