|
|
@ -40,11 +40,11 @@ export class OperLogs implements Command
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let userName = localStorage.getItem(StoreageKeys.UserName);
|
|
|
|
let userName = localStorage.getItem(StoreageKeys.UserName);
|
|
|
|
let res: Response;
|
|
|
|
let curUserFileHistoryRes: Response;//当前用户操作历史(备份服务器)
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
res = await fetch(`${FileHistoryUrl}?user=${userName}&fileId=${fid}`);
|
|
|
|
curUserFileHistoryRes = await fetch(`${FileHistoryUrl}?user=${userName}&fileId=${fid}`);
|
|
|
|
if (res.status !== 200) return;
|
|
|
|
if (curUserFileHistoryRes.status !== 200) return;
|
|
|
|
} catch (error)
|
|
|
|
} catch (error)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
AppToaster.show({
|
|
|
|
AppToaster.show({
|
|
|
@ -55,23 +55,38 @@ export class OperLogs implements Command
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let allFiles = await curUserFileHistoryRes.json() as string[];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let operLogsRes = await PostJson(SignUrl.operLogs, { obj_type: 1, obj_value: fid });//服务端操作历史
|
|
|
|
|
|
|
|
if (operLogsRes.err_code !== RequestStatus.Ok) return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let userNames: Set<string> = new Set;
|
|
|
|
|
|
|
|
for (let date of operLogsRes.data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let user = date.oper_user as string;
|
|
|
|
|
|
|
|
if (user === userName || userNames.has(user)) continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
userNames.add(date.oper_user);
|
|
|
|
|
|
|
|
let res = await fetch(`${FileHistoryUrl}?user=${date.oper_user}&fileId=${fid}`);
|
|
|
|
|
|
|
|
if (res.status !== 200) continue;
|
|
|
|
|
|
|
|
|
|
|
|
let files = await res.json() as string[];
|
|
|
|
let files = await res.json() as string[];
|
|
|
|
files.sort((f1, f2) =>
|
|
|
|
allFiles.concat(files);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
allFiles.sort((f1, f2) =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return this.ParseTime(f2) - this.ParseTime(f1);
|
|
|
|
return this.ParseTime(f2) - this.ParseTime(f1);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
files.length = Math.min(files.length, 35);
|
|
|
|
allFiles.length = Math.min(allFiles.length, 35);
|
|
|
|
|
|
|
|
|
|
|
|
let Res = await PostJson(SignUrl.operLogs, { obj_type: 1, obj_value: fid });
|
|
|
|
|
|
|
|
if (Res.err_code !== RequestStatus.Ok) return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const data = Res.data.reverse();
|
|
|
|
const data = operLogsRes.data.reverse();
|
|
|
|
if (!this._IsOpenFile)
|
|
|
|
if (!this._IsOpenFile)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
app.Editor.ModalManage.RenderModal(OperLogsModal, {
|
|
|
|
app.Editor.ModalManage.RenderModal(OperLogsModal, {
|
|
|
|
fileId: fid,
|
|
|
|
fileId: fid,
|
|
|
|
userName: userName,
|
|
|
|
userName: userName,
|
|
|
|
files: files,
|
|
|
|
files: allFiles,
|
|
|
|
data: data,
|
|
|
|
data: data,
|
|
|
|
OnClickOpenFile: this.OnClickOpenFile,
|
|
|
|
OnClickOpenFile: this.OnClickOpenFile,
|
|
|
|
isNotToaster: true,
|
|
|
|
isNotToaster: true,
|
|
|
@ -80,7 +95,7 @@ export class OperLogs implements Command
|
|
|
|
if (Rm.Status !== ModalState.Ok) return;
|
|
|
|
if (Rm.Status !== ModalState.Ok) return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
let time = files.length === 0 ? 5000 : 10000; //窗口持续时间
|
|
|
|
let time = allFiles.length === 0 ? 5000 : 10000; //窗口持续时间
|
|
|
|
|
|
|
|
|
|
|
|
if (HistoryToaster)
|
|
|
|
if (HistoryToaster)
|
|
|
|
HistoryToaster.clear();
|
|
|
|
HistoryToaster.clear();
|
|
|
@ -89,7 +104,7 @@ export class OperLogs implements Command
|
|
|
|
<OpenHistoryBody
|
|
|
|
<OpenHistoryBody
|
|
|
|
fileId={fid}
|
|
|
|
fileId={fid}
|
|
|
|
userName={userName}
|
|
|
|
userName={userName}
|
|
|
|
files={files}
|
|
|
|
files={allFiles}
|
|
|
|
data={data}
|
|
|
|
data={data}
|
|
|
|
time={time}
|
|
|
|
time={time}
|
|
|
|
isOpenFile={this._IsOpenFile}
|
|
|
|
isOpenFile={this._IsOpenFile}
|
|
|
|