Forráskód Böngészése

旧版后台数据查询功能

倚楼听风雨 3 éve
szülő
commit
b4f0698a85
2 módosított fájl, 432 hozzáadás és 18 törlés
  1. 64 18
      src/api/data_abnormal_rate.js
  2. 368 0
      src/view/oldDataShow/oldDataShow.vue

+ 64 - 18
src/api/data_abnormal_rate.js

@@ -2,7 +2,7 @@
  * @Author: 倚楼听风雨 18408246387@163.com
  * @Date: 2023-02-02 13:47:20
  * @LastEditors: 倚楼听风雨 18408246387@163.com
- * @LastEditTime: 2023-02-13 11:22:07
+ * @LastEditTime: 2023-03-22 15:26:49
  * @FilePath: \log-server-web\src\api\data_abnormal_rate.js
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
@@ -55,26 +55,72 @@ export const exportLedgerListExcel = (tableData, fileName) => {
 };
 
 const handleFileError = (res, fileName) => {
-  if (typeof (res.data) !== 'undefined') {
-    if (res.data.type === 'application/json') {
-      const reader = new FileReader()
-      reader.onload = function() {
-        const message = JSON.parse(reader.result).msg
+  if (typeof res.data !== "undefined") {
+    if (res.data.type === "application/json") {
+      const reader = new FileReader();
+      reader.onload = function () {
+        const message = JSON.parse(reader.result).msg;
         ElMessage({
           showClose: true,
           message: message,
-          type: 'error'
-        })
-      }
-      reader.readAsText(new Blob([res.data]))
+          type: "error",
+        });
+      };
+      reader.readAsText(new Blob([res.data]));
     }
   } else {
-    var downloadUrl = window.URL.createObjectURL(new Blob([res]))
-    var a = document.createElement('a')
-    a.style.display = 'none'
-    a.href = downloadUrl
-    a.download = fileName
-    var event = new MouseEvent('click')
-    a.dispatchEvent(event)
+    var downloadUrl = window.URL.createObjectURL(new Blob([res]));
+    var a = document.createElement("a");
+    a.style.display = "none";
+    a.href = downloadUrl;
+    a.download = fileName;
+    var event = new MouseEvent("click");
+    a.dispatchEvent(event);
   }
-}
+};
+//==================================
+export const getOldDataList = (data) => {
+  return service({
+    url: "/dataStatistics/getOldDataList",
+    method: "post",
+    data,
+  });
+};
+export const exportSyDataListExcel = (tableData, fileName) => {
+  service({
+    url: "/dataStatistics/exportSyDataListExcel",
+    method: "post",
+    data: {
+      fileName: fileName,
+      infoList: tableData,
+    },
+    responseType: "blob",
+  }).then((res) => {
+    handleFileError(res, fileName);
+  });
+};
+
+// const handleFileError = (res, fileName) => {
+//   if (typeof res.data !== "undefined") {
+//     if (res.data.type === "application/json") {
+//       const reader = new FileReader();
+//       reader.onload = function () {
+//         const message = JSON.parse(reader.result).msg;
+//         ElMessage({
+//           showClose: true,
+//           message: message,
+//           type: "error",
+//         });
+//       };
+//       reader.readAsText(new Blob([res.data]));
+//     }
+//   } else {
+//     var downloadUrl = window.URL.createObjectURL(new Blob([res]));
+//     var a = document.createElement("a");
+//     a.style.display = "none";
+//     a.href = downloadUrl;
+//     a.download = fileName;
+//     var event = new MouseEvent("click");
+//     a.dispatchEvent(event);
+//   }
+// };

+ 368 - 0
src/view/oldDataShow/oldDataShow.vue

