|
|
@@ -72,6 +72,7 @@
|
|
|
size="small"
|
|
|
v-auth="'DOWNLOADVOYAGELIST'"
|
|
|
@click="showExportModal('航次列表')"
|
|
|
+ style="margin-left: 10px; margin-bottom: 10px"
|
|
|
>导出航次列表</el-button
|
|
|
>
|
|
|
<el-button
|
|
|
@@ -203,10 +204,204 @@
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+ <!-- <div class="mt20">
|
|
|
+ <p class="mr20 df aic" style="font-size: 14px; color: #333">
|
|
|
+ 列表筛选:
|
|
|
+ <el-checkbox
|
|
|
+ class="ml20"
|
|
|
+ v-model="selectAllVisable"
|
|
|
+ label="全选"
|
|
|
+ size="default"
|
|
|
+ @change="selectAll"
|
|
|
+ />
|
|
|
+ </p>
|
|
|
+ <el-checkbox
|
|
|
+ v-model="voyageNameVisable"
|
|
|
+ label="航次名称"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="loadPortVisable"
|
|
|
+ label="装货港"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="dischargePortVisable"
|
|
|
+ label="卸货港"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="expectedArrivalTimeVisable"
|
|
|
+ label="预计到港时间"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="abnormalStatusVisable"
|
|
|
+ label="航次状态"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="daysInPortVisable"
|
|
|
+ label="在港天数"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="todayPhotoCountVisable"
|
|
|
+ label="今日照片"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="cargoVisable"
|
|
|
+ label="货种"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="actualLoadTonsVisable"
|
|
|
+ label="装载吨位"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="unloadedtonsVisable"
|
|
|
+ label="已卸货吨位"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="remainTonsVisable"
|
|
|
+ label="剩余吨位"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ <el-checkbox
|
|
|
+ v-model="hasInsuranceVisable"
|
|
|
+ label="保险状态"
|
|
|
+ size="default"
|
|
|
+ @change="selectSingle"
|
|
|
+ />
|
|
|
+ </div> -->
|
|
|
+ <div
|
|
|
+ class="df aic jcfs mt20"
|
|
|
+ style="
|
|
|
+ font-size: 14px;
|
|
|
+ color: #333;
|
|
|
+ width: calc(100vw - 300px);
|
|
|
+ flex-wrap: wrap;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <div class="df jcsb aic mb10 mr20">
|
|
|
+ <div class="mr10">装货港:</div>
|
|
|
+ <el-select
|
|
|
+ style="width: 120px"
|
|
|
+ v-model="voyageListPostData.loadPortId"
|
|
|
+ placeholder="装货港"
|
|
|
+ size="small"
|
|
|
+ @change="getVoyageList"
|
|
|
+ @focus="getPortSelect"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in portOptions"
|
|
|
+ :key="item"
|
|
|
+ :label="item.value"
|
|
|
+ :value="item.key"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="df jcsb aic mb10 mr20">
|
|
|
+ <div class="mr10">卸货港:</div>
|
|
|
+ <el-select
|
|
|
+ style="width: 120px"
|
|
|
+ v-model="voyageListPostData.discPortId"
|
|
|
+ placeholder="卸货港"
|
|
|
+ size="small"
|
|
|
+ @change="getVoyageList"
|
|
|
+ @focus="getPortSelect"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in portOptions"
|
|
|
+ :key="item"
|
|
|
+ :label="item.value"
|
|
|
+ :value="item.key"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="df jcsb aic mb10 mr20">
|
|
|
+ <div class="mr10">预计到港时间:</div>
|
|
|
+ <el-select
|
|
|
+ style="width: 120px"
|
|
|
+ v-model="voyageListPostData.isArrived"
|
|
|
+ placeholder="到港状态"
|
|
|
+ size="small"
|
|
|
+ @change="getVoyageList"
|
|
|
+ >
|
|
|
+ <el-option label="已到港" :value="0" />
|
|
|
+ <el-option label="未到港" :value="1" />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="df jcsb aic mb10 mr20">
|
|
|
+ <div class="mr10">航次状态:</div>
|
|
|
+ <el-select
|
|
|
+ style="width: 120px"
|
|
|
+ v-model="voyageListPostData.abnormalStatus"
|
|
|
+ placeholder="航次状态"
|
|
|
+ size="small"
|
|
|
+ @change="getVoyageList"
|
|
|
+ >
|
|
|
+ <el-option label="正常" :value="0" />
|
|
|
+ <el-option label="异常" :value="1" />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="df jcsb aic mb10 mr20">
|
|
|
+ <div class="mr10">货种:</div>
|
|
|
+ <el-select
|
|
|
+ style="width: 100px"
|
|
|
+ v-model="voyageListPostData.cargo"
|
|
|
+ placeholder="货种"
|
|
|
+ size="small"
|
|
|
+ @change="getVoyageList"
|
|
|
+ @focus="getCargoSelect"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in cargoOptions"
|
|
|
+ :key="item"
|
|
|
+ :label="item.key"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="df jcsb aic mb10 mr20">
|
|
|
+ <div class="mr10">保险状态:</div>
|
|
|
+ <el-select
|
|
|
+ style="width: 120px"
|
|
|
+ v-model="voyageListPostData.hasInsurance"
|
|
|
+ placeholder="保险状态"
|
|
|
+ size="small"
|
|
|
+ @change="getVoyageList"
|
|
|
+ >
|
|
|
+ <el-option label="未购买" :value="0" />
|
|
|
+ <el-option label="已购买" :value="1" />
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <el-button @click="resetFilter" class="mb10" size="small" type="primary"
|
|
|
+ >重置</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
<el-table
|
|
|
:data="tableData"
|
|
|
stripe
|
|
|
- style="width: 100%; margin-top: 24px"
|
|
|
+ style="width: 100%; margin-top: 12px"
|
|
|
:row-style="rowStyle"
|
|
|
>
|
|
|
<!-- <el-table-column
|
|
|
@@ -218,18 +413,21 @@
|
|
|
<el-table-column
|
|
|
prop="voyageName"
|
|
|
label="航次名称"
|
|
|
+ v-if="voyageNameVisable"
|
|
|
min-width="140"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
prop="loadPort"
|
|
|
label="装货港"
|
|
|
+ v-if="loadPortVisable"
|
|
|
min-width="90"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
prop="dischargePort"
|
|
|
label="卸货港"
|
|
|
+ v-if="dischargePortVisable"
|
|
|
min-width="80"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
@@ -242,6 +440,7 @@
|
|
|
<el-table-column
|
|
|
prop="expectedArrivalTime"
|
|
|
label="预计到港时间"
|
|
|
+ v-if="expectedArrivalTimeVisable"
|
|
|
sortable
|
|
|
min-width="140"
|
|
|
align="center"
|
|
|
@@ -253,6 +452,7 @@
|
|
|
<el-table-column
|
|
|
prop="abnormalStatus"
|
|
|
label="航次状态"
|
|
|
+ v-if="abnormalStatusVisable"
|
|
|
min-width="80"
|
|
|
align="center"
|
|
|
>
|
|
|
@@ -263,6 +463,7 @@
|
|
|
<el-table-column
|
|
|
prop="daysInPortStr"
|
|
|
label="在港天数"
|
|
|
+ v-if="daysInPortVisable"
|
|
|
sortable
|
|
|
min-width="100"
|
|
|
align="center"
|
|
|
@@ -270,11 +471,13 @@
|
|
|
<el-table-column
|
|
|
prop="todayPhotoCount"
|
|
|
label="今日照片"
|
|
|
- min-width="70"
|
|
|
+ v-if="todayPhotoCountVisable"
|
|
|
+ min-width="100"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
prop="cargo"
|
|
|
+ v-if="cargoVisable"
|
|
|
label="货种"
|
|
|
min-width="70"
|
|
|
align="center"
|
|
|
@@ -282,18 +485,21 @@
|
|
|
<el-table-column
|
|
|
prop="actualLoadTons"
|
|
|
label="装载吨位"
|
|
|
+ v-if="actualLoadTonsVisable"
|
|
|
min-width="80"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
prop="unloadedtons"
|
|
|
label="已卸货吨位"
|
|
|
- min-width="80"
|
|
|
+ v-if="unloadedtonsVisable"
|
|
|
+ min-width="100"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
<el-table-column
|
|
|
prop="remainTons"
|
|
|
label="剩余吨位"
|
|
|
+ v-if="remainTonsVisable"
|
|
|
min-width="80"
|
|
|
align="center"
|
|
|
></el-table-column>
|
|
|
@@ -323,7 +529,8 @@
|
|
|
<el-table-column
|
|
|
prop="hasInsurance"
|
|
|
label="保险状态"
|
|
|
- min-width="70"
|
|
|
+ v-if="hasInsuranceVisable"
|
|
|
+ min-width="100"
|
|
|
align="center"
|
|
|
>
|
|
|
<template v-slot="scope">
|
|
|
@@ -392,10 +599,13 @@ let term = ref("");
|
|
|
let tableData = ref([]);
|
|
|
let total = ref(0);
|
|
|
let status = ref(0);
|
|
|
+let loginAccountId = ref("");
|
|
|
+let voyageListPostData = ref({});
|
|
|
async function getVoyageList() {
|
|
|
tableData.value = [];
|
|
|
|
|
|
let res = await api.getVoyageList({
|
|
|
+ ...voyageListPostData.value,
|
|
|
loginAccountId: localStorage.loginAccountId,
|
|
|
cargoOwnerId: localStorage.userId,
|
|
|
shipId: 0,
|
|
|
@@ -796,14 +1006,98 @@ async function exportZip() {
|
|
|
|
|
|
function rowStyle({ row }) {
|
|
|
let rowStyle = {};
|
|
|
- if (row.daysInPort >= 30) {
|
|
|
- rowStyle.color = "red";
|
|
|
- return rowStyle;
|
|
|
+
|
|
|
+ if (row.daysInPort >= 20 && row.daysInPort < 25) {
|
|
|
+ rowStyle.color = "#f9ca24";
|
|
|
+ } else if (row.daysInPort >= 25 && row.daysInPort < 30) {
|
|
|
+ rowStyle.color = "#f0932b";
|
|
|
+ } else if (row.daysInPort >= 30) {
|
|
|
+ rowStyle.color = "#eb4d4b";
|
|
|
+ }
|
|
|
+
|
|
|
+ return rowStyle;
|
|
|
+}
|
|
|
+
|
|
|
+let voyageNameVisable = ref(true);
|
|
|
+let loadPortVisable = ref(true);
|
|
|
+let dischargePortVisable = ref(true);
|
|
|
+let expectedArrivalTimeVisable = ref(true);
|
|
|
+let abnormalStatusVisable = ref(true);
|
|
|
+let daysInPortVisable = ref(true);
|
|
|
+let todayPhotoCountVisable = ref(true);
|
|
|
+let cargoVisable = ref(true);
|
|
|
+let actualLoadTonsVisable = ref(true);
|
|
|
+let unloadedtonsVisable = ref(true);
|
|
|
+let remainTonsVisable = ref(true);
|
|
|
+let hasInsuranceVisable = ref(true);
|
|
|
+
|
|
|
+let selectAllVisable = ref(true);
|
|
|
+function selectAll(e) {
|
|
|
+ loadPortVisable.value = e;
|
|
|
+ dischargePortVisable.value = e;
|
|
|
+ expectedArrivalTimeVisable.value = e;
|
|
|
+ abnormalStatusVisable.value = e;
|
|
|
+ daysInPortVisable.value = e;
|
|
|
+ todayPhotoCountVisable.value = e;
|
|
|
+ cargoVisable.value = e;
|
|
|
+ actualLoadTonsVisable.value = e;
|
|
|
+ unloadedtonsVisable.value = e;
|
|
|
+ remainTonsVisable.value = e;
|
|
|
+ hasInsuranceVisable.value = e;
|
|
|
+}
|
|
|
+
|
|
|
+function selectSingle(e) {
|
|
|
+ if (!e) {
|
|
|
+ selectAllVisable.value = e;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+let loadPortFilterStr = ref("");
|
|
|
+function selectLoadPortFilter(item) {
|
|
|
+ voyageListPostData.value.loadPortId = item.key;
|
|
|
+ getVoyageList();
|
|
|
+}
|
|
|
+let discPortFilterStr = ref("");
|
|
|
+function selectDiscPortFilter(item) {
|
|
|
+ voyageListPostData.value.discPortId = item.key;
|
|
|
+ getVoyageList();
|
|
|
+}
|
|
|
+let cargoFilterStr = ref("");
|
|
|
+function selectCargoFilter(item) {
|
|
|
+ voyageListPostData.value.cargo = item.key;
|
|
|
+ getVoyageList();
|
|
|
+}
|
|
|
+
|
|
|
+function resetFilter() {
|
|
|
+ loadPortFilterStr.value = "";
|
|
|
+ discPortFilterStr.value = "";
|
|
|
+ cargoFilterStr.value = "";
|
|
|
+ voyageListPostData.value = {};
|
|
|
+ getVoyageList();
|
|
|
+}
|
|
|
+let cargoOptions = ref([]);
|
|
|
+async function getCargoSelect() {
|
|
|
+ if (cargoOptions.value.length) return;
|
|
|
+ let res = await api.getCargoSelect({
|
|
|
+ loginAccountId: loginAccountId.value,
|
|
|
+ status: 2,
|
|
|
+ term: "",
|
|
|
+ });
|
|
|
+ cargoOptions.value = res.data.result;
|
|
|
+}
|
|
|
+
|
|
|
+let portOptions = ref([]);
|
|
|
+async function getPortSelect() {
|
|
|
+ if (portOptions.value.length) return;
|
|
|
+ let res = await api.getCol({
|
|
|
+ term: "",
|
|
|
+ });
|
|
|
+ portOptions.value = res.data.result;
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
getVoyageList();
|
|
|
+ loginAccountId.value = localStorage.loginAccountId;
|
|
|
});
|
|
|
</script>
|
|
|
<style scoped>
|