|
|
@@ -33,8 +33,11 @@
|
|
|
<template v-slot:title>
|
|
|
<span class="card-title">内部数据</span>
|
|
|
</template>
|
|
|
+ <template v-slot:extra>
|
|
|
+ <lay-button class="card-button" @click="handleSwitchRun">{{ predictorSwitchRun ? "暂停" : "运行" }}</lay-button>
|
|
|
+ </template>
|
|
|
<template v-slot:body>
|
|
|
- <div class="predictor-chart" ref="predictorChartRef" @mouseleave="startPredictorInterval" @mouseenter="stopPredictorInterval"></div>
|
|
|
+ <div class="predictor-chart" ref="predictorChartRef"></div>
|
|
|
</template>
|
|
|
</lay-card>
|
|
|
|
|
|
@@ -81,7 +84,10 @@ const logtextRef = ref();
|
|
|
const route = useRoute();
|
|
|
|
|
|
interface PageConfig {
|
|
|
- loading: boolean;
|
|
|
+ predictorLoading: boolean;
|
|
|
+ robotLoading: boolean;
|
|
|
+ balanceLoading: boolean;
|
|
|
+ logsLoading: boolean;
|
|
|
}
|
|
|
interface Logs {
|
|
|
time?: string;
|
|
|
@@ -89,34 +95,37 @@ interface Logs {
|
|
|
}
|
|
|
|
|
|
let pageConfig: PageConfig = reactive({
|
|
|
- loading: false,
|
|
|
+ predictorLoading: false,
|
|
|
+ robotLoading: false,
|
|
|
+ balanceLoading: false,
|
|
|
+ logsLoading: false,
|
|
|
});
|
|
|
|
|
|
const columns = ref([
|
|
|
{ title: "时间", key: "time", width: 150 },
|
|
|
{ title: "日志", key: "text", customSlot: "text" },
|
|
|
]);
|
|
|
+
|
|
|
let logsList = ref<Array<Logs>>();
|
|
|
let robotDetail = ref<any>({});
|
|
|
let balanceList = ref([]);
|
|
|
let balanceChart = shallowRef();
|
|
|
let predictorChart = shallowRef();
|
|
|
let predictorInterval = ref();
|
|
|
+let predictorSwitchRun = ref(true);
|
|
|
+let requestLimit = ref(false);
|
|
|
let timer = ref();
|
|
|
|
|
|
const getPredictorState = () => {
|
|
|
const params = { botId: route.params.id, startTime: +new Date() - 7 * 24 * 60 * 60 * 1000, endTime: +new Date() };
|
|
|
- if (pageConfig.loading) return;
|
|
|
- pageConfig.loading = true;
|
|
|
+ if (pageConfig.predictorLoading) return;
|
|
|
+ pageConfig.predictorLoading = true;
|
|
|
get_as_robot_detail(params, (data: any) => {
|
|
|
- pageConfig.loading = false;
|
|
|
-
|
|
|
- if (data.code == 200) {
|
|
|
- !predictorChart.value ? initPredictorChart(data.data) : updatePredictorChart(data.data);
|
|
|
- }
|
|
|
+ pageConfig.predictorLoading = false;
|
|
|
+ if (data.code == 200 && data.data != null) !predictorChart.value ? initPredictorChart(data.data) : updatePredictorChart(data.data);
|
|
|
+ requestLimit.value = false;
|
|
|
});
|
|
|
};
|
|
|
-getPredictorState();
|
|
|
|
|
|
const initPredictorChart = (data: any) => {
|
|
|
if (predictorChart.value != null && !predictorChart.value.isDisposed()) echarts.dispose(predictorChart.value);
|
|
|
@@ -389,8 +398,12 @@ const updatePredictorChart = (data: any) => {
|
|
|
|
|
|
const startPredictorInterval = () => {
|
|
|
if (!predictorInterval.value) {
|
|
|
+ getPredictorState();
|
|
|
predictorInterval.value = setInterval(() => {
|
|
|
- getPredictorState();
|
|
|
+ if (!requestLimit.value) {
|
|
|
+ requestLimit.value = true;
|
|
|
+ getPredictorState();
|
|
|
+ }
|
|
|
}, 5000);
|
|
|
}
|
|
|
};
|
|
|
@@ -406,9 +419,9 @@ const stopPredictorInterval = () => {
|
|
|
// 获取机器人详情
|
|
|
const getRobotDetail = () => {
|
|
|
const params = { id: route.params.id };
|
|
|
- pageConfig.loading = true;
|
|
|
+ pageConfig.robotLoading = true;
|
|
|
get_robot_detail(params, (data: any) => {
|
|
|
- pageConfig.loading = false;
|
|
|
+ pageConfig.robotLoading = false;
|
|
|
if (data.code == 200) {
|
|
|
robotDetail.value = data.data;
|
|
|
document.title = data.data.name;
|
|
|
@@ -418,9 +431,9 @@ const getRobotDetail = () => {
|
|
|
};
|
|
|
const getBalanceInfo = (id: number) => {
|
|
|
const params = { id: id };
|
|
|
- pageConfig.loading = true;
|
|
|
+ pageConfig.balanceLoading = true;
|
|
|
get_remaining_detail(params, (data: any) => {
|
|
|
- pageConfig.loading = false;
|
|
|
+ pageConfig.balanceLoading = false;
|
|
|
if (data.code == 200) {
|
|
|
balanceList.value = data.data;
|
|
|
|
|
|
@@ -458,11 +471,10 @@ const getBalanceInfo = (id: number) => {
|
|
|
|
|
|
// 请求机器人日志
|
|
|
const getLogsInfo = () => {
|
|
|
- pageConfig.loading = true;
|
|
|
const params = { id: route.params.id, n: 500 };
|
|
|
- pageConfig.loading = true;
|
|
|
+ pageConfig.logsLoading = true;
|
|
|
get_robot_logs(params, (data: any) => {
|
|
|
- pageConfig.loading = false;
|
|
|
+ pageConfig.logsLoading = false;
|
|
|
if (data.code == 200) {
|
|
|
logsList.value = handlePageInfo(data.data);
|
|
|
}
|
|
|
@@ -474,6 +486,16 @@ const showLog = (data: any) => {
|
|
|
logtextRef.value.show(data);
|
|
|
};
|
|
|
|
|
|
+const handleSwitchRun = () => {
|
|
|
+ if (predictorSwitchRun.value) {
|
|
|
+ predictorSwitchRun.value = false;
|
|
|
+ stopPredictorInterval();
|
|
|
+ } else {
|
|
|
+ predictorSwitchRun.value = true;
|
|
|
+ startPredictorInterval();
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
const handlePageInfo = (data: any) => {
|
|
|
let infoList = data;
|
|
|
let result = infoList.map((item: string) => {
|
|
|
@@ -558,6 +580,9 @@ onUnmounted(() => {
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
+.card-button {
|
|
|
+ padding: 2px 18px;
|
|
|
+}
|
|
|
.ellipsis-2 {
|
|
|
display: -webkit-box;
|
|
|
-webkit-box-orient: vertical;
|