|
|
@@ -0,0 +1,102 @@
|
|
|
+<template>
|
|
|
+ <lay-layer :title="modelConfig.title" v-model="modelConfig.visible" area="auto" :btn="operator">
|
|
|
+ <lay-loading class="custom-loading" :loading="modelConfig.loading">
|
|
|
+ <div class="custom-layer" style="padding: 20px">
|
|
|
+ <lay-form :model="modelParams" ref="modelFormRef" required>
|
|
|
+ <lay-form-item label="导出时间" prop="rangeTime">
|
|
|
+ <lay-date-picker v-model="modelParams.rangeTime" range type="datetime" :placeholder="['开始日期', '结束日期']" />
|
|
|
+ </lay-form-item>
|
|
|
+ </lay-form>
|
|
|
+ </div>
|
|
|
+ </lay-loading>
|
|
|
+ </lay-layer>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup>
|
|
|
+import { ref, reactive, getCurrentInstance } from "vue";
|
|
|
+import dayjs from "dayjs";
|
|
|
+import { export_robot_info } from "@/api";
|
|
|
+
|
|
|
+const { proxy }: any = getCurrentInstance();
|
|
|
+
|
|
|
+const modelFormRef = ref();
|
|
|
+
|
|
|
+interface ModelConfig {
|
|
|
+ title: string;
|
|
|
+ visible: boolean;
|
|
|
+ isUpdate: boolean;
|
|
|
+ loading: boolean;
|
|
|
+}
|
|
|
+interface ModelParams {
|
|
|
+ rangeTime?: any;
|
|
|
+ startTime?: string;
|
|
|
+ endTime?: string;
|
|
|
+}
|
|
|
+
|
|
|
+let modelParams = ref<ModelParams>({});
|
|
|
+let modelConfig: ModelConfig = reactive({ title: "", visible: false, isUpdate: false, loading: false });
|
|
|
+
|
|
|
+let handleResult = reactive<{ resolve?: any; reject?: any }>({});
|
|
|
+
|
|
|
+const show = async (params?: any) => {
|
|
|
+ modelConfig.visible = true;
|
|
|
+ modelConfig.isUpdate = !!params;
|
|
|
+ const startTime = dayjs().subtract(1, "day").set("hour", 8).set("minute", 0).set("second", 0).set("millisecond", 0).format("YYYY-MM-DD HH:mm:ss");
|
|
|
+ const endTime = dayjs().set("hour", 8).set("minute", 0).set("second", 0).set("millisecond", 0).format("YYYY-MM-DD HH:mm:ss");
|
|
|
+ modelParams.value = { rangeTime: [startTime, endTime] };
|
|
|
+ modelConfig.title = "导出机器人交易数据";
|
|
|
+ return new Promise(async (resolve, reject) => {
|
|
|
+ handleResult.resolve = resolve;
|
|
|
+ handleResult.reject = reject;
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const operator = reactive([
|
|
|
+ {
|
|
|
+ text: "导出",
|
|
|
+ callback: () => {
|
|
|
+ modelFormRef.value.validate((isValidate: boolean) => {
|
|
|
+ if (isValidate) {
|
|
|
+ modelConfig.loading = true;
|
|
|
+ const params = {
|
|
|
+ startTime: +dayjs(modelParams?.value.rangeTime[0]),
|
|
|
+ endTime: +dayjs(modelParams?.value.rangeTime[1]),
|
|
|
+ };
|
|
|
+ export_robot_info(params, (data: any) => {
|
|
|
+ // 创建包含文件数据的新 Blob 对象
|
|
|
+ const url = window.URL.createObjectURL(new Blob([data]));
|
|
|
+ const link = document.createElement("a");
|
|
|
+ link.href = url;
|
|
|
+ link.setAttribute("download", `${dayjs().format("YYYY-MM-DD HH:mm:ss")}导出.xlsx`); // 指定下载的文件名
|
|
|
+ document.body.appendChild(link);
|
|
|
+ link.click();
|
|
|
+
|
|
|
+ // 释放资源
|
|
|
+ link.parentNode?.removeChild(link);
|
|
|
+ window.URL.revokeObjectURL(url);
|
|
|
+
|
|
|
+ proxy.$message("导出成功!");
|
|
|
+ modelConfig.loading = false;
|
|
|
+ modelConfig.visible = false;
|
|
|
+ handleResult.resolve(true);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "取消",
|
|
|
+ callback: () => {
|
|
|
+ modelConfig.visible = false;
|
|
|
+ handleResult.resolve(false);
|
|
|
+ },
|
|
|
+ },
|
|
|
+]);
|
|
|
+defineExpose({ show });
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.operator-wp {
|
|
|
+ padding-left: 110px;
|
|
|
+}
|
|
|
+</style>
|