Browse Source

订单日志

蒋科 2 months ago
parent
commit
2219a722ac

+ 4 - 4
.env.development

@@ -2,7 +2,7 @@
 ENV = 'development'
 
 # base api
-# VUE_APP_BASE_API = 'http://zk.li-ai.com.cn:8080/api'
-# VUE_APP_BASE_API = 'https://53670u39m2.goho.co/api'
-VUE_APP_BASE_API = "http://192.168.3.251:8080/api"
-VUE_APP_WS = 'ws://192.168.3.251:8080/ws/'
+# VUE_APP_BASE_API = "http://192.168.3.251:8080/api"
+# VUE_APP_WS = 'ws://192.168.3.251:8080/ws/'
+VUE_APP_BASE_API = "http://192.168.0.2/api"
+VUE_APP_WS = 'ws://192.168.0.2/ws/'

+ 2 - 2
.env.production

@@ -2,7 +2,7 @@
 ENV = 'production'
 
 # base api
-VUE_APP_BASE_API = "http://192.168.6.251:8080/api"
-VUE_APP_WS = 'ws://192.168.6.251:8080/ws/'
+VUE_APP_BASE_API = "/api"
+VUE_APP_WS = '/ws/'
 # VUE_APP_BASE_API = 'http://zk.li-ai.com.cn:8090/api'
 # VUE_APP_WS = 'ws://zk.li-ai.com.cn:8090/ws'

+ 17 - 1
src/api/log.js

@@ -40,6 +40,22 @@ export function chargerList(data) {
     data
   })
 }
