|
|
@@ -1,98 +1,188 @@
|
|
|
<template>
|
|
|
- <basic-container>
|
|
|
- <avue-crud :option="option" :table-loading="loading" :data="assemblyForm.preContainersList" :page.sync="page"
|
|
|
- :permission="permissionList" :before-open="beforeOpen" v-model="form"
|
|
|
- :cell-style="{ padding: '0px', textAlign: 'center' }" ref="crud" @row-update="rowUpdate" @row-save="rowSave"
|
|
|
- @row-del="rowDel" @selection-change="selectionChange" @refresh-change="refreshChange"
|
|
|
- @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 487)"
|
|
|
- @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 487)">
|
|
|
- <template slot="menuLeft">
|
|
|
- <el-button type="primary" size="small"
|
|
|
- :disabled="seeDisabled || assemblyForm.preContainersList.filter(item => item.containerNumberStatus == '已选择').length > 0"
|
|
|
- @click.stop="addfun">{{ $t("btn118n.new") }}</el-button>
|
|
|
- <el-button type="danger" size="small" plain
|
|
|
- :disabled="seeDisabled || assemblyForm.preContainersList.length == 0 || assemblyForm.preContainersList.filter(item => item.containerNumberStatus == '已选择').length > 0"
|
|
|
- @click.stop="handleDelete">{{ $t("btn118n.deleted") }}
|
|
|
- </el-button>
|
|
|
- <el-button type="primary" size="small"
|
|
|
- :disabled="seeDisabled || assemblyForm.preContainersList.length == 0"
|
|
|
- @click="batchSavefun">{{ $t("btn118n.save") }}</el-button>
|
|
|
- <el-button type="info" plain size="small"
|
|
|
- :disabled="seeDisabled || assemblyForm.preContainersList.length == 0" @click="onclickEdit">{{ $t("btn118n.edit") }}
|
|
|
- </el-button>
|
|
|
- <el-button v-if="assemblyForm.whetherModify == 1" type="success" plain size="small"
|
|
|
- :disabled="seeDisabled" @click="confirmBox">确认箱型
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template slot-scope="{row,index}" slot="menu">
|
|
|
- <el-button v-if="row.id && row.containerNumberStatus == '录入' && assemblyForm.billType != 'MM'"
|
|
|
- size="mini" type="text" @click.stop="pick(row)" :disabled="seeDisabled">
|
|
|
- 选择
|
|
|
- </el-button>
|
|
|
- <el-button v-if="row.id && row.containerNumberStatus == '已选择' && assemblyForm.billType != 'MM'"
|
|
|
- size="mini" type="text" @click.stop="rowRevoke(row)" :disabled="seeDisabled">
|
|
|
- 撤销
|
|
|
- </el-button>
|
|
|
- <el-button v-if="row.id && row.containerNumberStatus == '已选择' && assemblyForm.billType != 'MM'"
|
|
|
- size="mini" type="text" @click.stop="rowView(row)" :disabled="seeDisabled">
|
|
|
- 查看放箱号
|
|
|
- </el-button>
|
|
|
- </template>
|
|
|
- <template slot-scope="{row}" slot="cntrTypeCodeForm">
|
|
|
- <search-query :datalist="cntrTypeCodeData" :selectValue="row.cntrTypeCode" :filterable="true"
|
|
|
- :clearable="true" :remote="true" :buttonIf="false"
|
|
|
- :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }" placeholder="请选择尺码箱型"
|
|
|
- @remoteMethod="remoteMethod($event, 'cntrTypeCode')" @corpChange="corpChange($event, row)"
|
|
|
- @corpFocus="remoteMethod($event, 'cntrTypeCode')" @corpClear="corpClear($event, row)">
|
|
|
- </search-query>
|
|
|
- </template>
|
|
|
- <template slot="number" slot-scope="{ row }">
|
|
|
- <el-input v-if="row.$cellEdit" style="width: 100%;" v-model="row.number" size="small" autocomplete="off"
|
|
|
- min="0" @blur="numberBlur(row)" clearable placeholder="请输入件数"></el-input>
|
|
|
- <span v-else>{{ row.number }}</span>
|
|
|
- </template>
|
|
|
- <template slot="grossWeight" slot-scope="{ row }">
|
|
|
- <el-input v-if="row.$cellEdit" style="width: 100%;" v-model="row.grossWeight" size="small"
|
|
|
- autocomplete="off" min="0" @blur="grossWeightBlur(row)" clearable placeholder="请输入毛重"></el-input>
|
|
|
- <span v-else>{{ row.grossWeight }}</span>
|
|
|
- </template>
|
|
|
- <template slot="measurement" slot-scope="{ row }">
|
|
|
- <el-input v-if="row.$cellEdit" style="width: 100%;" v-model="row.measurement" size="small"
|
|
|
- autocomplete="off" min="0" @blur="measurementBlur(row)" clearable placeholder="请输入尺码"></el-input>
|
|
|
- <span v-else>{{ row.measurement }}</span>
|
|
|
- </template>
|
|
|
+ <basic-container>
|
|
|
+ <avue-crud
|
|
|
+ :option="option"
|
|
|
+ :table-loading="loading"
|
|
|
+ :data="assemblyForm.preContainersList"
|
|
|
+ :page.sync="page"
|
|
|
+ :permission="permissionList"
|
|
|
+ :before-open="beforeOpen"
|
|
|
+ v-model="form"
|
|
|
+ :cell-style="{ padding: '0px', textAlign: 'center' }"
|
|
|
+ ref="crud"
|
|
|
+ @row-update="rowUpdate"
|
|
|
+ @row-save="rowSave"
|
|
|
+ @row-del="rowDel"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ @refresh-change="refreshChange"
|
|
|
+ @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 487)"
|
|
|
+ @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 487)"
|
|
|
+ >
|
|
|
+ <template slot="menuLeft">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ :disabled="seeDisabled || assemblyForm.preContainersList.filter(item => item.containerNumberStatus == '已选择').length > 0"
|
|
|
+ @click.stop="addfun"
|
|
|
+ >{{ $t("btn118n.new") }}</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ plain
|
|
|
+ :disabled="
|
|
|
+ seeDisabled ||
|
|
|
+ assemblyForm.preContainersList.length == 0 ||
|
|
|
+ assemblyForm.preContainersList.filter(item => item.containerNumberStatus == '已选择').length > 0
|
|
|
+ "
|
|
|
+ @click.stop="handleDelete"
|
|
|
+ >{{ $t("btn118n.deleted") }}
|
|
|
+ </el-button>
|
|
|
+ <el-button type="primary" size="small" :disabled="seeDisabled || assemblyForm.preContainersList.length == 0" @click="batchSavefun">{{
|
|
|
+ $t("btn118n.save")
|
|
|
+ }}</el-button>
|
|
|
+ <el-button type="info" plain size="small" :disabled="seeDisabled || assemblyForm.preContainersList.length == 0" @click="onclickEdit"
|
|
|
+ >{{ $t("btn118n.edit") }}
|
|
|
+ </el-button>
|
|
|
+ <el-button v-if="assemblyForm.whetherModify == 1" type="success" plain size="small" :disabled="seeDisabled" @click="confirmBox"
|
|
|
+ >确认箱型
|
|
|
+ </el-button>
|
|
|
+ <el-button type="success" plain size="small" :disabled="seeDisabled" @click="sendEdi">发送下货纸 </el-button>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row, index }" slot="menu">
|
|
|
+ <el-button
|
|
|
+ v-if="row.id && row.containerNumberStatus == '录入' && assemblyForm.billType != 'MM'"
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ @click.stop="pick(row)"
|
|
|
+ :disabled="seeDisabled"
|
|
|
+ >
|
|
|
+ 选择
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="row.id && row.containerNumberStatus == '已选择' && assemblyForm.billType != 'MM'"
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ @click.stop="rowRevoke(row)"
|
|
|
+ :disabled="seeDisabled"
|
|
|
+ >
|
|
|
+ 撤销
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="row.id && row.containerNumberStatus == '已选择' && assemblyForm.billType != 'MM'"
|
|
|
+ size="mini"
|
|
|
+ type="text"
|
|
|
+ @click.stop="rowView(row)"
|
|
|
+ :disabled="seeDisabled"
|
|
|
+ >
|
|
|
+ 查看放箱号
|
|
|
+ </el-button>
|
|
|
+ </template>
|
|
|
+ <template slot-scope="{ row }" slot="cntrTypeCodeForm">
|
|
|
+ <search-query
|
|
|
+ :datalist="cntrTypeCodeData"
|
|
|
+ :selectValue="row.cntrTypeCode"
|
|
|
+ :filterable="true"
|
|
|
+ :clearable="true"
|
|
|
+ :remote="true"
|
|
|
+ :buttonIf="false"
|
|
|
+ :forParameter="{ key: 'id', label: 'cnName', value: 'cnName' }"
|
|
|
+ placeholder="请选择尺码箱型"
|
|
|
+ @remoteMethod="remoteMethod($event, 'cntrTypeCode')"
|
|
|
+ @corpChange="corpChange($event, row)"
|
|
|
+ @corpFocus="remoteMethod($event, 'cntrTypeCode')"
|
|
|
+ @corpClear="corpClear($event, row)"
|
|
|
+ >
|
|
|
+ </search-query>
|
|
|
+ </template>
|
|
|
+ <template slot="number" slot-scope="{ row }">
|
|
|
+ <el-input
|
|
|
+ v-if="row.$cellEdit"
|
|
|
+ style="width: 100%;"
|
|
|
+ v-model="row.number"
|
|
|
+ size="small"
|
|
|
+ autocomplete="off"
|
|
|
+ min="0"
|
|
|
+ @blur="numberBlur(row)"
|
|
|
+ clearable
|
|
|
+ placeholder="请输入件数"
|
|
|
+ ></el-input>
|
|
|
+ <span v-else>{{ row.number }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="grossWeight" slot-scope="{ row }">
|
|
|
+ <el-input
|
|
|
+ v-if="row.$cellEdit"
|
|
|
+ style="width: 100%;"
|
|
|
+ v-model="row.grossWeight"
|
|
|
+ size="small"
|
|
|
+ autocomplete="off"
|
|
|
+ min="0"
|
|
|
+ @blur="grossWeightBlur(row)"
|
|
|
+ clearable
|
|
|
+ placeholder="请输入毛重"
|
|
|
+ ></el-input>
|
|
|
+ <span v-else>{{ row.grossWeight }}</span>
|
|
|
+ </template>
|
|
|
+ <template slot="measurement" slot-scope="{ row }">
|
|
|
+ <el-input
|
|
|
+ v-if="row.$cellEdit"
|
|
|
+ style="width: 100%;"
|
|
|
+ v-model="row.measurement"
|
|
|
+ size="small"
|
|
|
+ autocomplete="off"
|
|
|
+ min="0"
|
|
|
+ @blur="measurementBlur(row)"
|
|
|
+ clearable
|
|
|
+ placeholder="请输入尺码"
|
|
|
+ ></el-input>
|
|
|
+ <span v-else>{{ row.measurement }}</span>
|
|
|
+ </template>
|
|
|
+ </avue-crud>
|
|
|
+ <el-dialog title="查看放箱号" :visible.sync="dialogVisible" width="50%" :before-close="handleClose" append-to-body>
|
|
|
+ <span>
|
|
|
+ <avue-crud
|
|
|
+ ref="crud2"
|
|
|
+ :option="containerOption"
|
|
|
+ :data="containerNumberItemList"
|
|
|
+ @resetColumn="resetColumnTwo('crud2', 'containerOption', 'containerOptionBack', 488)"
|
|
|
+ @saveColumn="saveColumnTwo('crud2', 'containerOption', 'containerOptionBack', 488)"
|
|
|
+ >
|
|
|
+ <template slot="occupyNum" slot-scope="{ row }">
|
|
|
+ <el-input-number
|
|
|
+ v-if="!row.id"
|
|
|
+ v-model="row.occupyNum"
|
|
|
+ :min="0"
|
|
|
+ :max="row.remainingNum"
|
|
|
+ placeholder="请输入占用箱量"
|
|
|
+ size="small"
|
|
|
+ :controls="false"
|
|
|
+ style="width: 100%;"
|
|
|
+ ></el-input-number>
|
|
|
+ <span v-else>{{ row.occupyNum }}</span>
|
|
|
+ </template>
|
|
|
</avue-crud>
|
|
|
- <el-dialog title="查看放箱号" :visible.sync="dialogVisible" width="50%" :before-close="handleClose" append-to-body>
|
|
|
- <span>
|
|
|
- <avue-crud ref="crud2" :option="containerOption" :data="containerNumberItemList"
|
|
|
- @resetColumn="resetColumnTwo('crud2', 'containerOption', 'containerOptionBack', 488)"
|
|
|
- @saveColumn="saveColumnTwo('crud2', 'containerOption', 'containerOptionBack', 488)">
|
|
|
- <template slot="occupyNum" slot-scope="{ row }">
|
|
|
- <el-input-number v-if="!row.id" v-model="row.occupyNum" :min="0" :max="row.remainingNum"
|
|
|
- placeholder="请输入占用箱量" size="small" :controls="false" style="width: 100%;"></el-input-number>
|
|
|
- <span v-else>{{ row.occupyNum }}</span>
|
|
|
- </template>
|
|
|
- </avue-crud>
|
|
|
- </span>
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="dialogVisible = false" size="mini">{{ editStatus ? '取 消' : '关 闭' }}</el-button>
|
|
|
- <el-button v-if="editStatus" type="primary" @click="submit" size="mini">确 定</el-button>
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
- <import-temp ref="importTemp" @importData="importTemp"></import-temp>
|
|
|
- </basic-container>
|
|
|
+ </span>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false" size="mini">{{ editStatus ? "取 消" : "关 闭" }}</el-button>
|
|
|
+ <el-button v-if="editStatus" type="primary" @click="submit" size="mini">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <import-temp ref="importTemp" @importData="importTemp"></import-temp>
|
|
|
+ <send-edi ref="sendEdi" @importData="sendEdi"></send-edi>
|
|
|
+ </basic-container>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import {
|
|
|
- precontainersList,
|
|
|
- precontainersDetail,
|
|
|
- precontainersSubmit,
|
|
|
- precontainersRemove,
|
|
|
- precontainersSubmitList,
|
|
|
- getItemListHY,
|
|
|
- selectedContainerNumber,
|
|
|
- revokeSelectedContainerNumber,
|
|
|
+ precontainersList,
|
|
|
+ precontainersDetail,
|
|
|
+ precontainersSubmit,
|
|
|
+ precontainersRemove,
|
|
|
+ precontainersSubmitList,
|
|
|
+ getItemListHY,
|
|
|
+ selectedContainerNumber,
|
|
|
+ revokeSelectedContainerNumber,
|
|
|
+ sendVerificationPrompt
|
|
|
} from "@/api/iosBasicData/ReceivingOrders/precontainers";
|
|
|
import { getWorkDicts } from "@/api/system/dictbiz";
|
|
|
import { mapGetters } from "vuex";
|
|
|
@@ -102,938 +192,979 @@ import { containersEqualDistribution } from "@/api/iosBasicData/containers";
|
|
|
import { requiredMessage } from "@/util/messageReminder";
|
|
|
import { Header } from "element-ui";
|
|
|
import importTemp from "./components/importTemp.vue";
|
|
|
-
|
|
|
+import sendEdi from "./components/sendEdi.vue";
|
|
|
export default {
|
|
|
- components: { SearchQuery, importTemp },
|
|
|
- props: {
|
|
|
- pid: {},
|
|
|
- assemblyForm: {
|
|
|
- type: Object,
|
|
|
- default: {}
|
|
|
- },
|
|
|
- seeDisabled: {
|
|
|
- type: Boolean,
|
|
|
- default: false,
|
|
|
- },
|
|
|
- showLock: {
|
|
|
- type: Boolean,
|
|
|
- default: false
|
|
|
- }
|
|
|
+ components: { SearchQuery, importTemp, sendEdi },
|
|
|
+ props: {
|
|
|
+ pid: {},
|
|
|
+ assemblyForm: {
|
|
|
+ type: Object,
|
|
|
+ default: {}
|
|
|
},
|
|
|
- data() {
|
|
|
- return {
|
|
|
- editStatus: false,
|
|
|
- dialogVisible: false,
|
|
|
- // 集装箱尺码箱型
|
|
|
- cntrTypeCodeData: [],
|
|
|
- containerNumberItemList: [],
|
|
|
- form: {},
|
|
|
- query: {},
|
|
|
- loading: false,
|
|
|
- page: {
|
|
|
- pageSize: 10,
|
|
|
- currentPage: 1,
|
|
|
- total: 0
|
|
|
- },
|
|
|
- selectionList: [],
|
|
|
- option: {},
|
|
|
- optionBack: {
|
|
|
- maxHeight: '150px',
|
|
|
- // calcHeight: 30,
|
|
|
- calcHeight: 30,
|
|
|
- menuWidth: 120,
|
|
|
- tip: false,
|
|
|
- border: true,
|
|
|
- addBtn: false,
|
|
|
- viewBtn: false,
|
|
|
- editBtn: false,
|
|
|
- delBtn: false,
|
|
|
- refreshBtn: false,
|
|
|
- selection: true,
|
|
|
- align: 'center',
|
|
|
- menu: true,
|
|
|
- index: true,
|
|
|
- column: [
|
|
|
- {
|
|
|
- label: this.$t("sea118n.ctnrType"),
|
|
|
- prop: "cntrTypeCode",
|
|
|
- formslot: true,
|
|
|
- cell: true,
|
|
|
- width: '120',
|
|
|
- rules: [{
|
|
|
- required: true,
|
|
|
- message: "请选择箱型",
|
|
|
- trigger: "blur"
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: this.$t("sea118n.ctnrQty"),
|
|
|
- prop: "quantity",
|
|
|
- type: "number",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- precision: 0,
|
|
|
- width: '120',
|
|
|
- rules: [{
|
|
|
- required: true,
|
|
|
- message: "请输入箱量",
|
|
|
- trigger: "blur"
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: this.$t("sea118n.QTY"),
|
|
|
- prop: "number",
|
|
|
- type: "number",
|
|
|
- width: '120',
|
|
|
- // cell:true,
|
|
|
- controls: false,
|
|
|
- precision: 0,
|
|
|
- },
|
|
|
- {
|
|
|
- label: this.$t("sea118n.GW"),
|
|
|
- prop: "grossWeight",
|
|
|
- width: '120',
|
|
|
- type: "number",
|
|
|
- // cell:true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: this.$t("sea118n.CBM"),
|
|
|
- prop: "measurement",
|
|
|
- width: '120',
|
|
|
- type: "number",
|
|
|
- // cell:true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "temperature",
|
|
|
- prop: "temperature",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- // type:"number",
|
|
|
- width: "120"
|
|
|
- },
|
|
|
- {
|
|
|
- label: "temperatureUnit",
|
|
|
- prop: "temperatureUnit",
|
|
|
- type: 'select',
|
|
|
- cell: true,
|
|
|
- dicData: [{
|
|
|
- label: '摄氏度',
|
|
|
- value: 'C'
|
|
|
- }, {
|
|
|
- label: '华氏度',
|
|
|
- value: 'F'
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: "通风度",
|
|
|
- prop: "ventilation",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- // type:"number",
|
|
|
- width: "120"
|
|
|
- },
|
|
|
- {
|
|
|
- label: "湿度",
|
|
|
- prop: "humidity",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- // type:"number",
|
|
|
- width: "120"
|
|
|
- },
|
|
|
- {
|
|
|
- label: "SOC",
|
|
|
- prop: "isSoc",
|
|
|
- width: '120',
|
|
|
- type: 'select',
|
|
|
- cell: true,
|
|
|
- dicData: [{
|
|
|
- label: '否',
|
|
|
- value: 0
|
|
|
- }, {
|
|
|
- label: '是',
|
|
|
- value: 1
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: "单程",
|
|
|
- prop: "isOneway",
|
|
|
- type: 'select',
|
|
|
- cell: true,
|
|
|
- dicData: [{
|
|
|
- label: '否',
|
|
|
- value: 0
|
|
|
- }, {
|
|
|
- label: '是',
|
|
|
- value: 1
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: "NOR",
|
|
|
- prop: "nor",
|
|
|
- width: '100',
|
|
|
- type: 'select',
|
|
|
- cell: true,
|
|
|
- dicData: [{
|
|
|
- label: '否',
|
|
|
- value: 0
|
|
|
- }, {
|
|
|
- label: '是',
|
|
|
- value: 1
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: "OOG",
|
|
|
- prop: "oog",
|
|
|
- width: '120',
|
|
|
- type: 'select',
|
|
|
- cell: true,
|
|
|
- dicData: [{
|
|
|
- label: '否',
|
|
|
- value: 0
|
|
|
- }, {
|
|
|
- label: '是',
|
|
|
- value: 1
|
|
|
- }]
|
|
|
- },
|
|
|
- {
|
|
|
- label: "左超(CM)",
|
|
|
- prop: "overLeft",
|
|
|
- type: "number",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "右超(CM)",
|
|
|
- prop: "overRight",
|
|
|
- type: "number",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "前超(CM)",
|
|
|
- prop: "overFront",
|
|
|
- type: "number",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "后超(CM)",
|
|
|
- prop: "overBack",
|
|
|
- type: "number",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "超高(CM)",
|
|
|
- prop: "overHeight",
|
|
|
- type: "number",
|
|
|
- cell: true,
|
|
|
- controls: false,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "备注",
|
|
|
- prop: "remarks",
|
|
|
- span: 24,
|
|
|
- type: 'textarea',
|
|
|
- slot: true,
|
|
|
- minRows: 3,
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- data: [],
|
|
|
- containerOption: {},
|
|
|
- containerOptionBack: {
|
|
|
- height: '500',
|
|
|
- // calcHeight: 30,
|
|
|
- calcHeight: 30,
|
|
|
- menuWidth: 160,
|
|
|
- tip: false,
|
|
|
- border: true,
|
|
|
- addBtn: false,
|
|
|
- viewBtn: false,
|
|
|
- editBtn: false,
|
|
|
- delBtn: false,
|
|
|
- refreshBtn: false,
|
|
|
- align: 'center',
|
|
|
- menu: false,
|
|
|
- index: true,
|
|
|
- column: [
|
|
|
- {
|
|
|
- label: "放箱号",
|
|
|
- prop: "containerNumber",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "内部放箱号",
|
|
|
- prop: "internalContainerNumber",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "放箱号类型",
|
|
|
- prop: "busType",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "场站",
|
|
|
- prop: "polStationCname",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "箱型",
|
|
|
- prop: "boxType",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "可用箱数",
|
|
|
- prop: "remainingNum",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "占用箱量",
|
|
|
- prop: "occupyNum",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- {
|
|
|
- label: "优先等级",
|
|
|
- prop: "priorityLevel",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
+ seeDisabled: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ },
|
|
|
+ showLock: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ editStatus: false,
|
|
|
+ dialogVisible: false,
|
|
|
+ // 集装箱尺码箱型
|
|
|
+ cntrTypeCodeData: [],
|
|
|
+ containerNumberItemList: [],
|
|
|
+ form: {},
|
|
|
+ query: {},
|
|
|
+ loading: false,
|
|
|
+ page: {
|
|
|
+ pageSize: 10,
|
|
|
+ currentPage: 1,
|
|
|
+ total: 0
|
|
|
+ },
|
|
|
+ selectionList: [],
|
|
|
+ option: {},
|
|
|
+ optionBack: {
|
|
|
+ maxHeight: "150px",
|
|
|
+ // calcHeight: 30,
|
|
|
+ calcHeight: 30,
|
|
|
+ menuWidth: 120,
|
|
|
+ tip: false,
|
|
|
+ border: true,
|
|
|
+ addBtn: false,
|
|
|
+ viewBtn: false,
|
|
|
+ editBtn: false,
|
|
|
+ delBtn: false,
|
|
|
+ refreshBtn: false,
|
|
|
+ selection: true,
|
|
|
+ align: "center",
|
|
|
+ menu: true,
|
|
|
+ index: true,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: this.$t("sea118n.ctnrType"),
|
|
|
+ prop: "cntrTypeCode",
|
|
|
+ formslot: true,
|
|
|
+ cell: true,
|
|
|
+ width: "120",
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "请选择箱型",
|
|
|
+ trigger: "blur"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: this.$t("sea118n.ctnrQty"),
|
|
|
+ prop: "quantity",
|
|
|
+ type: "number",
|
|
|
+ cell: true,
|
|
|
+ controls: false,
|
|
|
+ precision: 0,
|
|
|
+ width: "120",
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "请输入箱量",
|
|
|
+ trigger: "blur"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: this.$t("sea118n.QTY"),
|
|
|
+ prop: "number",
|
|
|
+ type: "number",
|
|
|
+ width: "120",
|
|
|
+ // cell:true,
|
|
|
+ controls: false,
|
|
|
+ precision: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: this.$t("sea118n.GW"),
|
|
|
+ prop: "grossWeight",
|
|
|
+ width: "120",
|
|
|
+ type: "number",
|
|
|
+ // cell:true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: this.$t("sea118n.CBM"),
|
|
|
+ prop: "measurement",
|
|
|
+ width: "120",
|
|
|
+ type: "number",
|
|
|
+ // cell:true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "temperature",
|
|
|
+ prop: "temperature",
|
|
|
+ cell: true,
|
|
|
+ controls: false,
|
|
|
+ // type:"number",
|
|
|
+ width: "120"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "temperatureUnit",
|
|
|
+ prop: "temperatureUnit",
|
|
|
+ type: "select",
|
|
|
+ cell: true,
|
|
|
+ dicData: [
|
|
|
+ {
|
|
|
+ label: "摄氏度",
|
|
|
+ value: "C"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "华氏度",
|
|
|
+ value: "F"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "通风度",
|
|
|
+ prop: "ventilation",
|
|
|
+ cell: true,
|
|
|
+ controls: false,
|
|
|
+ // type:"number",
|
|
|
+ width: "120"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "湿度",
|
|
|
+ prop: "humidity",
|
|
|
+ cell: true,
|
|
|
+ controls: false,
|
|
|
+ // type:"number",
|
|
|
+ width: "120"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "SOC",
|
|
|
+ prop: "isSoc",
|
|
|
+ width: "120",
|
|
|
+ type: "select",
|
|
|
+ cell: true,
|
|
|
+ dicData: [
|
|
|
+ {
|
|
|
+ label: "否",
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "是",
|
|
|
+ value: 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "单程",
|
|
|
+ prop: "isOneway",
|
|
|
+ type: "select",
|
|
|
+ cell: true,
|
|
|
+ dicData: [
|
|
|
+ {
|
|
|
+ label: "否",
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "是",
|
|
|
+ value: 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "NOR",
|
|
|
+ prop: "nor",
|
|
|
+ width: "100",
|
|
|
+ type: "select",
|
|
|
+ cell: true,
|
|
|
+ dicData: [
|
|
|
+ {
|
|
|
+ label: "否",
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "是",
|
|
|
+ value: 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "OOG",
|
|
|
+ prop: "oog",
|
|
|
+ width: "120",
|
|
|
+ type: "select",
|
|
|
+ cell: true,
|
|
|
+ dicData: [
|
|
|
+ {
|
|
|
+ label: "否",
|
|
|
+ value: 0
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "是",
|
|
|
+ value: 1
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "左超(CM)",
|
|
|
+ prop: "overLeft",
|
|
|
+ type: "number",
|
|
|
+ cell: true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "右超(CM)",
|
|
|
+ prop: "overRight",
|
|
|
+ type: "number",
|
|
|
+ cell: true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "前超(CM)",
|
|
|
+ prop: "overFront",
|
|
|
+ type: "number",
|
|
|
+ cell: true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "后超(CM)",
|
|
|
+ prop: "overBack",
|
|
|
+ type: "number",
|
|
|
+ cell: true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "超高(CM)",
|
|
|
+ prop: "overHeight",
|
|
|
+ type: "number",
|
|
|
+ cell: true,
|
|
|
+ controls: false
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "备注",
|
|
|
+ prop: "remarks",
|
|
|
+ span: 24,
|
|
|
+ type: "textarea",
|
|
|
+ slot: true,
|
|
|
+ minRows: 3
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ data: [],
|
|
|
+ containerOption: {},
|
|
|
+ containerOptionBack: {
|
|
|
+ height: "500",
|
|
|
+ // calcHeight: 30,
|
|
|
+ calcHeight: 30,
|
|
|
+ menuWidth: 160,
|
|
|
+ tip: false,
|
|
|
+ border: true,
|
|
|
+ addBtn: false,
|
|
|
+ viewBtn: false,
|
|
|
+ editBtn: false,
|
|
|
+ delBtn: false,
|
|
|
+ refreshBtn: false,
|
|
|
+ align: "center",
|
|
|
+ menu: false,
|
|
|
+ index: true,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: "放箱号",
|
|
|
+ prop: "containerNumber",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "内部放箱号",
|
|
|
+ prop: "internalContainerNumber",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "放箱号类型",
|
|
|
+ prop: "busType",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "场站",
|
|
|
+ prop: "polStationCname",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "箱型",
|
|
|
+ prop: "boxType",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "可用箱数",
|
|
|
+ prop: "remainingNum",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "占用箱量",
|
|
|
+ prop: "occupyNum",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "优先等级",
|
|
|
+ prop: "priorityLevel",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- label: "箱管备注",
|
|
|
- prop: "boxRemarks",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
+ {
|
|
|
+ label: "箱管备注",
|
|
|
+ prop: "boxRemarks",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ },
|
|
|
|
|
|
- {
|
|
|
- label: "备注",
|
|
|
- prop: "remarks",
|
|
|
- width: 100,
|
|
|
- overHidden: true,
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- };
|
|
|
+ {
|
|
|
+ label: "备注",
|
|
|
+ prop: "remarks",
|
|
|
+ width: 100,
|
|
|
+ overHidden: true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapGetters(["permission"]),
|
|
|
+ permissionList() {
|
|
|
+ return {
|
|
|
+ addBtn: this.vaildData(this.permission.precontainers_add, false),
|
|
|
+ viewBtn: this.vaildData(this.permission.precontainers_view, false),
|
|
|
+ delBtn: this.vaildData(this.permission.precontainers_delete, false),
|
|
|
+ editBtn: this.vaildData(this.permission.precontainers_edit, false)
|
|
|
+ };
|
|
|
},
|
|
|
- computed: {
|
|
|
- ...mapGetters(["permission"]),
|
|
|
- permissionList() {
|
|
|
- return {
|
|
|
- addBtn: this.vaildData(this.permission.precontainers_add, false),
|
|
|
- viewBtn: this.vaildData(this.permission.precontainers_view, false),
|
|
|
- delBtn: this.vaildData(this.permission.precontainers_delete, false),
|
|
|
- editBtn: this.vaildData(this.permission.precontainers_edit, false)
|
|
|
- };
|
|
|
- },
|
|
|
- ids() {
|
|
|
- let ids = [];
|
|
|
- this.selectionList.forEach(ele => {
|
|
|
- ids.push(ele.id);
|
|
|
- });
|
|
|
- return ids.join(",");
|
|
|
+ ids() {
|
|
|
+ let ids = [];
|
|
|
+ this.selectionList.forEach(ele => {
|
|
|
+ ids.push(ele.id);
|
|
|
+ });
|
|
|
+ return ids.join(",");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async created() {
|
|
|
+ this.option = await this.getColumnData(this.getColumnName(487), this.optionBack);
|
|
|
+ this.containerOption = await this.getColumnData(this.getColumnName(488), this.containerOptionBack);
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ sendEdi() {
|
|
|
+ sendVerificationPrompt({ ids: this.assemblyForm.id }).then(res => {
|
|
|
+ this.$refs.sendEdi.openDialog(this.assemblyForm.id);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ confirmBox() {
|
|
|
+ this.$refs.importTemp.openDialog(this.assemblyForm);
|
|
|
+ },
|
|
|
+ importTemp() {
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ },
|
|
|
+ submit() {
|
|
|
+ // let obj = {
|
|
|
+ // containerNumberItemList:
|
|
|
+ // }
|
|
|
+ // for (let item of ) {
|
|
|
+ // if (!(item.occupyNum > 0)) {
|
|
|
+ // return this.$message.error("占用箱量必须大于0!");
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ if (this.containerNumberItemList.filter(item => item.occupyNum > 0).length == 0) {
|
|
|
+ return this.$message.error("至少有一条占用箱量大于0!");
|
|
|
+ }
|
|
|
+ selectedContainerNumber(this.containerNumberItemList).then(res => {
|
|
|
+ this.$message.success("操作成功!");
|
|
|
+ this.dialogVisible = false;
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ pick(row) {
|
|
|
+ this.containerNumberItemList = [];
|
|
|
+ if (!this.assemblyForm.polId) {
|
|
|
+ return this.$message.error("请选择装货港");
|
|
|
+ }
|
|
|
+ if (!this.assemblyForm.podId) {
|
|
|
+ return this.$message.error("请选择卸货港");
|
|
|
+ }
|
|
|
+ let obj = {
|
|
|
+ boxType: row.cntrTypeCode,
|
|
|
+ polId: this.assemblyForm.polId,
|
|
|
+ podId: this.assemblyForm.podId,
|
|
|
+ cabinType: this.assemblyForm.cabinType,
|
|
|
+ airlineId: this.assemblyForm.airlineId,
|
|
|
+ etd: this.assemblyForm.etd + " 00:00:00"
|
|
|
+ };
|
|
|
+ getItemListHY(obj).then(res => {
|
|
|
+ if (res.data.data) {
|
|
|
+ res.data.data.forEach(item => {
|
|
|
+ item.pid = this.assemblyForm.id;
|
|
|
+ });
|
|
|
+ this.editStatus = true;
|
|
|
+ this.containerNumberItemList = res.data.data;
|
|
|
}
|
|
|
+ });
|
|
|
+ this.dialogVisible = true;
|
|
|
},
|
|
|
- async created() {
|
|
|
- this.option = await this.getColumnData(this.getColumnName(487), this.optionBack);
|
|
|
- this.containerOption = await this.getColumnData(this.getColumnName(488), this.containerOptionBack);
|
|
|
+ rowRevoke(row) {
|
|
|
+ let obj = {
|
|
|
+ boxType: row.cntrTypeCode,
|
|
|
+ billId: this.assemblyForm.id
|
|
|
+ };
|
|
|
+ revokeSelectedContainerNumber(obj).then(res => {
|
|
|
+ this.$message.success("操作成功!");
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ });
|
|
|
},
|
|
|
- methods: {
|
|
|
- confirmBox() {
|
|
|
- this.$refs.importTemp.openDialog(this.assemblyForm)
|
|
|
- },
|
|
|
- importTemp() {
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- },
|
|
|
- submit() {
|
|
|
- // let obj = {
|
|
|
- // containerNumberItemList:
|
|
|
- // }
|
|
|
- // for (let item of ) {
|
|
|
- // if (!(item.occupyNum > 0)) {
|
|
|
- // return this.$message.error("占用箱量必须大于0!");
|
|
|
- // }
|
|
|
- // }
|
|
|
- if (this.containerNumberItemList.filter(item => item.occupyNum > 0).length == 0) {
|
|
|
- return this.$message.error("至少有一条占用箱量大于0!");
|
|
|
- }
|
|
|
- selectedContainerNumber(this.containerNumberItemList).then(res => {
|
|
|
- this.$message.success("操作成功!");
|
|
|
- this.dialogVisible = false
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- })
|
|
|
- },
|
|
|
- pick(row) {
|
|
|
- this.containerNumberItemList = []
|
|
|
- if (!this.assemblyForm.polId) {
|
|
|
- return this.$message.error("请选择装货港");
|
|
|
- }
|
|
|
- if (!this.assemblyForm.podId) {
|
|
|
- return this.$message.error("请选择卸货港");
|
|
|
- }
|
|
|
- let obj = {
|
|
|
- boxType: row.cntrTypeCode,
|
|
|
- polId: this.assemblyForm.polId,
|
|
|
- podId: this.assemblyForm.podId,
|
|
|
- cabinType: this.assemblyForm.cabinType,
|
|
|
- airlineId: this.assemblyForm.airlineId,
|
|
|
- etd: this.assemblyForm.etd + ' 00:00:00',
|
|
|
- }
|
|
|
- getItemListHY(obj).then(res => {
|
|
|
- if (res.data.data) {
|
|
|
- res.data.data.forEach(item => {
|
|
|
- item.pid = this.assemblyForm.id
|
|
|
- })
|
|
|
- this.editStatus = true
|
|
|
- this.containerNumberItemList = res.data.data
|
|
|
- }
|
|
|
- })
|
|
|
- this.dialogVisible = true
|
|
|
-
|
|
|
- },
|
|
|
- rowRevoke(row) {
|
|
|
- let obj = {
|
|
|
- boxType: row.cntrTypeCode,
|
|
|
- billId: this.assemblyForm.id
|
|
|
- }
|
|
|
- revokeSelectedContainerNumber(obj).then(res => {
|
|
|
- this.$message.success("操作成功!");
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- })
|
|
|
- },
|
|
|
- rowView(row) {
|
|
|
- this.containerNumberItemList = []
|
|
|
- this.editStatus = false
|
|
|
- this.dialogVisible = true
|
|
|
- this.containerNumberItemList = this.assemblyForm.containerNumberItemList.filter(item => row.cntrTypeCode == item.boxType && item.occupyNum > 0)
|
|
|
- },
|
|
|
- handleClose() {
|
|
|
- this.dialogVisible = false
|
|
|
- this.editStatus = false
|
|
|
- },
|
|
|
- onclickEdit() {
|
|
|
- // for (let item of this.assemblyForm.preContainersList) {
|
|
|
- // if(item.containerNumberStatus == '已选择'){
|
|
|
- // return this.$message.error('请撤销放箱号,再进行编辑!')
|
|
|
- // }else{
|
|
|
- // this.$delete(item, '$cellEdit')
|
|
|
- // this.$set(item, '$cellEdit', true)
|
|
|
- // }
|
|
|
- // }
|
|
|
- console.log()
|
|
|
- if (this.assemblyForm.containersList.length > 0) {
|
|
|
- this.$alert('当前数据已经均分箱量,请撤销之后再修改', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- });
|
|
|
- } else {
|
|
|
- for (let item of this.assemblyForm.preContainersList) {
|
|
|
- this.$delete(item, '$cellEdit')
|
|
|
- this.$set(item, '$cellEdit', true)
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- // 件数失焦事件
|
|
|
- numberBlur(row) {
|
|
|
- let quantityNum = 0
|
|
|
- for (let item of this.assemblyForm.preContainersList) {
|
|
|
- if (item.number) {
|
|
|
- quantityNum += Number(item.number)
|
|
|
- }
|
|
|
- }
|
|
|
- if (quantityNum != 0) {
|
|
|
- this.assemblyForm.quantity = quantityNum
|
|
|
- }
|
|
|
- },
|
|
|
- // 毛重失焦事件
|
|
|
- grossWeightBlur(row) {
|
|
|
- let grossWeightNum = 0
|
|
|
- for (let item of this.assemblyForm.preContainersList) {
|
|
|
- if (item.grossWeight) {
|
|
|
- grossWeightNum += Number(item.grossWeight)
|
|
|
- }
|
|
|
- }
|
|
|
- if (grossWeightNum != 0) {
|
|
|
- this.assemblyForm.grossWeight = grossWeightNum
|
|
|
- }
|
|
|
- },
|
|
|
- // 尺码失焦事件
|
|
|
- measurementBlur(row) {
|
|
|
- let measurementNum = 0
|
|
|
- for (let item of this.assemblyForm.preContainersList) {
|
|
|
- if (item.measurement) {
|
|
|
- measurementNum += Number(item.measurement)
|
|
|
- }
|
|
|
- }
|
|
|
- if (measurementNum != 0) {
|
|
|
- this.assemblyForm.measurement = measurementNum
|
|
|
- }
|
|
|
- },
|
|
|
- // 一键编辑
|
|
|
- oneTouchEditefun() {
|
|
|
- for (let item of this.assemblyForm.preContainersList) {
|
|
|
- this.$refs.crud.rowCell(item, item.$index)
|
|
|
- }
|
|
|
+ rowView(row) {
|
|
|
+ this.containerNumberItemList = [];
|
|
|
+ this.editStatus = false;
|
|
|
+ this.dialogVisible = true;
|
|
|
+ this.containerNumberItemList = this.assemblyForm.containerNumberItemList.filter(item => row.cntrTypeCode == item.boxType && item.occupyNum > 0);
|
|
|
+ },
|
|
|
+ handleClose() {
|
|
|
+ this.dialogVisible = false;
|
|
|
+ this.editStatus = false;
|
|
|
+ },
|
|
|
+ onclickEdit() {
|
|
|
+ // for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ // if(item.containerNumberStatus == '已选择'){
|
|
|
+ // return this.$message.error('请撤销放箱号,再进行编辑!')
|
|
|
+ // }else{
|
|
|
+ // this.$delete(item, '$cellEdit')
|
|
|
+ // this.$set(item, '$cellEdit', true)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ console.log();
|
|
|
+ if (this.assemblyForm.containersList.length > 0) {
|
|
|
+ this.$alert("当前数据已经均分箱量,请撤销之后再修改", "提示", {
|
|
|
+ confirmButtonText: "确定"
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ this.$delete(item, "$cellEdit");
|
|
|
+ this.$set(item, "$cellEdit", true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 件数失焦事件
|
|
|
+ numberBlur(row) {
|
|
|
+ let quantityNum = 0;
|
|
|
+ for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ if (item.number) {
|
|
|
+ quantityNum += Number(item.number);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (quantityNum != 0) {
|
|
|
+ this.assemblyForm.quantity = quantityNum;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 毛重失焦事件
|
|
|
+ grossWeightBlur(row) {
|
|
|
+ let grossWeightNum = 0;
|
|
|
+ for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ if (item.grossWeight) {
|
|
|
+ grossWeightNum += Number(item.grossWeight);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (grossWeightNum != 0) {
|
|
|
+ this.assemblyForm.grossWeight = grossWeightNum;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 尺码失焦事件
|
|
|
+ measurementBlur(row) {
|
|
|
+ let measurementNum = 0;
|
|
|
+ for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ if (item.measurement) {
|
|
|
+ measurementNum += Number(item.measurement);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (measurementNum != 0) {
|
|
|
+ this.assemblyForm.measurement = measurementNum;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 一键编辑
|
|
|
+ oneTouchEditefun() {
|
|
|
+ for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ this.$refs.crud.rowCell(item, item.$index);
|
|
|
+ }
|
|
|
|
|
|
- console.log(this.assemblyForm.preContainersList, 294)
|
|
|
- // $cellEdit
|
|
|
- },
|
|
|
- // 批量保存
|
|
|
- batchSavefun() {
|
|
|
- if (!this.assemblyForm.id) {
|
|
|
- this.$message({
|
|
|
- message: '请先点击右上角保存按钮,保存数据之后才能添加!',
|
|
|
- type: 'warning'
|
|
|
- });
|
|
|
- return
|
|
|
- }
|
|
|
- // let numberSum = 0
|
|
|
- // let grossWeightSum = 0
|
|
|
- // let measurementSum = 0
|
|
|
- // for (let item of this.assemblyForm.preContainersList) {
|
|
|
- // numberSum += Number(item.number)
|
|
|
- // grossWeightSum += Number(item.grossWeight)
|
|
|
- // measurementSum += Number(item.measurement)
|
|
|
- // if (!item.cntrTypeCode) {
|
|
|
- // this.$message.warning('请选择尺码箱型')
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // if (!item.quantity) {
|
|
|
- // this.$message.warning('请输入箱量')
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // item.pid = this.assemblyForm.id
|
|
|
- // }
|
|
|
- // if (numberSum>0&&(numberSum != this.assemblyForm.quantity)) return this.$message.error('箱型所有的件数不等于总件数')
|
|
|
- // this.$confirm("批量保存后,需要重新配箱,确认继续?", {
|
|
|
- // confirmButtonText: "确定",
|
|
|
- // cancelButtonText: "取消",
|
|
|
- // type: "warning"
|
|
|
- // }).then(() => {
|
|
|
- // precontainersSubmitList(this.assemblyForm.preContainersList).then(res => {
|
|
|
- // this.$message({
|
|
|
- // type: "success",
|
|
|
- // message: "操作成功!"
|
|
|
- // });
|
|
|
- // this.$emit('billsDetailfun')
|
|
|
- // })
|
|
|
- // })
|
|
|
- // assemblyForm.containersList
|
|
|
- for (let item of this.assemblyForm.preContainersList) {
|
|
|
- if (this.assemblyForm.containersList.filter(e => item.cntrTypeCode == e.cntrTypeCode).length != item.quantity) {
|
|
|
- this.$confirm("箱型箱量改变,请检查预录费用信息?", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- showCancelButton: false,
|
|
|
- type: "error"
|
|
|
- }).then(() => {
|
|
|
- precontainersSubmitList(this.assemblyForm.preContainersList).then(res => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- })
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- }
|
|
|
+ console.log(this.assemblyForm.preContainersList, 294);
|
|
|
+ // $cellEdit
|
|
|
+ },
|
|
|
+ // 批量保存
|
|
|
+ batchSavefun() {
|
|
|
+ if (!this.assemblyForm.id) {
|
|
|
+ this.$message({
|
|
|
+ message: "请先点击右上角保存按钮,保存数据之后才能添加!",
|
|
|
+ type: "warning"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // let numberSum = 0
|
|
|
+ // let grossWeightSum = 0
|
|
|
+ // let measurementSum = 0
|
|
|
+ // for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ // numberSum += Number(item.number)
|
|
|
+ // grossWeightSum += Number(item.grossWeight)
|
|
|
+ // measurementSum += Number(item.measurement)
|
|
|
+ // if (!item.cntrTypeCode) {
|
|
|
+ // this.$message.warning('请选择尺码箱型')
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // if (!item.quantity) {
|
|
|
+ // this.$message.warning('请输入箱量')
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // item.pid = this.assemblyForm.id
|
|
|
+ // }
|
|
|
+ // if (numberSum>0&&(numberSum != this.assemblyForm.quantity)) return this.$message.error('箱型所有的件数不等于总件数')
|
|
|
+ // this.$confirm("批量保存后,需要重新配箱,确认继续?", {
|
|
|
+ // confirmButtonText: "确定",
|
|
|
+ // cancelButtonText: "取消",
|
|
|
+ // type: "warning"
|
|
|
+ // }).then(() => {
|
|
|
+ // precontainersSubmitList(this.assemblyForm.preContainersList).then(res => {
|
|
|
+ // this.$message({
|
|
|
+ // type: "success",
|
|
|
+ // message: "操作成功!"
|
|
|
+ // });
|
|
|
+ // this.$emit('billsDetailfun')
|
|
|
+ // })
|
|
|
+ // })
|
|
|
+ // assemblyForm.containersList
|
|
|
+ for (let item of this.assemblyForm.preContainersList) {
|
|
|
+ if (this.assemblyForm.containersList.filter(e => item.cntrTypeCode == e.cntrTypeCode).length != item.quantity) {
|
|
|
+ this.$confirm("箱型箱量改变,请检查预录费用信息?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ showCancelButton: false,
|
|
|
+ type: "error"
|
|
|
+ }).then(() => {
|
|
|
precontainersSubmitList(this.assemblyForm.preContainersList).then(res => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- })
|
|
|
- },
|
|
|
- // 平均箱量
|
|
|
- equalDistribution(type) {
|
|
|
- if (!this.assemblyForm.id) {
|
|
|
- this.$message({
|
|
|
- message: '请先点击右上角保存按钮,保存数据之后才能添加!',
|
|
|
- type: 'warning'
|
|
|
- });
|
|
|
- return
|
|
|
- }
|
|
|
- if (this.assemblyForm.waitingBoxList.length <= 0) {
|
|
|
- this.$message({
|
|
|
- type: "warning",
|
|
|
- message: "请先添加集装箱数据!"
|
|
|
- });
|
|
|
- return
|
|
|
- }
|
|
|
- if (this.assemblyForm.preContainersList <= 0) {
|
|
|
- this.$message({
|
|
|
- type: "warning",
|
|
|
- message: "请先添加箱型数据!"
|
|
|
- });
|
|
|
- return
|
|
|
- }
|
|
|
- this.$confirm("确定平均分配?", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(() => {
|
|
|
- this.containersEqualDistributionfun(type)
|
|
|
- })
|
|
|
- },
|
|
|
- // 平均分配接口
|
|
|
- containersEqualDistributionfun(type) {
|
|
|
- containersEqualDistribution({
|
|
|
- pid: this.assemblyForm.id,
|
|
|
- type: type,
|
|
|
- waitingBox: this.assemblyForm.waitingBoxList[0]
|
|
|
- }).then(res => {
|
|
|
- if (res.data.data instanceof Array) {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- })
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- } else {
|
|
|
- // 没有除开
|
|
|
- this.$message({
|
|
|
- type: 'warning',
|
|
|
- dangerouslyUseHTMLString: true,
|
|
|
- message: '<span style="color:red">注意!!!件数不能平均分 ,请手工配箱,或者修改件数.</span>\n' +
|
|
|
- '<table border="1">\n' +
|
|
|
- ' <thead>\n' +
|
|
|
- ' <tr>\n' +
|
|
|
- ' <th></th>\n' +
|
|
|
- ' <th>件数</th>\n' +
|
|
|
- ' <th>毛重</th>\n' +
|
|
|
- ' <th>尺码</th>\n' +
|
|
|
- ' </tr>\n' +
|
|
|
- ' </thead>\n' +
|
|
|
- ' <tbody>\n' +
|
|
|
- ' <tr>\n' +
|
|
|
- ' <td>总数</td>\n' +
|
|
|
- ' <td>' + res.data.data.total.quantity + '</td>\n' +
|
|
|
- ' <td>' + res.data.data.total.grossWeight + '</td>\n' +
|
|
|
- ' <td>' + res.data.data.total.grossWeight + '</td>\n' +
|
|
|
- ' </tr>\n' +
|
|
|
- ' <tr>\n' +
|
|
|
- ' <td>入箱</td>\n' +
|
|
|
- ' <td>' + res.data.data.average.quantity + '</td>\n' +
|
|
|
- ' <td>' + res.data.data.average.grossWeight + '</td>\n' +
|
|
|
- ' <td>' + res.data.data.average.grossWeight + '</td>\n' +
|
|
|
- ' </tr>\n' +
|
|
|
- ' <tr>\n' +
|
|
|
- ' <td>差额</td>\n' +
|
|
|
- ' <td>' + res.data.data.subtract.quantity + '</td>\n' +
|
|
|
- ' <td>' + res.data.data.subtract.grossWeight + '</td>\n' +
|
|
|
- ' <td>' + res.data.data.subtract.grossWeight + '</td>\n' +
|
|
|
- ' </tr>\n' +
|
|
|
- ' </tbody>\n' +
|
|
|
- '</table>',
|
|
|
- duration: 5000
|
|
|
- });
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- })
|
|
|
- },
|
|
|
- corpClear(value, row) {
|
|
|
- this.$set(row, 'cntrTypeCode', null)
|
|
|
- this.$set(row, 'cntrTypeCodeId', null)
|
|
|
- this.$set(row, 'teu', null)
|
|
|
- },
|
|
|
- // 选择框的回调
|
|
|
- corpChange(value, row) {
|
|
|
- if (this.assemblyForm.preContainersList.filter(e => value == e.cntrTypeCode).length) {
|
|
|
- this.$set(row, 'cntrTypeCode', null)
|
|
|
- this.$set(row, 'cntrTypeCodeId', null)
|
|
|
- this.$set(row, 'teu', null)
|
|
|
- return this.$message.error('箱型不能重复')
|
|
|
- }
|
|
|
- for (let item of this.cntrTypeCodeData) {
|
|
|
- if (item.cnName == value) {
|
|
|
- this.$set(row, 'cntrTypeCode', item.cnName)
|
|
|
- this.$set(row, 'cntrTypeCodeId', item.id)
|
|
|
- this.$set(row, 'teu', item.teu)
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- // 筛选数据模糊查找
|
|
|
- remoteMethod(value, name) {
|
|
|
- this.bcntrtypesListfun(value)
|
|
|
- },
|
|
|
-
|
|
|
- // 获取箱型字典数据
|
|
|
- bcntrtypesListfun(cnName) {
|
|
|
- bcntrtypesList(1, 10, { cnName }).then(res => {
|
|
|
- this.cntrTypeCodeData = res.data.data.records
|
|
|
- })
|
|
|
- },
|
|
|
- // 添加按钮确认
|
|
|
- rowSave(row, done, loading) {
|
|
|
- row.pid = this.pid
|
|
|
- // 如果是冻柜,则需要输入相应的通度和温度、温度,如果不是冻柜,不需要输入相应的温度等内容;
|
|
|
- if (this.assemblyForm.cargoType == 'reefer') {
|
|
|
- // 要判断的必填
|
|
|
- const arr = [
|
|
|
- {
|
|
|
- name: "温度",
|
|
|
- value: "temperature",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "温度单位",
|
|
|
- value: "temperatureUnit",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "通风度",
|
|
|
- value: "ventilation",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "湿度",
|
|
|
- value: "humidity",
|
|
|
- },
|
|
|
- ]
|
|
|
- if (!requiredMessage(row, arr)) {
|
|
|
- loading(); // 按钮的禁用关闭
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- precontainersSubmit(row).then(() => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- done();
|
|
|
- }, error => {
|
|
|
- loading();
|
|
|
- window.console.log(error);
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
});
|
|
|
- },
|
|
|
- // 编辑确认按钮
|
|
|
- rowUpdate(row, index) {
|
|
|
- let rulesRow = [
|
|
|
- {
|
|
|
- name: "尺码箱型",
|
|
|
- value: "cntrTypeCode",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "箱量",
|
|
|
- value: "quantity",
|
|
|
- },
|
|
|
-
|
|
|
- ]
|
|
|
- if (!requiredMessage(row, rulesRow)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- // 如果是冻柜,则需要输入相应的通度和温度、温度,如果不是冻柜,不需要输入相应的温度等内容;
|
|
|
- if (this.assemblyForm.cargoType == 'reefer') {
|
|
|
- // 要判断的必填
|
|
|
- const arr = [
|
|
|
- {
|
|
|
- name: "温度",
|
|
|
- value: "temperature",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "温度单位",
|
|
|
- value: "temperatureUnit",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "通风度",
|
|
|
- value: "ventilation",
|
|
|
- },
|
|
|
- {
|
|
|
- name: "湿度",
|
|
|
- value: "humidity",
|
|
|
- },
|
|
|
- ]
|
|
|
- if (!requiredMessage(row, arr)) {
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!this.pid) {
|
|
|
- this.$message({
|
|
|
- message: '请先保存数据之后才能添加',
|
|
|
- type: 'warning'
|
|
|
- });
|
|
|
- return
|
|
|
- }
|
|
|
- if (row.id) {
|
|
|
- this.$confirm("已经存在配箱信息,如果修改预配箱数据 要清除全部配箱信息?", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- }).then(() => {
|
|
|
- precontainersSubmit(row).then(() => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.$set(row, '$cellEdit', false)
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- })
|
|
|
- })
|
|
|
- } else {
|
|
|
- row.pid = this.pid
|
|
|
- precontainersSubmit(row).then(() => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.$set(row, '$cellEdit', false)
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- }, error => {
|
|
|
- console.log(error);
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- rowDel(row) {
|
|
|
- this.$confirm("确定将选择数据删除?", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- if (!row.id) {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.assemblyForm.preContainersList.splice(row.$index, 1)
|
|
|
- } else {
|
|
|
- precontainersRemove(row.id).then(() => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- this.$emit('billsDetailfun')
|
|
|
- });
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- // 新增
|
|
|
- addfun() {
|
|
|
- this.$refs.crud.rowCellAdd({ pid: this.assemblyForm.id })
|
|
|
- // this.$refs.crud.rowAdd()
|
|
|
- },
|
|
|
- // 编辑
|
|
|
- editfun(row, index) {
|
|
|
- if (row.$cellEdit) {
|
|
|
- // 保存
|
|
|
- this.rowUpdate(row, index)
|
|
|
- // this.$set(row,'$cellEdit',false)
|
|
|
- } else {
|
|
|
- if (!this.assemblyForm.id) {
|
|
|
- this.$set(row, '$cellEdit', true)
|
|
|
- return
|
|
|
- }
|
|
|
- if (Number(this.assemblyForm.quantity) != Number(this.assemblyForm.waitingBoxList[0].quantity)) {
|
|
|
- this.$alert('当前数据已经均分箱量,请撤销之后再修改', '提示', {
|
|
|
- confirmButtonText: '确定',
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.$set(row, '$cellEdit', true)
|
|
|
- }
|
|
|
- }
|
|
|
- // this.$refs.crud.rowEdit(row,index)
|
|
|
- },
|
|
|
- // 多选删除
|
|
|
- handleDelete() {
|
|
|
- if (this.selectionList.length === 0) {
|
|
|
- this.$message.warning("请选择至少一条数据");
|
|
|
- return;
|
|
|
- }
|
|
|
- this.$confirm("确定将选择数据删除?", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- this.precontainersRemovefun()
|
|
|
- })
|
|
|
-
|
|
|
- },
|
|
|
- // 删除接口
|
|
|
- precontainersRemovefun() {
|
|
|
- let multiList = this.selectionList
|
|
|
- let arr = this.assemblyForm.preContainersList
|
|
|
- // 获取有id 的数据
|
|
|
- const itemsWithId = multiList.filter(item => item.hasOwnProperty('id'));
|
|
|
- let arrIds = itemsWithId.map(item => item.id) // 获取id 数据
|
|
|
- // 把选中的删除掉
|
|
|
- multiList.forEach((item) => {
|
|
|
- for (let index in arr) {
|
|
|
- if (JSON.stringify(item) == JSON.stringify(arr[index])) {
|
|
|
- arr.splice(Number(index), 1)
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- // 有id 的处理
|
|
|
- if (itemsWithId.length != 0) {
|
|
|
- precontainersRemove(arrIds.join(',')).then(() => {
|
|
|
- this.$message({
|
|
|
- type: "success",
|
|
|
- message: "操作成功!"
|
|
|
- });
|
|
|
- // this.$emit('billsDetailfun')
|
|
|
- this.$refs.crud.toggleSelection();
|
|
|
- })
|
|
|
- };
|
|
|
- },
|
|
|
- beforeOpen(done, type) {
|
|
|
- if (["edit", "view"].includes(type)) {
|
|
|
- precontainersDetail(this.form.id).then(res => {
|
|
|
- this.form = res.data.data;
|
|
|
- });
|
|
|
- }
|
|
|
- done();
|
|
|
- },
|
|
|
- selectionChange(list) {
|
|
|
- this.selectionList = list;
|
|
|
- },
|
|
|
- selectionClear() {
|
|
|
- this.selectionList = [];
|
|
|
- this.$refs.crud.toggleSelection();
|
|
|
- },
|
|
|
- refreshChange() {
|
|
|
- console.log('刷新')
|
|
|
- },
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ precontainersSubmitList(this.assemblyForm.preContainersList).then(res => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 平均箱量
|
|
|
+ equalDistribution(type) {
|
|
|
+ if (!this.assemblyForm.id) {
|
|
|
+ this.$message({
|
|
|
+ message: "请先点击右上角保存按钮,保存数据之后才能添加!",
|
|
|
+ type: "warning"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (this.assemblyForm.waitingBoxList.length <= 0) {
|
|
|
+ this.$message({
|
|
|
+ type: "warning",
|
|
|
+ message: "请先添加集装箱数据!"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (this.assemblyForm.preContainersList <= 0) {
|
|
|
+ this.$message({
|
|
|
+ type: "warning",
|
|
|
+ message: "请先添加箱型数据!"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$confirm("确定平均分配?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(() => {
|
|
|
+ this.containersEqualDistributionfun(type);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 平均分配接口
|
|
|
+ containersEqualDistributionfun(type) {
|
|
|
+ containersEqualDistribution({
|
|
|
+ pid: this.assemblyForm.id,
|
|
|
+ type: type,
|
|
|
+ waitingBox: this.assemblyForm.waitingBoxList[0]
|
|
|
+ }).then(res => {
|
|
|
+ if (res.data.data instanceof Array) {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ } else {
|
|
|
+ // 没有除开
|
|
|
+ this.$message({
|
|
|
+ type: "warning",
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
+ message:
|
|
|
+ '<span style="color:red">注意!!!件数不能平均分 ,请手工配箱,或者修改件数.</span>\n' +
|
|
|
+ '<table border="1">\n' +
|
|
|
+ " <thead>\n" +
|
|
|
+ " <tr>\n" +
|
|
|
+ " <th></th>\n" +
|
|
|
+ " <th>件数</th>\n" +
|
|
|
+ " <th>毛重</th>\n" +
|
|
|
+ " <th>尺码</th>\n" +
|
|
|
+ " </tr>\n" +
|
|
|
+ " </thead>\n" +
|
|
|
+ " <tbody>\n" +
|
|
|
+ " <tr>\n" +
|
|
|
+ " <td>总数</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.total.quantity +
|
|
|
+ "</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.total.grossWeight +
|
|
|
+ "</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.total.grossWeight +
|
|
|
+ "</td>\n" +
|
|
|
+ " </tr>\n" +
|
|
|
+ " <tr>\n" +
|
|
|
+ " <td>入箱</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.average.quantity +
|
|
|
+ "</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.average.grossWeight +
|
|
|
+ "</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.average.grossWeight +
|
|
|
+ "</td>\n" +
|
|
|
+ " </tr>\n" +
|
|
|
+ " <tr>\n" +
|
|
|
+ " <td>差额</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.subtract.quantity +
|
|
|
+ "</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.subtract.grossWeight +
|
|
|
+ "</td>\n" +
|
|
|
+ " <td>" +
|
|
|
+ res.data.data.subtract.grossWeight +
|
|
|
+ "</td>\n" +
|
|
|
+ " </tr>\n" +
|
|
|
+ " </tbody>\n" +
|
|
|
+ "</table>",
|
|
|
+ duration: 5000
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ corpClear(value, row) {
|
|
|
+ this.$set(row, "cntrTypeCode", null);
|
|
|
+ this.$set(row, "cntrTypeCodeId", null);
|
|
|
+ this.$set(row, "teu", null);
|
|
|
+ },
|
|
|
+ // 选择框的回调
|
|
|
+ corpChange(value, row) {
|
|
|
+ if (this.assemblyForm.preContainersList.filter(e => value == e.cntrTypeCode).length) {
|
|
|
+ this.$set(row, "cntrTypeCode", null);
|
|
|
+ this.$set(row, "cntrTypeCodeId", null);
|
|
|
+ this.$set(row, "teu", null);
|
|
|
+ return this.$message.error("箱型不能重复");
|
|
|
+ }
|
|
|
+ for (let item of this.cntrTypeCodeData) {
|
|
|
+ if (item.cnName == value) {
|
|
|
+ this.$set(row, "cntrTypeCode", item.cnName);
|
|
|
+ this.$set(row, "cntrTypeCodeId", item.id);
|
|
|
+ this.$set(row, "teu", item.teu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 筛选数据模糊查找
|
|
|
+ remoteMethod(value, name) {
|
|
|
+ this.bcntrtypesListfun(value);
|
|
|
+ },
|
|
|
|
|
|
- //自定义列保存
|
|
|
- async saveColumnTwo(ref, option, optionBack, code) {
|
|
|
- /**
|
|
|
- * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
|
|
|
- * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
|
|
|
- * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
|
|
|
- */
|
|
|
- const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
|
|
|
- if (inSave) {
|
|
|
- this.$message.success("保存成功");
|
|
|
- //关闭窗口
|
|
|
- this.$refs[ref].$refs.dialogColumn.columnBox = false;
|
|
|
- }
|
|
|
+ // 获取箱型字典数据
|
|
|
+ bcntrtypesListfun(cnName) {
|
|
|
+ bcntrtypesList(1, 10, { cnName }).then(res => {
|
|
|
+ this.cntrTypeCodeData = res.data.data.records;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 添加按钮确认
|
|
|
+ rowSave(row, done, loading) {
|
|
|
+ row.pid = this.pid;
|
|
|
+ // 如果是冻柜,则需要输入相应的通度和温度、温度,如果不是冻柜,不需要输入相应的温度等内容;
|
|
|
+ if (this.assemblyForm.cargoType == "reefer") {
|
|
|
+ // 要判断的必填
|
|
|
+ const arr = [
|
|
|
+ {
|
|
|
+ name: "温度",
|
|
|
+ value: "temperature"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "温度单位",
|
|
|
+ value: "temperatureUnit"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "通风度",
|
|
|
+ value: "ventilation"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "湿度",
|
|
|
+ value: "humidity"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ if (!requiredMessage(row, arr)) {
|
|
|
+ loading(); // 按钮的禁用关闭
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ precontainersSubmit(row).then(
|
|
|
+ () => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ done();
|
|
|
},
|
|
|
- //自定义列重置
|
|
|
- async resetColumnTwo(ref, option, optionBack, code) {
|
|
|
- this[option] = this[optionBack];
|
|
|
- const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
|
|
|
- if (inSave) {
|
|
|
- this.$message.success("重置成功");
|
|
|
- this.$refs[ref].$refs.dialogColumn.columnBox = false;
|
|
|
- }
|
|
|
+ error => {
|
|
|
+ loading();
|
|
|
+ window.console.log(error);
|
|
|
+ }
|
|
|
+ );
|
|
|
+ },
|
|
|
+ // 编辑确认按钮
|
|
|
+ rowUpdate(row, index) {
|
|
|
+ let rulesRow = [
|
|
|
+ {
|
|
|
+ name: "尺码箱型",
|
|
|
+ value: "cntrTypeCode"
|
|
|
},
|
|
|
+ {
|
|
|
+ name: "箱量",
|
|
|
+ value: "quantity"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ if (!requiredMessage(row, rulesRow)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 如果是冻柜,则需要输入相应的通度和温度、温度,如果不是冻柜,不需要输入相应的温度等内容;
|
|
|
+ if (this.assemblyForm.cargoType == "reefer") {
|
|
|
+ // 要判断的必填
|
|
|
+ const arr = [
|
|
|
+ {
|
|
|
+ name: "温度",
|
|
|
+ value: "temperature"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "温度单位",
|
|
|
+ value: "temperatureUnit"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "通风度",
|
|
|
+ value: "ventilation"
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: "湿度",
|
|
|
+ value: "humidity"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ if (!requiredMessage(row, arr)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!this.pid) {
|
|
|
+ this.$message({
|
|
|
+ message: "请先保存数据之后才能添加",
|
|
|
+ type: "warning"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (row.id) {
|
|
|
+ this.$confirm("已经存在配箱信息,如果修改预配箱数据 要清除全部配箱信息?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(() => {
|
|
|
+ precontainersSubmit(row).then(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$set(row, "$cellEdit", false);
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ row.pid = this.pid;
|
|
|
+ precontainersSubmit(row).then(
|
|
|
+ () => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$set(row, "$cellEdit", false);
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ },
|
|
|
+ error => {
|
|
|
+ console.log(error);
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+ rowDel(row) {
|
|
|
+ this.$confirm("确定将选择数据删除?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(() => {
|
|
|
+ if (!row.id) {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.assemblyForm.preContainersList.splice(row.$index, 1);
|
|
|
+ } else {
|
|
|
+ precontainersRemove(row.id).then(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ this.$emit("billsDetailfun");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 新增
|
|
|
+ addfun() {
|
|
|
+ this.$refs.crud.rowCellAdd({ pid: this.assemblyForm.id });
|
|
|
+ // this.$refs.crud.rowAdd()
|
|
|
+ },
|
|
|
+ // 编辑
|
|
|
+ editfun(row, index) {
|
|
|
+ if (row.$cellEdit) {
|
|
|
+ // 保存
|
|
|
+ this.rowUpdate(row, index);
|
|
|
+ // this.$set(row,'$cellEdit',false)
|
|
|
+ } else {
|
|
|
+ if (!this.assemblyForm.id) {
|
|
|
+ this.$set(row, "$cellEdit", true);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Number(this.assemblyForm.quantity) != Number(this.assemblyForm.waitingBoxList[0].quantity)) {
|
|
|
+ this.$alert("当前数据已经均分箱量,请撤销之后再修改", "提示", {
|
|
|
+ confirmButtonText: "确定"
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$set(row, "$cellEdit", true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // this.$refs.crud.rowEdit(row,index)
|
|
|
+ },
|
|
|
+ // 多选删除
|
|
|
+ handleDelete() {
|
|
|
+ if (this.selectionList.length === 0) {
|
|
|
+ this.$message.warning("请选择至少一条数据");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$confirm("确定将选择数据删除?", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(() => {
|
|
|
+ this.precontainersRemovefun();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 删除接口
|
|
|
+ precontainersRemovefun() {
|
|
|
+ let multiList = this.selectionList;
|
|
|
+ let arr = this.assemblyForm.preContainersList;
|
|
|
+ // 获取有id 的数据
|
|
|
+ const itemsWithId = multiList.filter(item => item.hasOwnProperty("id"));
|
|
|
+ let arrIds = itemsWithId.map(item => item.id); // 获取id 数据
|
|
|
+ // 把选中的删除掉
|
|
|
+ multiList.forEach(item => {
|
|
|
+ for (let index in arr) {
|
|
|
+ if (JSON.stringify(item) == JSON.stringify(arr[index])) {
|
|
|
+ arr.splice(Number(index), 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // 有id 的处理
|
|
|
+ if (itemsWithId.length != 0) {
|
|
|
+ precontainersRemove(arrIds.join(",")).then(() => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "操作成功!"
|
|
|
+ });
|
|
|
+ // this.$emit('billsDetailfun')
|
|
|
+ this.$refs.crud.toggleSelection();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ beforeOpen(done, type) {
|
|
|
+ if (["edit", "view"].includes(type)) {
|
|
|
+ precontainersDetail(this.form.id).then(res => {
|
|
|
+ this.form = res.data.data;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ done();
|
|
|
+ },
|
|
|
+ selectionChange(list) {
|
|
|
+ this.selectionList = list;
|
|
|
+ },
|
|
|
+ selectionClear() {
|
|
|
+ this.selectionList = [];
|
|
|
+ this.$refs.crud.toggleSelection();
|
|
|
+ },
|
|
|
+ refreshChange() {
|
|
|
+ console.log("刷新");
|
|
|
+ },
|
|
|
|
|
|
+ //自定义列保存
|
|
|
+ async saveColumnTwo(ref, option, optionBack, code) {
|
|
|
+ /**
|
|
|
+ * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
|
|
|
+ * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
|
|
|
+ * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
|
|
|
+ */
|
|
|
+ const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
|
|
|
+ if (inSave) {
|
|
|
+ this.$message.success("保存成功");
|
|
|
+ //关闭窗口
|
|
|
+ this.$refs[ref].$refs.dialogColumn.columnBox = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //自定义列重置
|
|
|
+ async resetColumnTwo(ref, option, optionBack, code) {
|
|
|
+ this[option] = this[optionBack];
|
|
|
+ const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
|
|
|
+ if (inSave) {
|
|
|
+ this.$message.success("重置成功");
|
|
|
+ this.$refs[ref].$refs.dialogColumn.columnBox = false;
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
::v-deep .el-dialog__body {
|
|
|
- padding: 0px 10px !important;
|
|
|
+ padding: 0px 10px !important;
|
|
|
}
|
|
|
</style>
|