中化加油站项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

219 lines
6.4 KiB

import { HttpErrorResponse } from "@angular/common/http";
import { plainToClass } from "class-transformer";
import { InstitutionData, NormalData } from "../../model/data/institution/institution-data";
import { InsitutionDataSimple } from "../../model/data/institution/institution-data-simple";
import { InstitutionCreateWindow } from "../../view/institution/institution-create-window";
import { InstitutionSelectWindow } from "../../view/institution/institution-select-window";
import { TopbarWindow } from "../../view/topbar-window/topbar-window";
import { DataManager } from "../data-manager";
import { SceneManager } from "../scene-manager";
import { ServeManager } from "../serve-manager";
import { UIManager } from "../ui-manager";
import { MainStatus } from "./main-status";
import { StatusBase, StatusManager } from "./status-manager";
export class LoginSatus extends StatusBase {
institutionSelectWindow: InstitutionSelectWindow;
institutionCreateWindow: InstitutionCreateWindow;
institutionList: InsitutionDataSimple[];//单位简易信息列表
//#region 前端对接
/**
* 新建单位
* @param insData 新的单位信息
*/
createInsitution(key: string, name: string, onSuccess?: (insDataSimple: InsitutionDataSimple) => void) {
if (key == null) {
console.error("创建单位key为null");
return;
}
let insData = new InstitutionData();
insData.normalData = new NormalData(key, name);
this.saveNewIns(this, insData, key, onSuccess);
}
//#endregion
//#region 外部方法
/**
* 获取单位简易信息列表
* @param onSuccess 获取成功的回调
*/
getInstitutionListFromServe(onSuccess?: (result: InsitutionDataSimple[], data?: any) => void, onFail?: (error: string) => void) {
let debugList: any | InsitutionDataSimple[] = [];
// let testIns1 = new InsitutionDataSimple();
// testIns1.key = "test";
// testIns1.name = "测试单位1";
// debugList.push(testIns1);
ServeManager.instance.getInstitutionData("InsList", (key, data) => {
debugList = plainToClass(InsitutionDataSimple, data);
this.institutionList = debugList;
if (onSuccess) {
onSuccess(debugList, data);
}
}, (key: string, error: any) => {
console.error("获取单位列表失败");
console.log(error);
if (error instanceof HttpErrorResponse && error.status === 404) {
//数据库没有数据,新建
this.institutionList = [];
if (onSuccess) {
onSuccess(this.institutionList, this.institutionList);
}
console.log("新建数据列表");
}
else {
if (onFail) {
onFail(error);
}
}
return;
})
}
/**
* 选择单位完成,初始化数据(向服务器请求完整数据)
* @param simpleData 选择的单位
*/
onSelectInsSuccess(simpleData: InsitutionDataSimple) {
let status: LoginSatus = StatusManager.getStatus<LoginSatus>(LoginSatus);
if (status.institutionSelectWindow != null) {
UIManager.close(status.institutionSelectWindow);
status.institutionSelectWindow = null;
}
DataManager.init(simpleData, (resultkey) => {
StatusManager.enterStatus<MainStatus>(MainStatus);
});
}
//#endregion
//#region 生命周期
//初始化
onCreate() {
super.onCreate();
}
//进入状态
onEnter() {
super.onEnter();
console.log("进入 logins");
//UIManager.open<TopbarWindow>(TopbarWindow);
// this.openSelectWindow();//可以开启选择、新建单位
}
//退出状态
onExit() {
super.onEnter();
}
//开启选择界面
openSelectWindow() {
console.log("=======开启选择界面");
this.institutionSelectWindow = UIManager.open<InstitutionSelectWindow>(InstitutionSelectWindow);
console.log(this.institutionSelectWindow);
let status = this;
this.institutionSelectWindow.getInsList(status.onSelectInsSuccess);
}
//关闭选择界面
closeSelectWindow() {
if (this.institutionSelectWindow != null) {
UIManager.close(this.institutionSelectWindow);
this.institutionSelectWindow = null;
}
}
//新建完成
onCreateInsSuccess(insData: InsitutionDataSimple) {
this.closeCreateWindow();
let isOverWrite = false;
for (let i = 0; i < this.institutionList.length; i++) {
if (this.institutionList[i].key == insData.key) {
this.institutionList[i].name = insData.name;
isOverWrite = true;
break;
}
}
if (!isOverWrite) {
this.institutionList.push(insData);
}
let status = this;
ServeManager.instance.saveInstitutionListData(this.institutionList, () => {
//进入新单位
status.onSelectInsSuccess(insData);
});
}
//#endregion
//#region babylonGUI 新建单位
//开启新建界面
onNewIns() {
this.closeSelectWindow();
this.institutionCreateWindow = UIManager.open<InstitutionCreateWindow>(InstitutionCreateWindow);
let status = this;
this.institutionCreateWindow.startCreate();
}
//关闭创建界面
closeCreateWindow() {
if (this.institutionCreateWindow != null) {
UIManager.close(this.institutionCreateWindow);
}
this.institutionCreateWindow = null;
}
//保存新单位信息至服务器
saveNewIns(status: LoginSatus, insData: InstitutionData, key: string, onSuccess?: (insDataSimple: InsitutionDataSimple) => void) {
ServeManager.instance.saveInstitutionData(insData, key, (key, result) => {
console.log("在服务器新建单位" + key);
let insDataSimple = new InsitutionDataSimple();
insDataSimple.key = key;
insDataSimple.name = insData.normalData.name;
status.onCreateInsSuccess(insDataSimple);
if (onSuccess != null) {
onSuccess(insDataSimple);
}
});
}
//#endregion
}