+//订单数据字典
+export function orderModel(data) {
+  return request({
+    url: '/dictData/orderList',
+    method: 'post',
+    data
+  })
+}
+//充电订单日志列表
+export function orderChargerList(data) {
+  return request({
+    url: '/log/orderList',
+    method: 'post',
+    data
+  })
+}
 //BMS日志列表
 export function bmsList(data) {
   return request({
@@ -72,4 +88,4 @@ export function exportFile(data) {
 //   })
 // }
 // //导出结果
-// export function
+// export function

BIN
src/layout/components/assets/i4-active.png


BIN
src/layout/components/assets/i4.png


BIN
src/layout/components/assets/i5-active.png


BIN
src/layout/components/assets/i5.png


BIN
src/layout/components/assets/i6-active.png


BIN
src/layout/components/assets/i6.png


+ 8 - 2
src/router/index.js

@@ -32,8 +32,8 @@ export const constantRoutes = [
     component: () => import('@/views/error-page/404'),
     hidden: true
   },
-  { 
-    path: '/', 
+  {
+    path: '/',
     redirect: '/equipment-monitoring',
     component: Layout,
     hidden: true,
@@ -60,6 +60,12 @@ export const constantRoutes = [
         name: 'BatteryCharger',
         meta: { title: '充电机日志' }
       },
+      {
+        path: '/manage-log/order-charger',
+        component: () => import('@/views/manage-log/order-charger'),
+        name: 'OrderCharger',
+        meta: { title: '订单日志' }
+      },
       {
         path: '/manage-log/bms',
         component: () => import('@/views/manage-log/bms'),

+ 3 - 1
src/views/manage-log/data-export.vue

@@ -201,6 +201,8 @@ export default {
   destroyed() {
     //清除定时器
     this.clearListTimer();
+    console.log('232323');
+
   },
   methods: {
     //定时请求导出列表
@@ -212,7 +214,7 @@ export default {
     //清除定时器
     clearListTimer() {
       if (this.exportTimer) {
-        window.clearInterval(this.exportTimer);
+        clearInterval(this.exportTimer);
       }
     },
     /* 设置初始视窗高度*/

+ 408 - 0
src/views/manage-log/order-charger.vue

@@ -0,0 +1,408 @@
+<template>
+  <div class="charge-box">
+    <div class="charge-tools">
+      <el-form :inline="true" :model="queryParams">
+        <el-form-item label="日志范围:" style="margin-left: 35px">
+          <el-select
+            multiple
+            v-model="robotValue"
+            clearable
+            placeholder="请选择"
+            @change="changeSelect"
+            collapse-tags
+            @remove-tag="removeTag"
+          >
+            <el-option
+              label="全选"
+              value="全选"
+              @click.native="selectAll"
+            ></el-option>
+            <el-option
+              v-for="item in logOptions"
+              :key="item.field"
+              :label="item.name"
+              :value="item.field"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="充电机ID:" style="margin-left: 35px">
+          <el-select
+            v-model="queryParams.deviceNo"
+            clearable
+            placeholder="请选择"
+          >
+            <el-option
+              v-for="item in chargerArr"
+              :key="item.value"
+              :label="item + '号充电机'"
+              :value="item"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="时间范围:" style="margin-left: 50px">
+          <el-date-picker
+            v-model="dateTime"
+            class="times"
+            type="datetimerange"
+            range-separator="至"
+            start-placeholder="开始时间"
+            end-placeholder="结束时间"
+            format="yyyy-MM-dd HH:mm:ss"
+          />
+        </el-form-item>
+
+        <el-form-item>
+          <el-button type="primary" class="serch actve" @click="handleQuery"
+            >查询</el-button
+          >
+          <el-button type="primary" class="serch" @click="resetForm"
+            >重置</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </div>
+
+    <div class="charge-table">
+      <div class="charge-table-top">
+        <el-button type="primary" class="daochu" @click="chargeExport"
+          >导出结果</el-button
+        >
+      </div>
+      <div class="charge-table-bottom">
+        <el-table
+          :data="datalist"
+          :header-cell-style="{
+            background: '#1d283e',
+            borderColor: '#2f3c86',
+            height: '36px',
+            lineHeight: '36px',
+            color: 'white',
+            fontSize: '15px',
+          }"
+          stripe
+          fit
+          :height="tableheight"
+          style="width: 100%"
+          ref="tblist"
+          v-loading="loading"
+          v-tableFit
+        >
+          <el-table-column
+            v-if="logOptions.length > 0"
+            prop="time"
+            label="发生时间"
+            fixed
+            width="198"
+          >
+          </el-table-column>
+          <el-table-column
+            v-if="logOptions.length > 0"
+            prop="deviceNo"
+            label="充电机ID"
+            fixed
+            width="150"
+          >
+          </el-table-column>
+          <el-table-column
+            v-for="log in logheader"
+            :key="log.field"
+            :label="log.name"
+            :render-header="labelHead"
+          >
+            <template slot-scope="scope">
+              {{ scope.row[log.field] }}
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <div class="pageblock">
+        <el-pagination
+          :current-page="queryParams.page"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="queryParams.pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+        />
+      </div>
+    </div>
+    <!--导出弹窗-->
+    <div class="rolemanage chargeshow">
+      <el-dialog
+        title="生成导出任务"
+        :visible.sync="dialogExportVisible"
+        :destroy-on-close="true"
+      >
+        <div class="setExport">
+          <el-form :model="ruleForm" :rules="rules" ref="ExportForm">
+            <el-form-item label="任务名称" prop="exportName">
+              <el-input
+                v-model="ruleForm.exportName"
+                placeholder="请输入任务名称"
+              ></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="AddExport">生成</el-button>
+            </el-form-item>
+          </el-form>
+          <div class="descript">
+            说明:导出任务生成后,你可以在数据导出列表中进行查询和下载
+          </div>
+        </div>
+      </el-dialog>
+    </div>
+    <!--导出弹窗结束-->
+  </div>
+</template>
+
+<script>
+import "./log.scss";
+import { getChargeCode } from "@/api/records";
+import { orderModel, orderChargerList, exportFile } from "@/api/log";
+export default {
+  name: "OrderCharger",
+  components: {},
+  data() {
+    return {
+      // 查询时间数组
+      dateTime: "",
+      // 充电机ID下拉列表
+      chargerArr: null,
+      // 数据列表
+      datalist: [],
+      // 查询参数
+      queryParams: {
+        page: 1, // 当前页
+        pageSize: 10, // 每页条数
+        deviceNo: undefined, // 充电机ID
+        endTime: undefined, // 电池编号
+        signals: undefined, // 排序字段
+        startTime: undefined, // 排序方式
+        sort: 1,
+      },
+      total: 0, // 总条数,
+      tableheight: 0, // 表格高度设置
+      dialogExportVisible: false, // 弹窗显示
+      checked: false,
+      indeterminate: false,
+      robotValue: "",
+      logOptions: [],
+      logheader: [],
+      heightTimer: false,
+      loading: false,
+      ruleForm: {
+        exportName: undefined,
+      },
+      rules: {
+        exportName: [
+          { required: true, message: "请输入任务名称", trigger: "blur" },
+          {
+            min: 2,
+            max: 20,
+            message: "长度在 2 到 20 个字符",
+            trigger: "blur",
+          },
+        ],
+      },
+    };
+  },
+  mounted() {
+    this.getChargeCode();
+    this.onLoadHeight();
+    this.changeWindow();
+    this.getLogModel();
+    this.getchargerList();
+    console.log(this,'this')
+  },
+  methods: {
+    labelHead(h, { column, index }) {
+      let l = column.label.length;
+      let f = 30;
+      if (l <= 1) {
+        f = 30;
+      }
+      if ( column.label == "订单号" || column.label=='车辆识别码') {
+        column.minWidth = f * l + 100;
+      } else {
+        column.minWidth = f * l;
+      }
+      return h("div", { class: "table-head", style: { minWidth: "100%" } }, [
+        column.label,
+      ]);
+    },
+
+    // 获取充电机ID
+    getChargeCode() {
+      getChargeCode().then((res) => {
+        this.chargerArr = res.data;
+      });
+    },
+    selectAll() {
+      if (this.robotValue.length < this.logOptions.length) {
+        this.robotValue = [];
+        this.logOptions.map((item) => {
+          this.robotValue.push(item.field);
+        });
+        this.robotValue.unshift("全选");
+      } else {
+        this.robotValue = [];
+      }
+    },
+    changeSelect(val) {
+      if (!val.includes("全选") && val.length === this.logOptions.length) {
+        this.robotValue.unshift("全选");
+      } else if (
+        val.includes("全选") &&
+        val.length - 1 < this.logOptions.length
+      ) {
+        this.robotValue = this.robotValue.filter((item) => {
+          return item !== "全选";
+        });
+      }
+    },
+    removeTag(val) {
+      if (val === "全选") {
+        this.robotValue = [];
+      }
+    },
+    //获取充电机日志列表
+    getchargerList() {
+      this.loading = true;
+      orderChargerList(this.queryParams).then((res) => {
+        this.datalist = res.data.list;
+        this.total = res.data.total;
+        this.$nextTick(() => {
+          this.$refs.tblist.doLayout();
+        });
+        this.loading = false;
+      });
+    },
+    //获取日志数据字典
+    getLogModel() {
+      orderModel().then((res) => {
+        this.logOptions = res.data;
+        this.logheader = res.data;
+        this.$nextTick(() => {
+          this.$refs.tblist.doLayout();
+        });
+      });
+    },
+    /** 分页下一页 */
+    handleSizeChange(val) {
+      this.queryParams.pageSize = val;
+      this.getchargerList();
+    },
+    /** 分页选择页数 */
+    handleCurrentChange(val) {
+      this.queryParams.page = val;
+      this.getchargerList();
+    },
+    // 搜索
+    handleQuery() {
+      if (
+        this.dateTime ||
+        this.robotValue.length > 0 ||
+        this.queryParams.deviceNo != undefined
+      ) {
+        if (this.dateTime) {
+          this.queryParams.startTime = this.$moment(this.dateTime[0]).format(
+            "YYYY-MM-DD HH:mm:ss"
+          );
+          this.queryParams.endTime = this.$moment(this.dateTime[1]).format(
+            "YYYY-MM-DD HH:mm:ss"
+          );
+        }
+        if (this.robotValue.length > 0) {
+          this.queryParams.signals = this.robotValue;
+          let differenceABSet = Array.from(
+            new Set(
+              [...this.logOptions].filter((x) =>
+                this.robotValue.includes(x.field)
+              )
+            )
+          );
+          this.logheader = differenceABSet;
+        }
+        this.getchargerList();
+      } else {
+        this.$message({
+          message: "请选择查询条件!",
+          type: "warning",
+          duration: 1000,
+          offset: 20,
+        });
+      }
+    },
+    // 搜索重置
+    resetForm() {
+      this.queryParams.startTime = undefined;
+      this.queryParams.endTime = undefined;
+      this.queryParams.signals = undefined;
+      this.queryParams.deviceNo = undefined;
+      this.dateTime = "";
+      this.robotValue = "";
+      this.queryParams.page = 1;
+      this.queryParams.pageSize = 10;
+      this.getchargerList();
+      this.getLogModel();
+    },
+    // 导出结果
+    chargeExport() {
+      this.dialogExportVisible = true;
+    },
+    //生成报表
+    AddExport() {
+      this.$refs.ExportForm.validate((valid) => {
+        if (valid) {
+          let addParams = {
+            exportName: this.ruleForm.exportName,
+            signals: this.robotValue,
+            deviceNo: this.queryParams.deviceNo,
+            startTime: this.queryParams.startTime,
+            endTime: this.queryParams.endTime,
+            exportLogType: 4,
+          };
+          exportFile(addParams).then((res) => {
+            console.log(res);
+            if (res.code === 0) {
+              this.dialogExportVisible = false;
+              this.$router.push({ path: "/manage-log/data-export" });
+            } else {
+              this.$message({
+                message: res.msg,
+                type: "warning",
+                duration: 1000,
+                offset: 20,
+              });
+            }
+          });
+        } else {
+          return false;
+        }
+      });
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+::v-deep .el-table th.is-leaf {
+  font-size: 15px !important;
+}
+::v-deep .el-table {
+    th.gutter, colgroup.gutter {
+        width: 5px !important;
+    }
+}
+
+
+::v-deep .el-table__header colgroup col[name="gutter"] {
+    display: table-cell !important;
+}
+
+::v-deep .el-table__body{
+  width: 100% !important;
+}
+</style>

+ 3 - 3
vue.config.js

@@ -2,7 +2,7 @@
 
 // 引入等比适配插件
 const px2rem = require('postcss-px2rem')
- 
+
 // 配置基本大小
 const postcss = px2rem({
   // 基准大小 baseSize,需要和flexible.js中相同
@@ -14,7 +14,7 @@ module.exports = {
   outputDir: 'dist',
   assetsDir: 'static',
   lintOnSave: false, // 关闭语法检查 防止不必要的语法报错
-  
+
   productionSourceMap: false,
   devServer: {
     host: 'localhost',
@@ -35,4 +35,4 @@ module.exports = {
     }
   }
 
-}
+}