279 lines
8.8 KiB
JavaScript
279 lines
8.8 KiB
JavaScript
import { observable, action,toJS } from 'mobx';
|
|
import {WeaLocaleProvider,WeaError} from "ecCom"
|
|
import { Modal, message } from "antd"
|
|
import * as Apis from '../apis/project';
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
|
|
|
class PrjImportStore {
|
|
title = getLabel(81757,"项目导入");
|
|
topTab = [
|
|
{key: 'prjimport',title: getLabel(81757,"项目导入")},
|
|
{key: 'taskimport', title: getLabel(383858,"任务导入")},
|
|
];
|
|
@observable selectTabkey = "prjimport";
|
|
@observable isuse = 0;
|
|
@observable replaceDatas = [];
|
|
@observable mandstr = "";
|
|
@observable otherstr = "";
|
|
@observable taskmandstr = "";
|
|
@observable taskotherstr = "";
|
|
@observable loading = false;
|
|
@observable isrefresh = new Date().getTime();
|
|
@observable taskisrefresh = new Date().getTime();
|
|
@observable hasPrjUpload = false;
|
|
@observable hasTaskUpload = false;
|
|
@observable taskreplaceDatas = []; //项目导入默认值
|
|
@observable prjType = ""; //项目导入默认值
|
|
@observable taskType = ""; //项目导入默认值
|
|
@observable spinning =false;
|
|
@observable prjmsg = "";
|
|
@observable taskmsg = "";
|
|
@observable imp_totalCount = "";//总数据数
|
|
@observable imp_successCount = "";//正确导入数
|
|
@observable imp_loseCount = "";//失败条数
|
|
@observable reflesh = 0;
|
|
@observable filelist = [];
|
|
@observable excelfile = '';
|
|
@observable taskfilelist = [];
|
|
@observable taskexcelfile = '';
|
|
@observable prjremind = '';
|
|
@observable taskremind = '';
|
|
@observable selectremind = '';
|
|
//wbs导入
|
|
@observable filetype = '1';//任务导入类型
|
|
@observable taskwbsfieldstr = "";
|
|
@observable visible = false;
|
|
@observable columns = []
|
|
@observable columnDatas = []
|
|
@observable selectRowKeys = [];
|
|
@observable saveVisible = false;
|
|
@observable readonly = false;
|
|
|
|
@observable taskDataParams = {};
|
|
|
|
@observable disabled = false;
|
|
|
|
@action
|
|
initDatas=(params={})=>{
|
|
this.loading = true;
|
|
let _this = this;
|
|
Apis.prjimptopt(params).then(data=>{
|
|
_this.isuse = data.isuse;
|
|
_this.mandstr = data.mandstr;
|
|
_this.otherstr = data.otherstr;
|
|
Apis.doPrjTemplateFile({isuse:this.isuse,temptype:'prjtask',isdata:params.isdata}).then(data=>{
|
|
_this.loading = false;
|
|
});;
|
|
})
|
|
}
|
|
|
|
@action
|
|
initTaskDatas=(params={})=>{
|
|
this.loading = true;
|
|
let _this = this;
|
|
Apis.prjimptopt(params).then(data=>{
|
|
_this.taskmandstr = data.mandstr;
|
|
_this.taskotherstr = data.otherstr;
|
|
_this.taskwbsfieldstr = data.taskwbsfieldstr;
|
|
_this.taskDataParams = data.taskDataParams;
|
|
Apis.doPrjTemplateFile({temptype:'prjtask',isdata:params.isdata}).then(data=>{
|
|
_this.loading = false;
|
|
});
|
|
})
|
|
}
|
|
|
|
@action
|
|
savePrjType=(ids,data,type)=>{
|
|
if(type == "prj"){
|
|
this.prjType = ids;
|
|
this.replaceDatas = data;
|
|
}else{
|
|
this.taskType = ids;
|
|
this.taskreplaceDatas = data;
|
|
}
|
|
}
|
|
|
|
@action
|
|
saveFileType=(value)=>{
|
|
this.filetype = value;
|
|
this.taskmsg = "";
|
|
this.taskexcelfile="";
|
|
this.taskfilelist=[];
|
|
}
|
|
@action
|
|
saveDefaultInfo=(prjid,prjname)=>{
|
|
this.selectTabkey = 'taskimport';
|
|
this.readonly = true;
|
|
this.taskType = prjid;
|
|
this.taskreplaceDatas = [{id:prjid,name:prjname}];
|
|
}
|
|
|
|
@action
|
|
regenTemplate=()=>{
|
|
this.isrefresh = new Date().getTime();
|
|
this.spinning = true;
|
|
let params = {isuse:this.isuse,temptype:'prjtype',isdata:'1',prjtype:this.prjType};
|
|
Apis.doPrjTemplateFile(params).then(data=>{
|
|
this.spinning = false;
|
|
Modal.success({
|
|
title: getLabel(128231,"模板创建完成,可以下载了。"),
|
|
content: '',
|
|
});
|
|
})
|
|
}
|
|
|
|
//wbs字段设置
|
|
@action
|
|
setPrjWbsSetField = (data) => {
|
|
this.columns = data.columns;
|
|
this.columnDatas = data.columnDatas;
|
|
}
|
|
|
|
@action
|
|
handleDialog = (val) => {
|
|
this.visible = val;
|
|
if(val){
|
|
Apis.getTaskWbsField().then(data=>{
|
|
this.setPrjWbsSetField(data);
|
|
})
|
|
}else{
|
|
this.columns = []
|
|
this.columnDatas = []
|
|
this.selectRowKeys = [];
|
|
}
|
|
}
|
|
|
|
@action
|
|
setSelectRowKeys = (keys) => {
|
|
this.selectRowKeys = keys;
|
|
}
|
|
|
|
|
|
@action
|
|
setColumnDatas = (datas) => {
|
|
let _this = this;
|
|
_this.columnDatas = datas;
|
|
}
|
|
|
|
@action
|
|
saveTaskWbsField = () => {
|
|
let params = {fields: JSON.stringify(this.columnDatas)};
|
|
let _this = this;
|
|
if(this.check_field()){
|
|
_this.saveVisible = true;
|
|
Apis.doTaskWbsFieldSave(params).then(data=>{
|
|
if (data.success) {
|
|
_this.taskwbsfieldstr = data.taskwbsfieldstr;
|
|
message.success(getLabel(18758, "保存成功"));
|
|
Apis.getTaskWbsField().then(data=>{
|
|
_this.setPrjWbsSetField(data);
|
|
_this.saveVisible = false;
|
|
})
|
|
} else {
|
|
message.error(data.errmsg);
|
|
}
|
|
})
|
|
}
|
|
|
|
}
|
|
|
|
check_field = () => {
|
|
let fields = toJS(this.columnDatas);
|
|
let bool = true;
|
|
fields.forEach(item => {
|
|
if (item.com.wbsfield[0].viewAttr == 3) {
|
|
if (item.wbsfield.replace(" ", "") == "") {
|
|
bool = false;
|
|
}
|
|
}
|
|
})
|
|
return bool;
|
|
}
|
|
|
|
doImport=(refTaskList)=>{
|
|
if(this.selectTabkey == "prjimport"){ //项目导入
|
|
if(this.excelfile==''){
|
|
this.prjremind.showError();
|
|
return;
|
|
}else{
|
|
this.disabled = true;
|
|
let _this = this;
|
|
let params = {isdata:"1",isuse:this.isuse,prjtype:this.prjType,prjexcelfile:this.excelfile||''};
|
|
this.spinning = true;
|
|
Apis.doPrjimpopt(params).then(data => {
|
|
this.disabled = false;
|
|
if(data) {
|
|
_this.reflesh++;
|
|
_this.spinning = false;
|
|
_this.prjmsg = data.msg;
|
|
_this.imp_totalCount = data.totalCount;
|
|
_this.imp_successCount = data.successCount;
|
|
}
|
|
});
|
|
}
|
|
}else{//任务导入
|
|
if(this.taskexcelfile==''){
|
|
this.taskremind.showError();
|
|
return;
|
|
}else{
|
|
if(!this.taskType||this.taskType==""){
|
|
this.selectremind.showError();
|
|
return ;
|
|
}else{
|
|
this.disabled = true;
|
|
let _this = this;
|
|
let _filetype = this.filetype;
|
|
let params = {isdata:"2",filetype:this.filetype,parentprj:this.taskType,taskexcelfile:this.taskexcelfile||''};
|
|
this.spinning = true;
|
|
Apis.doPrjimpopt(params).then(data => {
|
|
this.disabled = false;
|
|
if(data) {
|
|
_this.reflesh++;
|
|
_this.spinning = false;
|
|
_this.taskmsg = data.msg;
|
|
_this.filetype = _filetype;
|
|
_this.imp_totalCount = data.totalCount;
|
|
_this.imp_successCount = data.successCount;
|
|
}
|
|
data.successCount>0 && refTaskList && refTaskList();
|
|
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
changeTab=(key)=>{
|
|
this.selectTabkey = key;
|
|
if('prjimport'==key){
|
|
this.title = getLabel(81757,"项目导入");
|
|
}else if('taskimport'==key){
|
|
this.title = getLabel(383858,"任务导入");
|
|
}
|
|
}
|
|
|
|
clearStatus=()=>{
|
|
this.replaceDatas = [];
|
|
this.prjmsg = "";
|
|
this.taskmsg = "";
|
|
this.imp_totalCount = "";
|
|
this.imp_successCount = "";
|
|
this.selectTabkey = "prjimport";
|
|
this.isuse = 0;
|
|
this.taskreplaceDatas = [];
|
|
this.prjType = "";
|
|
this.taskType = "";
|
|
this.reflesh++;
|
|
this.excelfile="";
|
|
this.filelist=[];
|
|
this.taskexcelfile="";
|
|
this.taskfilelist=[];
|
|
this.columns = []
|
|
this.columnDatas = []
|
|
this.selectRowKeys = [];
|
|
this.readonly = false;
|
|
}
|
|
}
|
|
|
|
const prjImportStore = new PrjImportStore()
|
|
export default prjImportStore; |