<template> <div class="preinstall"> <!-- 搜索工作栏 --> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px"> <el-form-item :label="$t('入仓时间')" prop="rucangtime"> <el-date-picker v-model="queryParams.rucangtime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="-" start-:placeholder="$t('开始日期')" end-:placeholder="$t('结束日期')" /> </el-form-item> <el-form-item :label="$t('始发地')" prop="startWarehouseId"> <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始发地')" clearable size="small"> <el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('目的地')" prop="destWarehouseIdList"> <el-select v-model="queryParams.destWarehouseIdList" :placeholder="$t('请选择目的地')" multiple clearable> <el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('状态')" prop="orderStatus"> <el-select v-model="queryParams.orderStatus" :placeholder="$t('请选择状态')" clearable size="small"> <el-option v-for="item in stateOps" :label="$l(item, 'label')" :value="item.value" :key="item.value"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('备案')" prop="productRecord"> <el-select v-model="queryParams.productRecord" :placeholder="$t('请选择备案')" clearable size="small"> <el-option v-for="item in filingOps" :label="$l(item, 'label')" :value="item.value" :key="item.value"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('报关方式')" prop="customsType"> <el-select v-model="queryParams.customsType" :placeholder="$t('请选择报关方式')" clearable size="small"> <el-option v-for="item in declarationMethodOps" :label="$l(item, 'label')" :value="item.value" :key="item.value"></el-option> </el-select> </el-form-item> <el-form-item :label="$t('待预装订单')" prop="toBePreOrderNo"> <el-input v-model="queryParams.toBePreOrderNo" :placeholder="$t('请输入待预装订单')" clearable /> </el-form-item> <el-form-item :label="$t('已预装单号')" prop="preOrderNo"> <el-input v-model="queryParams.preOrderNo" :placeholder="$t('请输入已预装单号')" clearable /> </el-form-item> <el-form-item :label="$t('品名')" prop="itemName"> <el-input v-model="queryParams.itemName" :placeholder="$t('请输入品名')" clearable /> </el-form-item> <el-form-item :label="$t('重货比')" prop="weightRatioMax"> <el-input v-model="queryParams.weightRatioMax" :placeholder="$t('请输入 大')" clearable /> </el-form-item> <el-form-item label="" prop="weightRatioMin"> <el-input v-model="queryParams.weightRatioMin" :placeholder="$t('请输入 小')" clearable /> </el-form-item> <el-form-item> <el-button type="primary" icon="el-icon-search" @click="handleQuery('pre')">{{$t('搜索已预装订单')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery('toBePre')">{{$t('搜索待预装订单')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> </el-form-item> </el-form> <!-- 操作工具栏 --> <el-row :gutter="10"> <right-toolbar :showSearch.sync="showSearch" @queryTable="handleQuery('toBePre')"></right-toolbar> </el-row> <!-- 表格 --> <el-card style="margin-top: 15px" class="preinstall-card"> <el-row class="preinstall-title"> <div> <p>{{$t('自编号')}}:</p> <p>{{shipmentObj.selfNo}}</p> </div> <div> <p>{{$t('柜号')}}:</p> <p>{{shipmentObj.cubNo}}</p> </div> <div> <p>{{$t('容量')}}:</p> <p>{{calcCapacity}}</p> </div> <div> <p>{{$t('始发地')}}:</p> <p>{{importCityName(shipmentObj.startWarehouseId)}}</p> </div> <div> <p>{{$t('目的地')}}:</p> <p>{{importCityName(shipmentObj.destWarehouseId)}}</p> </div> </el-row> <el-row class="preinstall-table"> <!-- 已预装订单 --> <el-col :span="12"> <el-row class="preinstall-title"> <div class="table-label">{{$t('已预装订单')}}</div> <div> <p>{{$t('总计')}}:</p> <p>{{getTotlContent(preList.loadStatistics)}}</p> </div> <div class="red-label"> <p>{{$t('可预装方数')}}:</p> <p>{{preList.remainVolume}}m³</p> </div> <div class="red-label"> <p>{{$t('重量')}}:</p> <p>{{preList.remainWeight}}kg</p> </div> <div class="table-button"> <el-button type="success" size="small" @click="addPart" :disabled="isAudit">{{$t('增加')}}</el-button> </div> </el-row> <el-scrollbar style="height:calc(100% - 43px)"> <el-row v-for="(part, index) in preList.sectionGoodList" :key="index" class="pre-part"> <el-row class="preinstall-title"> <div class="pre-part-info"> <p>{{$t('第{index}部分', {index: index+1})}}</p> <p>{{getTotlContent(part.secStatistics)}}</p> </div> <div class="table-button"> <el-button type="danger" size="small" @click="deletePart(part)" :disabled="isAudit">{{$t('删除部分')}}</el-button> <el-button type="danger" size="small" @click="deleteOrder('selected', part)" :disabled="isAudit">{{$t('删除订单')}}</el-button> <el-button type="primary" size="small" @click="foldTable(index, part)">{{part.fold ? $t('展开') : $t('收起')}}</el-button> </div> </el-row> <el-collapse-transition> <div v-show="!part.fold"> <el-table v-loading="preLoading" border :data="part.sectionGoodsList" @select="(selection)=>checkboxSelect(selection, part)" @select-all="(selection)=>checkboxSelect(selection, part)"> <el-table-column type="selection" align="center" width="55" fixed="left" /> <el-table-column :label="$t('序号')" align="center" prop="tidanNum" width="50" /> <el-table-column :label="$t('订单号')" align="center" prop="orderNo" width="120"> <template slot-scope="scope"> <div> {{scope.row.orderNo}} </div> <div style="color:blue;fontWeight:bold;"> {{ scope.row.isExternalWarehouse === 1 ? '(' +$t('外部仓')+')' : ''}} </div> </template> </el-table-column> <el-table-column :label="$t('目的地')" align="center" prop="destWarehouseName" width="120" /> <el-table-column :label="$t('入仓时间')" align="center" prop="rucangTime" width="120"> <template slot-scope="scope"> {{formatDate(scope.row.rucangTime)}} </template> </el-table-column> <el-table-column :label="$t('品名')" align="center" prop="" width="120"> <template slot-scope="{row}"> {{$l(row,'prodTitle')}} </template> </el-table-column> <el-table-column :label="$t('箱数')" align="center" prop="warehouseInInfoVO.cartonsNum" /> <el-table-column :label="$t('体积') + '/' + $t('重量') + '/' + $t('重货比')" align="center" width="140" prop="volumeWeight"> <template slot-scope="scope"> <p v-if="scope.row.warehouseInInfoVO.volume">{{getTotlContent(scope.row.warehouseInInfoVO,['volume'])}}</p> <p v-if="scope.row.warehouseInInfoVO.weight">{{getTotlContent(scope.row.warehouseInInfoVO,['weight'])}}</p> <p>{{getRatioMax(scope.row.warehouseInInfoVO)}}</p> </template> </el-table-column> <el-table-column :label="$t('报关方式')" align="center" prop="customsType" width="120"> <template slot-scope="scope"> <div :class="scope.row.customsType !== 1 ? 'custom_type_red' : ''"> <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="scope.row.customsType" /> </div> </template> </el-table-column> <el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100"> <template slot-scope="{row}"> <template v-if="row.brandName">{{row.brandName}}</template> <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" /> </template> </el-table-column> <el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right"> <template slot-scope="scope"> <el-dropdown trigger="click" @command="(command)=>handleGoods('single',scope.row,command)" :disabled="isAudit"> <el-button type="primary" size="small" icon="el-icon-edit-outline" circle :disabled="isAudit"></el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item :command="bPart" v-for="(bPart, index) in preList.sectionGoodList" :key="bPart.id" v-show="bPart.id !== part.id"> {{$t('第{index}部分', {index: index+1})}} </el-dropdown-item> </el-dropdown-menu> </el-dropdown> <el-button type="danger" size="small" icon="el-icon-minus" circle style="margin-left:10px;" @click="deleteOrder('row',scope.row)" :disabled="isAudit"></el-button> </template> </el-table-column> </el-table> </div> </el-collapse-transition> </el-row> </el-scrollbar> </el-col> <!-- 待预装订单 --> <el-col :span="12"> <el-row class="preinstall-title"> <div class="table-label red-label">{{$t('待预装订单')}}</div> <div class="preinstall-title preinstalled"> <div class="red-label"> <p>{{$t('筛选后待预装数量')}}:</p> <p>{{getTotlContent(unloadStatistics,['num'])}}</p> </div> <div class="red-label"> <p>{{$t('方数')}}:</p> <p>{{getTotlContent(unloadStatistics,['volume'])}}</p> </div> <div class="red-label"> <p>{{$t('重量')}}:</p> <p>{{getTotlContent(unloadStatistics,['weight'])}}</p> </div> </div> </el-row> <el-pagination background layout="prev, pager, next" :current-page="pageParam.pageNo" :page-size="pageParam.pageSize" :total="total" @current-change="pageChange" v-show="total > 0"></el-pagination> <el-scrollbar style="height:calc(100% - 75px)"> <el-row v-for="(item, index) in toBePreList" :key="index" class="tobePre-row"> <el-row class="preinstall-title order-title"> <div> <p>{{item.orderNo}}</p> </div> <div> <p>{{$t('发往')}}:</p> <p>{{item.destWarehouseName}}</p> </div> <div> <p :class="item.customsType !== 1 ? 'custom_type_red' : ''"> <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" /> </p> </div> <div> <p>{{$t('入仓时间')}}:</p> <p>{{formatDate(item.rucangTime)}}</p> </div> <div> <p>{{$t('重货比')}}:</p> <p>{{item.weightRatio}}</p> </div> <div v-if="item.isExternalWarehouse === 1" style="color:blue;fontWeight:bold;"> <p>{{$t('外部仓')}}</p> </div> <div class="table-button"> <el-button v-if="item.relateOrderList" type="primary" size="small" style="margin-right: 20px;" @click="getRelationOrder(item)">{{$t('关联订单')}}</el-button> <el-dropdown trigger="click" @command="(command)=>handleGoods('all',item,command)"> <el-button type="success" size="small" :disabled="isAudit">{{$t('预装全部')}}</el-button> <el-dropdown-menu slot="dropdown" v-if="preList.sectionGoodList"> <el-dropdown-item :command="part" v-for="(part, index) in preList.sectionGoodList" :key="part.id"> {{$t('第{index}部分', {index: index+1})}} </el-dropdown-item> </el-dropdown-menu> </el-dropdown> </div> </el-row> <el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries"> <el-table-column type="index" align="center" :label="$t('序号')" width="50" /> <el-table-column :label="$t('品名')" align="center" prop=""> <template slot-scope="{row}"> {{$l(row,'prodTitle')}} </template> </el-table-column> <el-table-column :label="$t('备案')" align="center" prop="feeType"> <template slot-scope="{row}"> <template>{{row.brandName}}</template>{{ $t('(') }} <dict-tag :type="DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL" :value="row.feeType" />{{ $t(')') }} </template> </el-table-column> <el-table-column :label="$t('箱数')" align="center" prop="warehouseInInfoVO.cartonsNum" /> <el-table-column :label="$t('体积') +'/' + $t('重量')" align="center" prop="volumeWeight"> <template slot-scope="scope"> <p v-if="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.volume">{{getTotlContent(scope.row.warehouseInInfoVO,['volume'])}}</p> <p v-if="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.weight">{{getTotlContent(scope.row.warehouseInInfoVO,['weight'])}}</p> </template> </el-table-column> <el-table-column :label="$t('报关方式')" align="center" prop=""> <div :class="item.customsType !== 1 ? 'custom_type_red' : ''"> <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" /> </div> </el-table-column> <el-table-column :label="$t('包装类型')" align="center" prop=""> <template slot-scope="scope"> <dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="scope.row.warehouseInInfoVO && scope.row.warehouseInInfoVO.unit" /> </template> </el-table-column> <el-table-column :label="$t('材质')" align="center" prop="material">{{ $t('、') }}<template slot-scope="scope"> <dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="scope.row.material" /> </template> </el-table-column> <!-- <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-dropdown trigger="click" @command="(command)=>handleGoods('single',scope.row,command)"> <el-button type="primary" size="small">{{$t('预装')}}</el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item :command="part" v-for="(part, index) in preList" :key="part.id">第{{index+1}}部分</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </template> </el-table-column> --> </el-table> </el-row> </el-scrollbar> </el-col> </el-row> </el-card> <!-- 操作员 --> <el-row style="margin-top: 15px" v-show="!isAudit"> <el-row> <el-form ref="operatorForm" :model="operatorData" size="small" :inline="true" label-width="120px" :rules="rules"> <el-form-item :label="$t('目的地操作员')" prop="noticeUser"> <userSelect v-model="operatorData.noticeUser" :placeholder="$t('请选择目的地操作员')" :allUsers="this.$attrs.allUsers" size="small" /> </el-form-item> </el-form> </el-row> </el-row> <!-- 审核流程 --> <el-row class="process-area"> <div class="process"> <div>{{$t('审批流程')}}</div> <work-flow xmlkey="shipment_preassemble" v-model="selectedUsers"></work-flow> </div> <div v-show="isAudit"> <el-button type="primary" @click="jumpReviewDetail">{{$t('审核中')}}</el-button> <el-button plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button> <el-button plain type="primary" @click="closeDialog">{{$t('返回')}}</el-button> </div> <div v-show="!isAudit"> <el-button type="primary" @click="onSubmit">{{$t('提交申请')}}</el-button> </div> </el-row> <!-- 关联订单弹窗 --> <el-dialog :title="relationOrderListDialog.title" :visible.sync="relationOrderListDialog.visible" width="30%" append-to-body> <el-card> <div v-html="relationOrderListDialog.data"></div> </el-card> <el-row style="margin-top: 10px;text-align: center;"> <el-button type="primary" @click="relationOrderListDialog.visible = false">{{$t('关闭窗口')}}</el-button> </el-row> </el-dialog> </div> </template> <script> import { DICT_TYPE } from "@/utils/dict"; import { secGoodsList, preloadPage, createSection, deleteSection, createGoods, deleteGoods, changeSection, approvalCreate, approvalCancel, loadRelationOrder, getAllRelateOrderList } from "@/api/ecw/boxSea"; import userSelect from "./common/userSelect.vue"; import { formatDate, getTotlContent, serviceMsg, getCapacity, toReviewDetail, } from "../utils"; import dayjs from "dayjs"; import WorkFlow from "@/components/WorkFlow"; import Decimal from "decimal.js"; /** * 预装 */ export default { name: "preinstall", inheritAttrs: false, components: { userSelect, WorkFlow }, data() { return { // 状态 stateOps: [ { value: "1", label: this.$t("拆单") }, { value: "2", label: this.$t("关联单") }, ], // 备案 filingOps: this.getDictDatas(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL), // 报关方式 declarationMethodOps: this.getDictDatas(DICT_TYPE.ECW_CUSTOMS_TYPE), // 查询标识 type: "", // 已预装 遮罩层 preLoading: false, preList: { sectionGoodList: [], remainWeight: 0, remainVolume: 0, }, // 选中行 selectedRows: {}, // 待预装 toBePreLoading: false, toBePreList: [], total: 0, unloadStatistics: {}, // 显示搜索条件 showSearch: true, // 查询参数 queryParams: {}, pageParam: { pageNo: 1, pageSize: 10 }, // 目的地操作员 operatorData: {}, // 校验 rules: { noticeUser: [ { required: true, message: this.$t("目的地操作员必填"), trigger: "change", }, ], }, // 出货信息 shipmentObj: this.$attrs.shipmentObj, // 抄送人数组 selectedUsers: [], // 智慧预装 smartInstall: 1, //关联订单 relationOrderListDialog: { title: '', visible: false, data: [] }, }; }, computed: { /** 始发地 */ exportWarehouseList() { return this.$attrs.warehouseList.filter( (item) => item.tradeType == "2" || item.type == "3" ); }, /** 目的地 */ importWarehouseList() { return this.$attrs.warehouseList.filter( (item) => item.tradeType == "1" || item.type == "3" ); }, /* 是否审核中 */ isAudit() { const { currNode, shipmentObj } = this.$attrs; return shipmentObj[currNode.keyName] === 23; }, /* 容量 */ calcCapacity() { const { cabinetRespVO } = this.$attrs.shipmentObj; return getCapacity(cabinetRespVO); }, }, created() { // 查询待预装 this.handleQuery("toBePre"); this.handleQuery("pre"); this.smartInstall = 0; }, methods: { formatDate, getTotlContent, /* 获取城市 */ importCityName(id) { var arr = this.$attrs.warehouseList.filter((item) => item.id == id); return arr.length > 0 ? this.$l(arr[0], "title") : this.$t("无"); }, /* 选中行 */ checkboxSelect(selection, part) { this.selectedRows[part.id] = selection; }, /* 查询已预装 */ getSecGoods() { this.preLoading = true; // 处理查询参数 let params = this.getParams(); // 已预装单号 params.orderNo = params.preOrderNo; params.shipmentId = this.shipmentObj.id; params.smartInstall = this.smartInstall; secGoodsList(params).then((res) => { if (res.data) { res.data.sectionGoodList.map((data) => { if (data.sectionGoodsList) { data.sectionGoodsList.map((data1) => { data1.warehouseInInfoVO = data1.warehouseInInfo ? JSON.parse(data1.warehouseInInfo) : {}; return data1; }); } return data; }); } this.preList = res.data; this.preLoading = false; }); }, /* 查询待预装 */ getPreLoad() { this.toBePreLoading = true; // 处理查询参数 let params = this.getParams(); // 订单号 params.orderNo = params.toBePreOrderNo; params.transportType = this.shipmentObj.transportType; preloadPage({ ...params, ...this.pageParam }).then((res) => { const { data } = res; this.toBePreList = data.dataList?.list ?? []; this.total = data.dataList?.total ?? 0; this.unloadStatistics = data.unloadStatistics ?? {}; this.toBePreLoading = false; if(this.toBePreList.length == 0&&this.total!=0){ --this.pageParam.pageNo this.getPreLoad() } }); }, /**查看关联订单 */ getRelationOrder(item) { getAllRelateOrderList({orderId:item.orderId,orderNo:item.orderNo}).then(res=>{ this.relationOrderListDialog.title = item.orderNo+'关联订单' this.relationOrderListDialog.visible = true this.relationOrderListDialog.data = res.msg.replace(/\n/g,'<br>') }) }, /** 搜索按钮操作 */ handleQuery(type) { this.pageParam.pageNo = 1; if (type === "pre") { this.getSecGoods(); } else { this.getPreLoad(); } }, /** 重置按钮操作 */ resetQuery() { this.queryParams = {}; this.$refs["queryForm"].resetFields(); }, /** 提交 */ onSubmit() { this.$refs["operatorForm"].validate((valid, errors) => { if (!valid) { return this.$showFormValidateErrors(errors); } approvalCreate({ ...this.operatorData, applyReason: this.$t("预装审核"), approvalStatus: 0, approvalType: 1, // 预装 copyUserId: this.selectedUsers, shipmentId: this.$attrs.shipmentObj.id, }).then((res) => { serviceMsg(res, this).then(() => { this.$emit("closeDialog", "submit"); }); }); }); }, /* 统计列 */ getSummaries(param) { const { columns, data } = param; const sums = []; columns.forEach((column, index) => { if (column.property === "feeType") { sums[index] = this.$t("合计"); return; } if (column.property === "warehouseInInfoVO.cartonsNum") { var num = 0 let values = data?.map((item) => Number(item.warehouseInInfoVO.cartonsNum)) ?? []; if (!values.every((value) => isNaN(value))) { num = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); } sums[index] = num } if (column.property === "volumeWeight") { let volume = this.calcSum("volume", data); let weight = this.calcSum("weight", data); volume = volume === 0 ? volume : new Decimal(volume).toFixed(2); weight = weight === 0 ? weight : new Decimal(weight).toFixed(2); sums[index] = getTotlContent({ volume, weight }, [ "volume", "weight", ]); sums[index] = sums[index].replace(" ", "\n"); } }); return sums; }, /* 计算总和 */ calcSum(key, data) { const values = data?.map((item) => Number(item[key])) ?? []; if (!values.every((value) => isNaN(value))) { return values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); } return 0; }, /* 待预装订单分页 */ pageChange(page) { this.pageParam.pageNo = page; this.getPreLoad(); }, /* 折叠 */ foldTable(index, part) { part.fold = !part.fold; this.$set(this.preList.sectionGoodList, index, part); }, /* 增加部分 */ addPart() { createSection({ shipmentId: this.shipmentObj.id, isCover: 0 }).then( (res) => { serviceMsg(res, this).then(() => { this.getSecGoods(); }); } ); }, /* 删除部分 */ deletePart(part) { this.$confirm( this.$t("确认删除该部分及其已预装订单?"), this.$t("提示"), { type: "warning", } ) .then((_) => { let params = { id: part.id, deleteType: 2 }; deleteSection(params).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); }) .catch((_) => {}); }, /** 预装 */ handleGoods(type, item, part) { if (type === "all") { let params = { secId: part.id, shipmentId: this.shipmentObj.id, orderId: item.orderId, orderItemIdList: item.boxOrderItemList.map( (data) => data.orderItemId ), isCover: 0 }; createGoods(params) .then((res) => { const { data } = res; if (data.relationMsg) { const msg = data.relationMsg.replaceAll(",", ","); this.$confirm(msg, this.$t("提示"), { dangerouslyUseHTMLString: true, type: "warning", }) .then((_) => { loadRelationOrder(data).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); }) .catch((_) => { this.queryAllData(); }); } else { serviceMsg(res, this).then(() => { this.queryAllData(); }); } }) .catch((res) => { if (res.code === 555) { const msg = res.msg && res.msg.replaceAll(",", ","); this.$confirm(msg, this.$t("提示"), { dangerouslyUseHTMLString: true, type: "warning", }) .then((_) => { createGoods({ ...params, relationStatus: 1 }).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); }) .catch((_) => { this.queryAllData(); }); } if (res.code === 566) { this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), { dangerouslyUseHTMLString: true, type: "warning", }) .then((_) => { createGoods({ ...params, relationStatus: 2 }).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); }) .catch((_) => { this.queryAllData(); }); } }); } else { let params = { secId: part.id, id: item.id, }; changeSection(params).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); } }, /* 删除订单 */ deleteOrder(type, data) { let ids = []; if (type === "selected") { // 根据parid 构建的对象 const rows = this.selectedRows[data.id] ?? []; if (!rows.length) { this.$message.error(this.$t("请选择订单")); return; } ids = rows.map((item) => item.id); } if (type === "row") { ids.push(data.id); } let param = { ids: ids.join(",") } deleteGoods(param).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }).catch((res) => { if (res.code === 666) { this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), { dangerouslyUseHTMLString: true, distinguishCancelAndClose: true, confirmButtonText: '确定移出', cancelButtonText: '仅移出当前订单' }) .then((_) => { deleteGoods({ ...param, deleteType: 2 }).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); }) .catch(action => { if(action =='cancel'){ deleteGoods({ ...param, deleteType: 1 }).then((res) => { serviceMsg(res, this).then(() => { this.queryAllData(); }); }); } }); } }); }, /* 查询所有数据 */ queryAllData() { this.getSecGoods(); this.getPreLoad(); }, /* 获取参数 */ getParams() { let rucangtime = this.queryParams.rucangtime?this.queryParams.rucangtime:[] return { ...this.queryParams, ...this.$attrs.params, rucangTimeStart: rucangtime[0] ? dayjs(rucangtime[0]).format("YYYY-MM-DD 00:00:00") : rucangtime[0], rucangTimeEnd: rucangtime[1] ? dayjs(rucangtime[1]).format("YYYY-MM-DD 23:59:59") : rucangtime[1], }; }, /* 关闭弹框 */ closeDialog() { this.$emit("closeDialog"); }, /* 取消审核 */ canclAudit() { const { currNode, shipmentObj } = this.$attrs; const { voName } = currNode; approvalCancel({ applyReason: this.$t("取消审核"), id: shipmentObj[voName].id, shipmentId: shipmentObj.id, }).then((res) => { serviceMsg(res, this).then(() => { this.$emit("closeDialog", "submit"); }); }); }, jumpReviewDetail() { const { currNode, shipmentObj } = this.$attrs; toReviewDetail.apply(this, [shipmentObj[currNode.voName].bpmProcessId]); this.$emit("closeDialog"); }, getRatioMax(row) { let volume = row.volume ?? 0; let weight = row.weight ?? 0; return Decimal.div(weight, volume).toFixed(2); }, }, }; </script> <style lang="scss"> .preinstall { display: flex; flex-direction: column; p { margin: 0; } .preinstall-title { display: flex; align-items: center; margin-bottom: 10px; padding: 0 10px; &.preinstalled { flex: 1; display: flex; justify-content: flex-end; > div { display: flex; } } &.order-title { margin-bottom: 0px; background-color: #e6ebf5; height: 45px; } > div { display: flex; margin-right: 10px; } .table-label { font-size: 16px; font-weight: bolder; } .red-label { color: red; } .table-button { flex: 1; margin: 0; display: flex; justify-content: flex-end; } } .preinstall-table { display: flex; height: calc(100% - 30px); > div { border: 1px solid #e6ebf5; padding: 10px 0px; } > div:first-child { margin-right: 10px; } } .pre-part { margin-bottom: 10px; margin-right: 10px; .pre-part-info { font-weight: bolder; > p:first-child { color: #13ce66; margin-right: 10px; } > p:last-child { > span { margin-right: 5px; } } } } .preinstall-card { min-height: 800px; .el-card__body { height: 100%; .tobePre-row { margin-top: 10px; .el-table { .cell { white-space: pre-line; } } } } } .process-area { margin-top: 15px; padding-bottom: 30px; .process { display: flex; flex-direction: column; > :first-child { color: #606266; font-weight: bolder; font-size: 16px; } } } } </style>