@@ -0,0 +1,368 @@
+<template>
+  <div>
+    <div class="gva-search-box">
+      <div class="gva-btn-list">
+        <el-form ref="searchForm" :inline="true" :model="searchInfo">
+          <el-form-item label="任务Id">
+            <el-input v-model="searchInfo.task_id" placeholder="任务ID" />
+          </el-form-item>
+          <el-form-item label="任务名称">
+            <el-input v-model="searchInfo.task_name" placeholder="任务名称" />
+          </el-form-item>
+          <el-form-item label="日期" prop="date">
+            <el-date-picker
+              v-model="searchInfo.new_date"
+              size="default"
+              type="daterange"
+              unlink-panels
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              :disabled-date="disabledDate"
+              :shortcuts="shortcuts"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button
+              size="small"
+              type="primary"
+              icon="search"
+              @click="onSubmit"
+              >查询</el-button
+            >
+            <el-button size="small" icon="refresh" @click="onReset"
+              >重置</el-button
+            >
+            <el-button
+              class="excel-btn"
+              size="small"
+              type="primary"
+              icon="download"
+              @click="exportExcel"
+              >导出表格</el-button
+            >
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+    <p style="color: brown">
+      旧平台历史数据仅供查询参考,详情请移步<a
+        style="color: blue"
+        href="http://sjyh.kfzs.com"
+        target="_blank"
+        >http://sjyh.kfzs.com</a
+      >
+    </p>
+    <div class="gva-table-box" style="padding: 0">
+      <el-table
+        :data="tableData"
+        border
+        stripe
+        align="center"
+        header-align="center"
+        height="550"
+        size="small"
+        :default-sort="{ prop: 'task_id', order: 'ascending' }"
+        v-loading="loading"
+      >
+        <el-table-column type="index" label="#" min-width="10" fixed="left" />
+        <el-table-column
+          fixed="left"
+          prop="new_date"
+          label="日期"
+          min-width="90"
+        />
+        <el-table-column
+          fixed="left"
+          prop="task_id"
+          label="任务ID"
+          min-width="80"
+        />
+        <el-table-column
+          fixed="left"
+          prop="task_name"
+          label="任务名称"
+          min-width="100"
+        />
+        <el-table-column prop="" label="目标" min-width="60" align="center">
+          <el-table-column
+            prop="target_new"
+            label="新增"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="target_lc"
+            label="留存"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="target_pay"
+            label="付费"
+            min-width="60"
+            align="center"
+          />
+        </el-table-column>
+        <el-table-column prop="" label="完成" min-width="60" align="center">
+          <el-table-column
+            prop="complete_new"
+            label="新增"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="complete_lc"
+            label="留存"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="complete_pay"
+            label="付费"
+            min-width="60"
+            align="center"
+          />
+        </el-table-column>
+        <el-table-column prop="" label="未完" min-width="60" align="center">
+          <el-table-column
+            prop="incomplete_new"
+            label="新增"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="incomplete_lc"
+            label="留存"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="incomplete_pay"
+            label="付费"
+            min-width="60"
+            align="center"
+          />
+        </el-table-column>
+        <el-table-column prop="" label="手动" min-width="100" align="center">
+          <el-table-column
+            prop="complete_pay_hand"
+            label="手动付费数量"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="amount_hand"
+            label="手动付费金额"
+            min-width="60"
+            align="center"
+          />
+          <el-table-column
+            prop="remark"
+            label="异常记录"
+            min-width="60"
+            align="center"
+          />
+        </el-table-column>
+        <el-table-column
+          prop="amount"
+          label="总付费金额"
+          min-width="60"
+          align="center"
+        />
+      </el-table>
+      <div class="gva-pagination">
+        <el-pagination
+          :current-page="page"
+          :page-size="pageSize"
+          :page-sizes="[10, 20, 30, 50, 100]"
+          :total="total"
+          layout="total, sizes, prev, pager, next, jumper"
+          @current-change="handleCurrentChange"
+          @size-change="handleSizeChange"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "data_abnormal_rate",
+};
+</script>
+
+<script setup>
+import { getOldDataList,exportSyDataListExcel } from "@/api/data_abnormal_rate";
+import { ref } from "vue";
+import dayjs from "dayjs";
+// import { ElMessage } from "element-plus";
+
+const page = ref(1);
+const total = ref(0);
+const pageSize = ref(20);
+const tableData = ref([]);
+const searchInfo = ref({});
+const loading = ref(false);
+
+const disabledDate = (time) => {
+  return time.getTime() > Date.now();
+};
+
+const shortcuts = [
+  {
+    text: "今日",
+    value: () => {
+      const end = new Date();
+      const start = new Date();
+      return [start, end];
+    },
+  },
+  {
+    text: "最近一周",
+    value: () => {
+      const end = new Date();
+      const start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+      return [start, end];
+    },
+  },
+  {
+    text: "最近一月",
+    value: () => {
+      const end = new Date();
+      const start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+      return [start, end];
+    },
+  },
+];
+
+// 分页
+const handleSizeChange = (val) => {
+  pageSize.value = val;
+  getTableData();
+};
+const onReset = () => {
+  searchInfo.value = {};
+};
+const handleCurrentChange = (val) => {
+  page.value = val;
+  getTableData();
+};
+
+// 搜索
+const onSubmit = () => {
+  if (typeof searchInfo.value.task_id != "undefined") {
+    searchInfo.value.task_id = Number(searchInfo.value.task_id);
+  }
+  if (typeof searchInfo.value.new_date != "undefined") {
+    searchInfo.value.new_date[0] = dayjs(searchInfo.value.new_date[0]).format(
+      "YYYY-MM-DD"
+    );
+    searchInfo.value.new_date[1] = dayjs(searchInfo.value.new_date[1]).format(
+      "YYYY-MM-DD"
+    );
+  }
+
+  // console.log(searchInfo.value);
+
+  getTableData();
+};
+
+// 查询
+const getTableData = async () => {
+  loading.value = true;
+  // ElMessage({
+  //   message: "查询中,请稍等",
+  //   type: "success",
+  //   offset: 50,
+  // });
+  const table = await getOldDataList({
+    page: page.value,
+    pageSize: pageSize.value,
+    ...searchInfo.value,
+  });
+  if (table.code === 0) {
+    tableData.value = [];
+    const data = table.data.list;
+    if (data) {
+      data.forEach((e) => {
+        let obj1 = {
+          task_id: e.task_id,
+          task_name: e.task_name,
+          new_date: dayjs(e.new_date).format("YYYY-MM-DD"),
+          target_new: e.target_new,
+          target_pay: e.target_pay,
+          target_lc:
+            e.target_active - e.target_new < 0
+              ? 0
+              : e.target_active - e.target_new,
+          complete_new: e.complete_new,
+          complete_lc: e.complete_active - e.complete_new,
+          complete_pay: e.complete_pay,
+          incomplete_new:
+            e.target_new - e.complete_new < 0
+              ? 0
+              : e.target_new - e.complete_new,
+          incomplete_pay:
+            e.target_pay - e.complete_pay < 0
+              ? 0
+              : e.target_pay - e.complete_pay,
+          incomplete_lc:
+            e.target_active -
+              e.target_new -
+              (e.complete_active - e.complete_new) <
+            0
+              ? 0
+              : e.target_active -
+                e.target_new -
+                (e.complete_active - e.complete_new),
+          complete_pay_hand: e.complete_pay_hand,
+          amount_hand: e.amount_hand,
+          remark: e.remark,
+          amount: e.amount,
+        };
+        tableData.value.push(obj1);
+      });
+    }
+    // console.log(tableData);
+    total.value = table.data.total;
+    page.value = table.data.page;
+    pageSize.value = table.data.pageSize;
+  }
+  loading.value = false;
+};
+
+const exportExcel = async () => {
+  var fileName = "";
+  if (searchInfo.value.new_date == null) {
+    let dt = new Date(Date.parse(new Date()) - 1 * 24 * 60 * 60 * 1000);
+    var y = dt.getFullYear();
+    var mt = (dt.getMonth() + 1).toString().padStart(2, "0");
+    var day = dt.getDate().toString().padStart(2, "0");
+    var timeStr = y + "-" + mt + "-" + day;
+    fileName = timeStr + "-数优数据.xlsx";
+  } else {
+    fileName = searchInfo.value.new_date + "-数优数据.xlsx";
+  }
+  exportSyDataListExcel(
+    { page: page.value, pageSize: pageSize.value, ...searchInfo.value },
+    fileName
+  );
+};
+
+getTableData();
+</script>
+
+<style scoped lang="scss">
+.button-box {
+  padding: 10px 20px;
+  .el-button {
+    float: right;
+  }
+}
+.warning {
+  color: #dc143c;
+}
+</style>