weaver_trunk_cli/pc4mobx/prj/stores/importStore.js

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;