diff --git a/src/api/ecw/orderCargoControl.js b/src/api/ecw/orderCargoControl.js index 517c2cdab49c07eac37508d9bf02fb23467aa34e..68c0c79f6dbbe84ce3b1d849c57ee43966a1b67a 100644 --- a/src/api/ecw/orderCargoControl.js +++ b/src/api/ecw/orderCargoControl.js @@ -9,6 +9,14 @@ export function getCargoControlOrderPage(params){ }) } +export function getWarningCargoControlOrderPage(params){ + return request({ + url:'ecw/order-cargo-control/warning/cargo/control/order', + method:'get', + params + }) +} + // å‘é€æ‰‹æœºéªŒè¯ç export function sendSmsCode(data){ return request({ diff --git a/src/i18n/languages/en_US.json b/src/i18n/languages/en_US.json index effa25666ab91c10b0d31f49fb137b1b231603b5..b0a3923671ccece706c720cf259825934c3fa144 100644 --- a/src/i18n/languages/en_US.json +++ b/src/i18n/languages/en_US.json @@ -4688,6 +4688,7 @@ "报价有效期": "Quotation validity period", "å‘货评估": "Delivery evaluation", "财务资料": "Finance Information", - "特殊设置": "Special setting" + "特殊设置": "Special setting", + "å·²å¸æŸœ/已到仓时间": "Unloaded/arrived Time" } diff --git a/src/i18n/languages/zh_CN.json b/src/i18n/languages/zh_CN.json index 47958aa8184eca15d7a3ee9bd2ce9bdcf869d494..eb1176e39eeac8fce99118885c90d05e1416ea1f 100644 --- a/src/i18n/languages/zh_CN.json +++ b/src/i18n/languages/zh_CN.json @@ -319,5 +319,6 @@ "业绩归属客户方": "业绩归属客户方", "å‘货评估": "å‘货评估", "财务资料": "财务资料", - "特殊设置": "特殊设置" + "特殊设置": "特殊设置", + "å·²å¸æŸœ/已到仓时间": "å·²å¸æŸœ/已到仓时间" } diff --git a/src/views/ecw/customer/query.vue b/src/views/ecw/customer/query.vue index fdb11eb617ed50c7ca69de486482a7f1a007c954..ccc49db7435b75619bc80547b2bf33059a3e8bb1 100644 --- a/src/views/ecw/customer/query.vue +++ b/src/views/ecw/customer/query.vue @@ -247,7 +247,7 @@ </el-select> </el-form-item> <el-form-item> - <el-button type="primary" @click="getorderList">{{$t('æœç´¢')}}</el-button> + <el-button type="primary" @click="getInfoListOfferPage">{{$t('æœç´¢')}}</el-button> <el-button type="primary" @click="()=>{ queryParams = { rows:10,page:1}; getInfoListOfferPage();rucangtime = []; }">{{$t('é‡ç½®')}}</el-button> @@ -1070,9 +1070,8 @@ export default { infoListReceiptTotal:0, country: '', showMore: true, - countryList: [], + countryList: [], //目的国 AddressCity: [], //目的城市 - AddressProvince: [], //çœä»½ AddressTown: [], //目的仓 destCountryId: null, // objectiveId: null, diff --git a/src/views/ecw/order/cargoControl.vue b/src/views/ecw/order/cargoControl.vue index fb77e9f350b41ca29324fb5624b26900d7a3d926..e89cae94dc7f0b0729239a8de74ba4650ba16979 100644 --- a/src/views/ecw/order/cargoControl.vue +++ b/src/views/ecw/order/cargoControl.vue @@ -102,6 +102,7 @@ {{row.statusMsg}} </template> </el-table-column> + <el-table-column :label="$t('å·²å¸æŸœ/已到仓时间')" align="center" prop="unloadTime" /> <el-table-column :label="$t('æå•å·')" align="center" prop="status"> <template slot-scope="scope"> {{scope.row.tidanNo}} diff --git a/src/views/ecw/order/warningCargoControl.vue b/src/views/ecw/order/warningCargoControl.vue new file mode 100644 index 0000000000000000000000000000000000000000..67a29b1d21abe0bfd99cf9f955a747dc99c28d03 --- /dev/null +++ b/src/views/ecw/order/warningCargoControl.vue @@ -0,0 +1,323 @@ +<template> + <div class="app-container"> + + <!-- æœç´¢å·¥ä½œæ --> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> + <el-form-item :label="$t('日期ç›é€‰')"> + <dict-selector defaultable :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" v-model="dateFilterType" class="w-100 mr-10" /> + <el-date-picker v-model="dateFilter" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结æŸæ—¥æœŸ')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"></el-date-picker> + </el-form-item> + <el-form-item :label="$t('始å‘仓')" prop="startWarehouseId"> + <el-select v-model="queryParams.startWarehouseId" :placeholder="$t('请选择始å‘地')" clearable @change="handleQuery"> + <el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> + </el-select> + </el-form-item> + <el-form-item :label="$t('目的仓')" prop="destWarehouseId"> + <el-select v-model="queryParams.destWarehouseId" :placeholder="$t('请选择目的地')" clearable @change="handleQuery"> + <el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> + </el-select> + </el-form-item> + <el-form-item :label="$t('è¿è¾“æ–¹å¼')" prop="transportId"> + <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model.number="queryParams.transportId" clearable @change="handleQuery"/> + </el-form-item> + <el-form-item :label="$t('订å•ç¼–å·')" prop="orderNo"> + <el-input v-model="queryParams.orderNo" :placeholder="$t('订å•ç¼–å·')" clearable @keyup.enter.native="handleQuery" /> + </el-form-item> + <el-form-item :label="$t('å“å')" prop="prodId"> + <product-selector v-model="queryParams.prodId" @keyup.enter.native="handleQuery" clearable @change="handleQuery"/> + </el-form-item> + <el-form-item :label="$t('控货状æ€')" prop="isCargoControl"> + <dict-selector v-model="queryParams.cargoControlStatus" :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery"/> + </el-form-item> + <el-form-item :label="$t('订å•çŠ¶æ€')" prop="status"> + <dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status" + @keyup.enter.native="handleQuery" clearable @change="handleQuery" /> + </el-form-item> + <el-form-item :label="$t('æå•å·')" prop="tidanNo"> + <el-input v-model="queryParams.tidanNo" :placeholder="$t('æå•å·')" clearable @keyup.enter.native="handleQuery" /> + </el-form-item> + <el-form-item :label="$t('å‘货人')" prop="consignorKey"> + <el-input v-model="queryParams.consignorKey" :placeholder="$t('å‘货人')" clearable @keyup.enter.native="handleQuery" /> + </el-form-item> + + <el-form-item :label="$t('收货人')" prop="consigneeKey"> + <el-input v-model="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" /> + </el-form-item> + + <el-form-item :label="$t('报关方å¼')" prop="customsType"> + <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="queryParams.customsType" clearable @change="handleQuery" /> + </el-form-item> + + <el-form-item :label="$t('唛头')" prop="marks"> + <el-input v-model="queryParams.marks" :placeholder="$t('唛头')" clearable @keyup.enter.native="handleQuery" /> + </el-form-item> + <el-form-item :label="$t('外部仓')" prop="number"> + <el-select v-model="queryParams.isExternalWarehouse" :placeholder="$t('请选择')" clearable @change="handleQuery"> + <el-option :label="$t('外部仓')" :value="1"></el-option> + <el-option :label="$t('自有仓')" :value="0"></el-option> + </el-select> + </el-form-item> + <el-form-item :label="$t('订å•ç±»åž‹')" prop="number"> + <el-select v-model="queryParams.type" :placeholder="$t('请选择')" clearable @change="handleQuery" > + <el-option :label="$t('普通订å•')" :value="0"></el-option> + <el-option :label="$t('集è¿æœåŠ¡')" :value="1"></el-option> + <el-option :label="$t('海外仓')" :value="2"></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('æœç´¢')}}</el-button> + </el-form-item> + </el-form> + + <!-- æ“作工具æ --> + <el-row :gutter="10" class="mb8"> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <!-- 列表 --> + <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + + <el-table-column :label="$t('订å•ç¼–å·')" width="120px" align="center" prop="orderNo" > + <template slot-scope="scope"> + <router-link :to="`detail?orderId=` + scope.row.orderId">{{ scope.row.orderNo }}</router-link> + </template> + </el-table-column> + <el-table-column :label="$t('唛头')" align="center" prop="marks" /> + <el-table-column :label="$t('箱数')" align="center" prop="sumNum" > + <template v-slot="{row}"> + {{row.sumNum > 0 ? row.sumNum : row.totalNum}} + </template> + </el-table-column> + <el-table-column :label="$t('已放箱数')" align="center" prop="sumWeight"> + <template slot-scope="{row}">{{row.releaseNum}}</template> + </el-table-column> + <el-table-column :label="$t('订å•çŠ¶æ€')" align="left" prop="status"> + <template slot-scope="{row}"> + {{row.statusMsg}} + </template> + </el-table-column> + <el-table-column :label="$t('å·²å¸æŸœ/已到仓时间')" align="center" prop="unloadTime" /> + <el-table-column :label="$t('æå•å·')" align="center" prop="status"> + <template slot-scope="scope"> + {{scope.row.tidanNo}} + </template> + </el-table-column> + <el-table-column :label="$t('放货人')" align="center" prop="sumWeight"> + <template slot-scope="{row}">{{row.cargoControlName}}</template> + </el-table-column> + <el-table-column :label="$t('控货状æ€')" align="center" prop="transportId"> + <template slot-scope="{row}"> + <template v-if="row.cargoControlStatus == 1 && row.isToReview">{{$t('放货ä¸')}}</template> + <dict-tag v-else :type="DICT_TYPE.CONTROL_GOODS_STATUS" :value="row.cargoControlStatus" /> + </template> + </el-table-column> + + <el-table-column :label="$t('æ“作')" align="center" class-name="small-padding fixed-width" width="150px"> + <template slot-scope="scope"> + <el-button type="text" size="mini" @click="toDetail(scope.row)" v-hasPermi="['ecw:cargo_control:show']">{{$t('查看')}}</el-button> + </template> + </el-table-column> + </el-table> + <!-- 分页组件 --> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows" + @pagination="getList" /> + + <transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" /> + <release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" @success="onReleaseSuccess" /> + <transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" @success="onTransferCargoSuccess" :cargoControlPickId="pickInfo ? pickInfo.id : 0" /> + <fallback v-if="showFallbackOrder !== null" :order="showFallbackOrder" @close="showFallbackOrder=null" @success="onFallbackSuccess" :index="null" /> + <!--控货日志--> + <cargo-log-list v-if="showLogOrderId" :order-id="showLogOrderId" @close="showLogOrderId=null" /> + </div> +</template> + +<script> +import Selector from '@/components/Selector' +import ProductSelector from '@/components/ProductSelector' +import { getProductAttrList } from '@/api/ecw/productAttr' +import CustomerSelector from '@/components/CustomerSelector' +/* import { getTradeCityList } from '@/api/ecw/region' */ +import Transfer from '@/views/ecw/order/components/Transfer' +import Release from './components/Release' +import CargoControlEdit from './components/CargoControlEdit' +import { getWarningCargoControlOrderPage, batchReview, orderReview, getPickRleaseInfo, exportCargoControl } from "@/api/ecw/orderCargoControl" +import TransferCargo from '@/views/ecw/order/components/TransferCargo' +import Fallback from './components/Fallback' +import {getWarehouseList} from '@/api/ecw/warehouse' +import CargoLogList from "@/views/ecw/order/components/CargoLogList.vue"; +export default { + name: "EcwOrderCargocontrol", + components: { + CargoLogList, + CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit, TransferCargo, Fallback + }, + data() { + return { + // 选ä¸æ•°ç»„ + ids: [], + // éžå•ä¸ªç¦ç”¨ + single: true, + // éžå¤šä¸ªç¦ç”¨ + multiple: true, + // é®ç½©å±‚ + loading: true, + // 导出é®ç½©å±‚ + exportLoading: false, + // 显示æœç´¢æ¡ä»¶ + showSearch: true, + // 总æ¡æ•° + total: 0, + // 订å•åˆ—表 + list: [], + // å¼¹å‡ºå±‚æ ‡é¢˜ + title: "", + // 查询å‚æ•° + queryParams: { + page: 1, + rows: 10 + }, + tradeCityList: [], + warehouseList: [], + productAttrList: [], // 商å“属性 + molecule: '', //é‡è´§æ¯”分å + denominator: '', //é‡è´§æ¯”åˆ†æ¯ + dateFilterType: '', //日期ç›é€‰ç±»åˆ« + dateFilter: [], //ç›é€‰æ—¥æœŸ + showTransferOrder: null, // 控制æƒè½¬ç§»æ“ä½œè®¢å• + showReleaseOrderId: null, // 放货ID + showTransferCargoOrderId: null, // 调货ID + showFallbackOrder: null, // è°ƒè´§è®¢å• + pickInfo: null, // 当å‰æ“作的æè´§ä¿¡æ¯ + showLogOrderId: null, // 显示控货日志的订å•ID + }; + }, + computed: { + expoerCityList() { + return this.tradeCityList.filter(item => item.type == 2) + }, + importCityList() { + return this.tradeCityList.filter(item => item.type == 1) + }, + exportWarehouseList(){ + return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3) + }, + importWarehouseList(){ + return this.warehouseList.filter(item => item.tradeType == 1 || item.tradeType == 3) + }, + combinedQueryParams(){ + let timeParams = {} + if(this.dateFilterType && this.dateFilter){ + timeParams['begin' + this.dateFilterType] = this.dateFilter[0] + timeParams['end' + this.dateFilterType] = this.dateFilter[1] + } + return Object.assign({}, this.queryParams, timeParams) + } + }, + activated(){ + // è¦æ±‚ä¿ç•™é¡µç https://zentao.test.jdshangmen.com/bug-view-3079.html + this.getList() + }, + created() { + this.getList(); + getProductAttrList().then(res => this.productAttrList = res.data) + // getTradeCityList().then(res => this.tradeCityList = res.data) + getWarehouseList().then(res => this.warehouseList = res.data) + }, + methods: { + /** 查询列表 */ + getList() { + this.loading = true; + // 执行查询 + getWarningCargoControlOrderPage(this.combinedQueryParams).then(response => { + this.list = [] + // 直接更细数æ®ï¼Œå¯èƒ½å› 为elTable的部分渲染产生bug,比如æƒé™æŽ§åˆ¶å¼‚常 + this.$nextTick( () => { + this.list = response.data.list; + this.total = response.data.total; + }) + + this.loading = false; + }); + }, + + /** æœç´¢æŒ‰é’®æ“作 */ + handleQuery() { + this.queryParams.page = 1; + this.$nextTick(this.getList) + }, + /** é‡ç½®æŒ‰é’®æ“作 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + + /** 导出按钮æ“作 */ + handleExport() { + // 处ç†æŸ¥è¯¢å‚æ•° + // 执行导出 + this.$modal.confirm('是å¦ç¡®è®¤å¯¼å‡ºæ‰€æœ‰è®¢å•æ•°æ®é¡¹?').then(() => { + this.exportLoading = true; + return exportCargoControl(this.combinedQueryParams); + }).then(response => { + this.$message.success(this.$t('å·²åŠ å…¥å¯¼å‡ºé˜Ÿåˆ—ï¼Œè¯·ç¨åŽåœ¨ä¸‹è½½æ—¥å¿—ä¸ä¸‹è½½')) + this.exportLoading = false; + }).catch(() => { }); + }, + // è¡¨æ ¼å¤šé€‰ + handleSelectionChange(selection) { + this.ids = selection.map(item => item.orderId) + this.single = selection.length !== 1 + this.multiple = !selection.length + }, + toDetail(row){ + this.$router.push('cargo_control/detail?id=' + row.orderId) + }, + // å¤æ ¸ + review(row){ + // 未放货完æˆåˆ™æ‰“开详情,已完æˆæ”¾è´§åˆ™å¼¹çª— + if(row.releaseNum < row.sumNum){ + return this.toDetail(row) + } + this.$confirm('å·²æ ¸å®žæ”¾è´§ä¿¡æ¯ï¼Œç¡®è®¤æ”¾è´§ï¼Ÿ') + .then(res => { + return orderReview(row.orderId) + }) + .then(res => { + this.$message.success('æ“作æˆåŠŸ') + this.getList() + }) + }, + // 批é‡å¤æ ¸ + batchReview(){ + this.$confirm(this.$t('确定å¤æ ¸é€‰ä¸çš„订å•ä¹ˆï¼Ÿ')).then(() => { + return batchReview("orderIds=" + this.ids.join(',')) + }).then(() => { + this.$message.success(this.$t('æ“作æˆåŠŸ')) + this.getList() + }) + }, + cargoTransfer(row){ + getPickRleaseInfo(row.orderId).then(res => { + if(res.data.cargoControlPickBackVOList && res.data.cargoControlPickBackVOList.length > 1){ + this.toDetail(row) + } + this.pickInfo = res.data.cargoControlPickBackVOList[0] + this.showTransferCargoOrderId=row.orderId + }) + }, + onReleaseSuccess(){ + this.showReleaseOrderId = null + this.getList() + }, + onFallbackSuccess(){ + this.showFallbackOrder = null + this.getList() + }, + onTransferCargoSuccess(){ + this.showTransferCargoOrderId = null + this.getList() + } + } +}; +</script>