Prechádzať zdrojové kódy

Merge branch 'bf_dev' of http://git.echepei.com/zhujiawei/Warehouse_management_ui.git into bf_dev

buck 4 rokov pred
rodič
commit
7896cc616e

+ 36 - 0
src/api/kaihe/singleVoyageShip/index.js

@@ -0,0 +1,36 @@
+// 查看单航次配船
+import request from '@/utils/request'
+
+export function listSingleVoyageByShip(query) {
+  return request({
+    url: '/khwarehouse/updateOrderMessage/singleVoyageByShip',
+    method: 'get',
+    params: query
+  })
+}
+
+export function listBLNo(query) {
+  return request({
+    url: '/khwarehouse/warehousebills/ruoYiVersionOrderList',
+    method: 'get',
+    params: query
+  })
+}
+
+// 离港出运1 到港卸货2
+export function cargoStatus(data) {
+  return request({
+    url: '/khwarehouse/updateOrderMessage/updateAirForceStation',
+    method: 'post',
+    data: data
+  })
+}
+
+// 导出
+export function shipInventoryExport(query) {
+  return request({
+    url: '/khwarehouse/updateOrderMessage/export',
+    method: 'get',
+    params: query
+  })
+}

+ 97 - 0
src/views/kaihe/singleVoyageShip/BLNo.vue

