wzh 3 лет назад
Родитель
Сommit
6b043709ae
3 измененных файлов с 276 добавлено и 42 удалено
  1. 2 2
      src/apis/config.js
  2. 80 40
      src/apis/fetch.js
  3. 194 0
      src/views/index/Blockchain.vue

+ 2 - 2
src/apis/config.js

@@ -12,9 +12,9 @@ axios.interceptors.response.use(
     return Promise.reject(error);
   }
 );
-export const $http = function (method, url, data) {
+export const $http = function (url, data) {
   return axios({
-    method,
+    method: data ? "post" : "get",
     url: baseurl + url,
     data,
     withCredentials: true,

+ 80 - 40
src/apis/fetch.js

@@ -2,201 +2,241 @@ import { $http } from "./config";
 export default {
   // 员工登录
   staffLogin(data) {
-    return $http("post", "staff/backstage/login", data);
+    return $http("staff/backstage/login", data);
   },
 
   // 获取用户列表 货主/船东
   getUserList(data) {
-    return $http("post", "user/backstage/list", data);
+    return $http("user/backstage/list", data);
   },
 
   // 添加用户
   addUser(data) {
-    return $http("post", "user/backstage/add", data);
+    return $http("user/backstage/add", data);
   },
 
   // 添加船东
   addShipOwner(data) {
-    return $http("post", "user/backstage/saveShipOwner", data);
+    return $http("user/backstage/saveShipOwner", data);
   },
 
   // 获取用户详情
   getUserDetail(data) {
-    return $http("post", "user/backstage/details", data);
+    return $http("user/backstage/details", data);
   },
 
   // 更新用户详情
   updateUserDetail(data) {
-    return $http("post", "/user/backstage/update", data);
+    return $http("/user/backstage/update", data);
   },
 
   // 获取航次列表
   getVoyageList(data) {
-    return $http("post", "voyage/list", data);
+    return $http("voyage/list", data);
   },
 
   // 获取航次详情
   getVoyageDetail(data) {
-    return $http("post", "/voyage/detail", data);
+    return $http("/voyage/detail", data);
   },
 
   // 更新航次
   updateVoyage(data) {
-    return $http("post", "/voyage/backstage/update", data);
+    return $http("/voyage/backstage/update", data);
   },
 
   // 完成航次
   finishVoyage(data) {
-    return $http("post", "/voyage/backstage/finish", data);
+    return $http("/voyage/backstage/finish", data);
   },
 
   // 根据船名/MMSI/船东手机号获取船舶用户信息(员工端添加航次选择船)
   getUserInfoAndShipInfo(data) {
-    return $http("post", "ship/backstage/userShipInfo", data);
+    return $http("ship/backstage/userShipInfo", data);
   },
 
   // 添加航次
   addVoyage(data) {
-    return $http("post", "voyage/backstage/add", data);
+    return $http("voyage/backstage/add", data);
   },
 
   // 获取媒体列表
   getMediaList(data) {
-    return $http("post", "/media/backstage/list", data);
+    return $http("/media/backstage/list", data);
   },
 
   // 审核媒体文件
   auditMedia(data) {
-    return $http("post", "/media/backstage/audit", data);
+    return $http("/media/backstage/audit", data);
   },
 
   // 标记媒体文件
   markMedia(data) {
-    return $http("post", "/media/backstage/markMedia", data);
+    return $http("/media/backstage/markMedia", data);
   },
 
   // 模糊搜索用户
   searchUser(data) {
-    return $http("post", "/user/backstage/search", data);
+    return $http("/user/backstage/search", data);
   },
 
   // 获取船舶列表
   getShipList(data) {
-    return $http("post", "/ship/backstage/list", data);
+    return $http("/ship/backstage/list", data);
   },
 
   // 更新船舶信息
   updateShip(data) {
-    return $http("post", "/ship/backstage/update", data);
+    return $http("/ship/backstage/update", data);
   },
 
   // 更新船东信息
   updateShipOwner(data) {
-    return $http("post", "/user/backstage/update", data);
+    return $http("/user/backstage/update", data);
   },
 
   // 获取船舶详情
   getShipDetail(data) {
-    return $http("post", "/ship/backstage/detail", data);
+    return $http("/ship/backstage/detail", data);
   },
 
   // 船舶查询
   searchShip(data) {
-    return $http("post", "ship/backstage/search", data);
+    return $http("ship/backstage/search", data);
   },
 
   // 根据shipId获取船东列表
   getShipOwnerListByShipId(data) {
-    return $http("post", "/user/backstage/shopOwnerlist", data);
+    return $http("/user/backstage/shopOwnerlist", data);
   },
 
   // 添加卸货记录
   addDischarge(data) {
-    return $http("post", "/voyage/addDischarge", data);
+    return $http("/voyage/addDischarge", data);
   },
 
   // 删除卸货记录
   deleteDischarge(data) {
-    return $http("post", "/voyage/deleteDischarge", data);
+    return $http("/voyage/deleteDischarge", data);
   },
 
   // 导出excel
   exportExcel(data) {
-    return $http("post", "/voyage/exportExcel", data);
+    return $http("/voyage/exportExcel", data);
   },
 
   // 获取卸货列表
   getDischargeList(data) {
-    return $http("post", "/voyage/getDischargeList", data);
+    return $http("/voyage/getDischargeList", data);
   },
 
   // 修改卸货记录
   updateDischarge(data) {
-    return $http("post", "/voyage/updateDischarge", data);
+    return $http("/voyage/updateDischarge", data);
   },
 
   // 获取未拍照航次
   getUnphotographNotice() {
-    return $http("get", "/voyage/backstage/notice");
+    return $http("/voyage/backstage/notice");
   },
 
   // 计算预计到港时间
   calExpectedArrivalTime(data) {
-    return $http("post", "/voyage/calExpectedArrivalTime", data);
+    return $http("/voyage/calExpectedArrivalTime", data);
   },
 
   // 删除运单
   deleteWaybill(data) {
-    return $http("post", "/voyage/deleteWaybill", data);
+    return $http("/voyage/deleteWaybill", data);
   },
 
   // 上传运单
   updateVoyageWaybill(data) {
-    return $http("post", "/voyage/updateVoyageWaybill", data);
+    return $http("/voyage/updateVoyageWaybill", data);
   },
 
   // 获取港口列表
   getCol(data) {
-    return $http("post", "/port/backstage/getCol", data);
+    return $http("/port/backstage/getCol", data);
   },
 
   // 取消航次
   cancelVoyage(data) {
-    return $http("post", "/voyage/backstage/cancel", data);
+    return $http("/voyage/backstage/cancel", data);
   },
 
   // 添加汽车装货记录
   addTruckLoadRecord(data) {
-    return $http("post", "/voyage/addCarLoadRecord", data);
+    return $http("/voyage/addCarLoadRecord", data);
   },
 
   // 获取汽车装货记录
   getTruckLoadRecord(data) {
-    return $http("post", "/voyage/getCarLoadRecordList", data);
+    return $http("/voyage/getCarLoadRecordList", data);
   },
 
   // 删除汽车装货记录
   deleteTruckLoadRecord(data) {
-    return $http("post", "/voyage/deleteCarLoadRecord", data);
+    return $http("/voyage/deleteCarLoadRecord", data);
   },
 
   // 更新汽车装货记录
   updateTruckLoadRecord(data) {
-    return $http("post", "/voyage/updateCarLoadRecord", data);
+    return $http("/voyage/updateCarLoadRecord", data);
   },
 
   // 分配单据
   distribute(data) {
-    return $http("post", "/shipownerUploadFile/distribute", data);
+    return $http("/shipownerUploadFile/distribute", data);
   },
 
   // ocr识别
   ocr(data) {
-    return $http("post", "/shipownerUploadFile/ocr", data);
+    return $http("/shipownerUploadFile/ocr", data);
   },
 
   // 用户选择
   getUserSelect(data) {
-    return $http("post", "/user/backstage/select", data);
+    return $http("/user/backstage/select", data);
+  },
+
+  // 添加提货单
+  addLab(data) {
+    return $http("/voyage/addLab", data);
+  },
+
+  // 获取提货单
+  getLabList(data) {
+    return $http("/voyage/getLabList", data);
+  },
+
+  // 更新提货单
+  updateLab(data) {
+    return $http("/voyage/updateLab", data);
+  },
+
+  // 删除提货单
+  deleteLab(data) {
+    return $http("/voyage/deleteLab", data);
+  },
+
+  // 获取港口天气列表
+  getPortWeatherList(data) {
+    return $http("/voyage/getPortWeatherList", data);
+  },
+
+  // 获取超期航次提醒
+  getLongDaysInPort(data) {
+    return $http("/voyage/cargo/longDaysInPort", data);
+  },
+
+  // 获取区块链列表
+  getBlockChainList(data) {
+    return $http("/block/voyage/list", data);
+  },
+
+  // 航次上链
+  upBlockChain(data) {
+    return $http("/block/voyage/up", data);
   },
 };

+ 194 - 0
src/views/index/Blockchain.vue

@@ -0,0 +1,194 @@
+<template>
+  <div class="full-container-p24">
+    <div style="display: flex; justify-content: space-between">
+      <div style="display: flex">
+        <el-input
+          placeholder="货主名称/船名/MMSI"
+          prefix-icon="el-icon-search"
+          v-model="term"
+          clearable
+          style="height: 32px; width: 330px; line-height: 32px"
+        ></el-input>
+        <div class="seach-btn" @click="getBlockChainList">查询</div>
+      </div>
+    </div>
+    <div style="margin-top: 24px">
+      <el-table :data="tableData" stripe style="width: 100%">
+        <el-table-column
+          type="index"
+          label="序号"
+          min-width="80"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="voyageName"
+          label="航次名称"
+          min-width="160"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="shipName"
+          label="船名"
+          min-width="160"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="shipMmsi"
+          label="MMSI"
+          min-width="120"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="loadPort"
+          label="装货港"
+          min-width="160"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="dischargeProt"
+          label="卸货港"
+          min-width="120"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="loadTons"
+          label="载货吨位(吨)"
+          min-width="160"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          prop="onChainTime"
+          label="上链时间"
+          min-width="200"
+          align="center"
+        ></el-table-column>
+        <el-table-column label="操作" min-width="80" align="center">
+          <template v-slot="scope">
+            <span v-if="scope.row.hash">已上链</span>
+            <el-button
+              v-else
+              @click="upBlockChain(scope.row.voyageId, scope.$index)"
+              type="primary"
+              size="small"
+              :loading="upLoading && currentIndex == scope.$index"
+            >
+              上链
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="width: 100%; text-align: right; margin-top: 43px">
+        <el-pagination
+          background
+          layout="prev, pager, next"
+          :total="total"
+          @current-change="pageChange"
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+<script setup>
+import { ref, h, reactive, toRefs, onMounted } from "vue";
+import { ElNotification, ElMessageBox, ElMessage } from "element-plus";
+import store from "../../store";
+import router from "../../router";
+import md5 from "md5";
+import api from "../../apis/fetch";
+
+let currentPage = ref(1);
+let term = ref();
+let tableData = ref();
+let total = ref();
+async function getBlockChainList() {
+  tableData.value = [];
+  let res = await api.getBlockChainList({
+    currentPage: currentPage.value,
+    size: 10,
+    term: term.value,
+  });
+  term.value = "";
+  if (res.data.status == 0) {
+    tableData.value = res.data.result;
+    total.value = res.data.total;
+  }
+}
+
+let upLoading = ref(false);
+let currentIndex = ref(-1);
+
+async function upBlockChain(voyageId, index) {
+  upLoading.value = true;
+  currentIndex.value = index;
+  let res = await api.upBlockChain({
+    voyageId,
+  });
+  if (res.data.status == 0) {
+    ElNotification.success({
+      title: "成功",
+      duration: 2000,
+      message: res.data.msg,
+    });
+    getBlockChainList();
+  } else {
+    ElNotification.error({
+      title: "失败",
+      duration: 2000,
+      message: res.data.msg,
+    });
+  }
+  upLoading.value = false;
+  currentIndex.value = -1;
+}
+function pageChange(e) {
+  currentPage.value = e;
+  getBlockChainList();
+}
+onMounted(() => {
+  getBlockChainList();
+});
+</script>
+<style scoped>
+.seach-btn {
+  display: inline-block;
+  width: 60px;
+  height: 38px;
+  background: #0094fe;
+  border-radius: 2px;
+  font-size: 14px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #ffffff;
+  text-align: center;
+  line-height: 38px;
+  margin-left: 10px;
+  cursor: pointer;
+}
+
+.cargo-owner-add {
+  width: 80px;
+  height: 32px;
+  border-radius: 2px;
+  border: 1px solid #0094fe;
+  font-size: 14px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #0094fe;
+  line-height: 32px;
+  text-align: center;
+  cursor: pointer;
+}
+
+:deep().el-dialog {
+  width: 560px;
+  padding: 20px 50px;
+  border-radius: 6px;
+}
+
+:deep() .el-dialog__title {
+  font-size: 18px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #0094fe;
+}
+</style>