@@ -0,0 +1,97 @@
+<template>
+  <el-dialog
+   :title="title"
+   width="50%"
+   :visible.sync="open"
+  >
+    <el-form inline :model="BLNoList">
+      <el-row>
+        <el-col :span="8">
+          <el-form-item label="提单号">
+            <span v-text="BLNoList.fMblno"></span>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="客户名称">
+            <span v-text="BLNoList.corpName"></span>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="箱型">
+            <span v-text="BLNoList.fNo"></span>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="箱量">
+            <span v-text="BLNoList.fCntrcount"></span>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="收货人">
+            <span v-text="BLNoList.fConsigneername"></span>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="发货人">
+            <span v-text="BLNoList.createBy"></span>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button type="Primary" @click="open = false">关闭</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+export default {
+  name: "BLNo",
+  data() {
+    return {
+      title: '',
+      open: false,
+      BLNoList: {
+        fMblno: null,
+        corpName: null,
+        fNo: null,
+        fCntrcount: null,
+        fConsigneername: null,
+        createBy: null
+      }
+    }
+  },
+  methods: {
+    // 重置
+    reset() {
+      this.BLNoList = {
+        fMblno: null,
+        corpName: null,
+        fNo: null,
+        fCntrcount: null,
+        fConsigneername: null,
+        createBy: null
+      };
+    },
+    // 打开前的操作
+    openDialog(data) {
+      console.log(data)
+      this.reset();
+      this.title = '提单号:'+ data.fMblno;
+      this.BLNoList = {
+        fMblno: data.fMblno,
+        corpName: data.corpName,
+        fNo: data.fNo,
+        fCntrcount: data.fCntrcount,
+        fConsigneername: data.fConsigneername,
+        createBy: data.createBy
+      }
+      this.open = true;
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 555 - 0
src/views/kaihe/singleVoyageShip/index.vue

@@ -0,0 +1,555 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch"  label-width="68px">
+      <el-row>
+        <el-col :span="6">
+          <el-form-item label-width="100px" label="船名" prop="fVslid">
+            <el-select
+              v-model="queryParams.fVslid"
+              placeholder="请选择船名"
+              clearable
+              size="small"
+              filterable
+            >
+              <el-option
+                v-for="item in vesselOptions"
+                :key="item.fId"
+                :label="item.fName"
+                :value="item.fId"
+              />
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="6">
+          <el-form-item label-width="100px" label="航次" prop="fVoyid">
+            <el-select
+              v-model="queryParams.fVoyid"
+              placeholder="请选择航次"
+              clearable
+              size="small"
+              filterable
+            >
+              <el-option
+                v-for="item in voyageOptions"
+                :key="item.fId"
+                :label="item.fNo"
+                :value="item.fId"/>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+
+    <el-row :gutter="10" style="padding-bottom: 10px">
+      <el-col :span="1.5">
+        <el-button type="primary" size="mini" :disabled="single" @click="departureShipment">离港出运</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-date-picker
+          type="datetime"
+          placeholder="选择离港时间"
+          format="yyyy-MM-dd HH:mm"
+          value-format="yyyy-MM-dd HH:mm"
+          size="mini"
+          v-model="departure"
+        ></el-date-picker>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" size="mini" :disabled="single" @click="unloading">到港卸船</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-date-picker
+          type="datetime"
+          placeholder="选择到港时间"
+          format="yyyy-MM-dd HH:mm"
+          value-format="yyyy-MM-dd HH:mm"
+          size="mini"
+          v-model="arrival"
+        ></el-date-picker>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button type="primary" size="mini" @click="shipInventoryExport">导出装卸船清单</el-button>
+      </el-col>
+
+      <el-col  style="position: absolute;left:70%" :span="5" >
+        <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-col>
+
+      <div class="tabSetting">
+        <right-toolbar
+          :showSearch.sync="showSearch"
+          @queryTable="getList"
+        ></right-toolbar>
+        <div style="margin: 0 12px">
+          <el-button
+            icon="el-icon-setting"
+            size="mini"
+            circle
+            @click="showSetting = !showSetting"
+          ></el-button>
+        </div>
+      </div>
+    </el-row>
+
+    <el-dialog title="提示" :visible.sync="showSetting" width="700px" v-dialogDrag>
+      <template slot="title">
+        <div class="avue-crud__dialog__header">
+            <span class="el-dialog__title">
+            <span style="display:inline-block;width:3px;height:20px;margin-right:5px; float: left;margin-top:2px"></span>
+            </span>
+        </div>
+      </template>
+      <div>配置排序列数据(拖动调整顺序)</div>
+      <div style="margin-left: 17px">
+        <el-checkbox
+          v-model="allCheck"
+          label="全选"
+          @change="allChecked"
+        ></el-checkbox>
+      </div>
+      <div style="padding: 4px; display: flex; justify-content: center">
+        <draggable
+          v-model="setRowList"
+          group="site"
+          animation="300"
+          @start="onStart"
+          @end="onEnd"
+          handle=".indraggable"
+        >
+          <transition-group>
+            <div
+              v-for="item in setRowList"
+              :key="item.surface"
+              class="listStyle"
+            >
+              <div style="width: 500px" class="indraggable">
+                <div class="progress" :style="{ width: item.width + 'px' }">
+                  <el-checkbox
+                    :label="item.name"
+                    v-model="item.checked"
+                    :true-label="0"
+                    :false-label="1"
+                  >{{ item.name }}
+                  </el-checkbox>
+                </div>
+              </div>
+              <el-input-number
+                v-model.number="item.width"
+                controls-position="right"
+                :min="1"
+                :max="500"
+                size="mini"
+              ></el-input-number>
+            </div>
+          </transition-group>
+        </draggable>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="showSetting = false">取 消</el-button>
+        <el-button @click="delRow" type="danger">重 置</el-button>
+        <el-button type="primary" @click="save()">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-table :data="singleShipList" style="width: 100%" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" fixed="left" align="center"></el-table-column>
+      <el-table-column type="expand" fixed="left">
+        <slot slot-scope="props">
+          <el-form label-position="left" inline id="demo-table-expand">
+            <el-form-item
+              v-for="(item, index) in props.row.children"
+              :key="index"
+              label="提单号"
+            >
+              <el-tooltip class="item" effect="dark" content="点击查看详情" placement="top">
+                <span class="blNo" v-text="item.fMblno" @click="$refs.blNo.openDialog(item)"></span>
+              </el-tooltip>
+
+            </el-form-item>
+<!--            <el-form-item label="提单号"><span class="blNo" v-text="props.row.tidan" @click="$refs.blNo.openDialog(props.row.tidan)"></span></el-form-item>-->
+          </el-form>
+        </slot>
+      </el-table-column>
+      <el-table-column type="index" fixed="left" align="center" label="行号"></el-table-column>
+      <el-table-column
+        v-for="(item, index) in getRowList"
+        :key="index"
+        :label="item.name"
+        :width="item.width"
+        :prop="item.label"
+        align="center"
+        :fixed="item.fixed"
+        :show-overflow-tooltip="true"
+        sortable
+      >
+      </el-table-column>
+
+<!--      <el-table-column-->
+<!--        prop="vslName"-->
+<!--        label="船名"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+<!--      <el-table-column-->
+<!--        prop="voyNo"-->
+<!--        label="航次"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+<!--      <el-table-column-->
+<!--        prop="fAtd"-->
+<!--        label="开始日期"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+<!--      <el-table-column-->
+<!--        prop="fAta"-->
+<!--        label="到港日期"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+<!--      <el-table-column-->
+<!--        prop="fName"-->
+<!--        label="航线"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+<!--      <el-table-column-->
+<!--        prop="loadportName"-->
+<!--        label="装港"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+<!--      <el-table-column-->
+<!--        prop="destportName"-->
+<!--        label="卸港"-->
+<!--        align="center"-->
+<!--      ></el-table-column>-->
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <blno ref="blNo"></blno>
+  </div>
+</template>
+
+<script>
+import blno from "./BLNo";
+import { getVesselName } from '@/api/finance/applyForInvoice/chargeInvoice';
+import { getVoyageName } from '@/api/finance/applyForInvoice/feeDetail';
+import { download } from "../../../utils/ruoyi";
+import { listSingleVoyageByShip, listBLNo, cargoStatus, shipInventoryExport } from '@/api/kaihe/singleVoyageShip/index';
+import moment from "moment";
+import draggable from "vuedraggable";
+import { addSet, resetModule, select } from '@/api/system/set';
+import Cookies from 'js-cookie';
+
+export default {
+  name: "index",
+  components: {
+    blno,
+    draggable,
+  },
+  data() {
+    return {
+      setRowList: [],
+      getRowList: [],
+      tableDate: [
+        {
+          surface: "1",
+          label: "vslName",
+          name: "船名",
+          checked: 0,
+          width: 200,
+        },
+        {
+          surface: "2",
+          label: "voyNo",
+          name: "航次",
+          checked: 0,
+          width: 200,
+        },
+        {
+          surface: "3",
+          label: "fAtd",
+          name: "开始日期",
+          checked: 0,
+          width: 200,
+        },
+        {
+          surface: "4",
+          label: "fAta",
+          name: "到港日期",
+          checked: 0,
+          width: 200,
+        },
+        {
+          surface: "5",
+          label: "fName",
+          name: "航线",
+          checked: 0,
+          width: 200,
+        },
+        {
+          surface: "6",
+          label: "loadportName",
+          name: "装港",
+          checked: 0,
+          width: 200,
+        },
+        {
+          surface: "7",
+          label: "destportName",
+          name: "卸港",
+          checked: 0,
+          width: 200,
+        },
+      ],
+      singleShipList: [],
+      // 航次
+      voyageOptions:[],
+      // 船名
+      vesselOptions:[],
+      // 离港时间
+      departure: null,
+      // 到港时间
+      arrival: null,
+      // 离港到港船只数据
+      ship: [],
+      // 总条数
+      total: 0,
+      // 查询参数
+      queryParams: {
+        fVslid: null,
+        fVoyid: null,
+        fCargoPlanning: 0,
+        pageNum: 1,
+        pageSize: 10,
+      },
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      //自定义列宽
+      allCheck: false,
+      showSetting:false,
+      drag: false,
+    }
+  },
+  created() {
+    this.getList();
+    this.setRowList = this.tableDate;
+    this.getRowList = this.tableDate;
+    this.vessleRemthod();
+    this.voyageRemthods();
+
+    // const data = {
+    //   fVsl: '凯和志诚1',
+    //   fVoy: '02W1',
+    //   fVslid: 3,
+    //   fVoyid: 6,
+    //   fUpdatetime: '2021-08-11 14:08:00',
+    //   updateStatus: '1',
+    // }
+    // cargoStatus(data).then(response => {
+    //   console.log(response)
+    // })
+  },
+  methods: {
+    async getList() {
+      this.loading = false;
+      await listSingleVoyageByShip(this.queryParams).then(response => {
+        this.singleShipList = response.rows;
+        console.log(this.singleShipList)
+        this.singleShipList.forEach((item, index) => {
+          let blNo = {
+            fCargoPlanning: 0,
+            fVslid: item.fVslid,
+            fVoyid: item.fVoyid,
+          }
+          listBLNo(blNo).then(res => {
+            this.singleShipList[index].children = res.rows
+          })
+        })
+
+        this.total = response.total;
+        this.loading = false;
+      })
+    },
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.queryParams.pageSize = 10;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.departure = null;
+      this.arrival = null;
+      this.queryParams = {
+        vslName: null,
+        voyNo: null,
+      },
+        this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    //获取船名
+    vessleRemthod() {
+      getVesselName().then(response => {
+        this.vesselOptions = response.rows
+      })
+    },
+    // 获取航次
+    voyageRemthods(){
+      getVoyageName().then(response=>{
+        this.voyageOptions = response.rows
+      })
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ship = selection
+      // this.ids = selection.map(item => item.fId)
+      this.single = selection.length!==1
+      // this.multiple = !selection.length
+    },
+    // 离港出运
+    departureShipment() {
+      if (this.departure === null) {
+        this.$message({
+          showClose: true,
+          message: '离港时间未选择',
+          type: 'warning'
+        });
+      } else {
+        const data = {
+          fVsl: this.ship[0].vslName,
+          fVoy: this.ship[0].voyNo,
+          fVslid: this.ship[0].fVslid,
+          fVoyid: this.ship[0].fVoyid,
+          fUpdatetime: this.departure,
+          updateStatus: '1',
+        }
+        cargoStatus(data).then(response => {
+          if (response.code === 200) {
+            this.$message({
+              showClose: true,
+              message: '出港操作成功',
+              type: 'success'
+            });
+          } else {
+            this.$message({
+              showClose: true,
+              message: response.msg,
+              type: 'warning'
+            });
+          }
+        })
+      }
+    },
+    // 到港卸船
+    unloading() {
+      if (this.arrival === null) {
+        this.$message({
+          showClose: true,
+          message: '到港时间未选择',
+          type: 'warning'
+        });
+      } else {
+        const data = {
+          fVsl: this.ship[0].vslName,
+          fVoy: this.ship[0].voyNo,
+          fVslid: this.ship[0].fVslid,
+          fVoyid: this.ship[0].fVoyid,
+          fUpdatetime: this.arrival,
+          updateStatus: '2',
+        }
+        cargoStatus(data).then(response => {
+          this.$message({
+            showClose: true,
+            message: '到港操作成功',
+            type: 'success'
+          });
+        })
+      }
+    },
+    // 导出清单
+    shipInventoryExport() {
+      shipInventoryExport(this.queryParams).then(response => {
+        this.download(response.msg)
+      })
+    },
+
+    //列设置全选
+    allChecked() {
+      if (this.allCheck == true) {
+        this.setRowList.map((e) => {
+          return (e.checked = 0);
+        });
+      } else {
+        this.setRowList.map((e) => {
+          return (e.checked = 1);
+        });
+      }
+    },
+    //开始拖拽事件
+    onStart() {
+      this.drag = true;
+    },
+    //拖拽结束事件
+    onEnd() {
+      this.drag = false;
+    },
+    //重置列表
+    delRow() {
+      this.data = {
+        tableName: "船舶信息",
+        userId: Cookies.get("userName"),
+      };
+      resetModule(this.data).then((res) => {
+        if (res.code == 200) {
+          this.showSetting = false;
+          this.setRowList = this.tableDate;
+          console.log(this.setRowList)
+          this.getRowList = this.tableDate;
+        }
+      });
+    },
+    //保存列设置
+    save() {
+      this.showSetting = false;
+      this.data = {
+        tableName: "船舶信息",
+        userId: Cookies.get("userName"),
+        sysTableSetList: this.setRowList,
+      };
+      addSet(this.data).then((res) => {
+        this.getRowList = this.setRowList.filter((e) => e.checked == 0);
+      });
+    },
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.blNo {
+  cursor: pointer;
+}
+/deep/ #demo-table-expand {
+  font-size: 0;
+}
+/deep/ #demo-table-expand label {
+  width: 90px;
+  color: #99a9bf;
+}
+/deep/ #demo-table-expand .el-form-item {
+  margin-right: 0;
+  margin-bottom: 0;
+  width: 50%;
+}
+</style>