Commit 31d93922 authored by lanbaoming's avatar lanbaoming

2024-05-23-4提交

parent 97a11006
...@@ -59,6 +59,15 @@ export function getCustomerContactsSelect(query) { ...@@ -59,6 +59,15 @@ export function getCustomerContactsSelect(query) {
params: query params: query
}) })
} }
export function getCustomerContactsSelect2(query) {
return request({
url: '/ecw/customer-contacts/select2',
method: 'get',
params: query
})
}
// 导出客户联系人 Excel // 导出客户联系人 Excel
export function exportCustomerContactsExcel(query) { export function exportCustomerContactsExcel(query) {
return request({ return request({
......
...@@ -62,7 +62,10 @@ ...@@ -62,7 +62,10 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import { getCustomerContactsSelect } from "@/api/ecw/customerContacts"; import {
getCustomerContactsSelect,
getCustomerContactsSelect2,
} from "@/api/ecw/customerContacts";
export default { export default {
props: { props: {
type: Number, type: Number,
...@@ -89,11 +92,18 @@ export default { ...@@ -89,11 +92,18 @@ export default {
this.loadList(); this.loadList();
}, },
loadList() { loadList() {
//加载联系人数据 //加载联系人数据,怎样使用属性
if (this.type == "1") {
getCustomerContactsSelect2(this.form).then((res) => {
this.list = res.data.list;
this.total = res.data.total;
});
} else {
getCustomerContactsSelect(this.form).then((res) => { getCustomerContactsSelect(this.form).then((res) => {
this.list = res.data.list; this.list = res.data.list;
this.total = res.data.total; this.total = res.data.total;
}); });
}
}, },
closeDialog() { closeDialog() {
this.show = false; this.show = false;
......
...@@ -228,13 +228,14 @@ ...@@ -228,13 +228,14 @@
:label="$t('报关费用')" :label="$t('报关费用')"
align="center" align="center"
></el-table-column> ></el-table-column>
<!--
<el-table-column <el-table-column
prop="" prop=""
:label="$t('异常操作')" :label="$t('异常操作')"
align="center" align="center"
width="120px" width="120px"
> >
<!--lanbm 2024-05-23 添加异常登记功能--> lanbm 2024-05-23 添加异常登记功能
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="primary" type="primary"
...@@ -243,7 +244,8 @@ ...@@ -243,7 +244,8 @@
>{{ $t("异常登记") }}</el-button >{{ $t("异常登记") }}</el-button
> >
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column <el-table-column
prop="" prop=""
:label="$t('操作')" :label="$t('操作')"
...@@ -492,7 +494,6 @@ ...@@ -492,7 +494,6 @@
</el-tabs> </el-tabs>
</el-col> </el-col>
</el-row> </el-row>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog <el-dialog
:title="dialogConfig.title" :title="dialogConfig.title"
...@@ -538,6 +539,23 @@ ...@@ -538,6 +539,23 @@
/> />
</template> </template>
</el-dialog> </el-dialog>
<!-- 对话框 lanbm 2024-05-23 add异常登记对话框 -->
<el-dialog
custom-class="shipping-dialog"
:title="$t('异常')"
:visible.sync="dialogVisible"
width="600px"
:modal-append-to-body="false"
append-to-body
>
<unloadingError
v-if="dialogVisible"
@closeDialog="closeDialog_2"
v-bind="$attrs"
:currRow="currRow"
/>
</el-dialog>
</div> </div>
</template> </template>
...@@ -570,6 +588,7 @@ import updateError from "./updateError.vue"; ...@@ -570,6 +588,7 @@ import updateError from "./updateError.vue";
import { listUser } from "@/api/system/user"; import { listUser } from "@/api/system/user";
//lanbm 2024-05-16 add //lanbm 2024-05-16 add
import { getCurrencyList } from "@/api/ecw/currency"; import { getCurrencyList } from "@/api/ecw/currency";
import unloadingError from "@/views/ecw/box/shippingSea/nodePage/unloading/unloadingError.vue";
export default { export default {
name: "EcwBoxQuery", name: "EcwBoxQuery",
...@@ -581,6 +600,8 @@ export default { ...@@ -581,6 +600,8 @@ export default {
regError, regError,
editForm, editForm,
updateError, updateError,
//lanbm 2024-05-23 异常登记对话框
unloadingError,
}, },
created() { created() {
this.transportTypes = this.getDictDatas( this.transportTypes = this.getDictDatas(
...@@ -693,6 +714,9 @@ export default { ...@@ -693,6 +714,9 @@ export default {
}, },
//币种信息 lanbm 2024-05-16 add //币种信息 lanbm 2024-05-16 add
currencyList: [], currencyList: [],
// 当前行
currRow: {},
dialogVisible: false,
}; };
}, },
methods: { methods: {
...@@ -712,11 +736,14 @@ export default { ...@@ -712,11 +736,14 @@ export default {
handleSelectionChange(selected) { handleSelectionChange(selected) {
this.selectedRows = selected; this.selectedRows = selected;
}, },
closeDialog_2() {
//关闭异常对话框
this.dialogVisible = false;
},
updateStatus_2(type, row) { updateStatus_2(type, row) {
//lanbm 2024-05-23 添加的异常登记功能 //lanbm 2024-05-23 添加的异常登记功能
this.$set(this.dialogConfig, "visible", true); this.currRow = row;
this.$set(this.dialogConfig, "title", this.$t("异常登记")); this.dialogVisible = true;
this.$set(this.dialogConfig, "type", "error");
}, },
/* 更新状态 */ /* 更新状态 */
updateStatus(type, row) { updateStatus(type, row) {
......
...@@ -274,6 +274,7 @@ ...@@ -274,6 +274,7 @@
:label="$t('报关费用')" :label="$t('报关费用')"
align="center" align="center"
></el-table-column> ></el-table-column>
<!--
<el-table-column <el-table-column
prop="" prop=""
:label="$t('异常操作')" :label="$t('异常操作')"
...@@ -289,7 +290,8 @@ ...@@ -289,7 +290,8 @@
>{{ $t("异常登记") }}</el-button >{{ $t("异常登记") }}</el-button
> >
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column <el-table-column
prop="" prop=""
:label="$t('操作')" :label="$t('操作')"
......
...@@ -77,6 +77,7 @@ ...@@ -77,6 +77,7 @@
<el-button type="primary" @click="handleQuery">{{ <el-button type="primary" @click="handleQuery">{{
$t("查找") $t("查找")
}}</el-button> }}</el-button>
<!--
<el-button type="primary" @click="handleQuery2">{{ <el-button type="primary" @click="handleQuery2">{{
$t("批量反审核") $t("批量反审核")
}}</el-button> }}</el-button>
...@@ -85,7 +86,8 @@ ...@@ -85,7 +86,8 @@
}}</el-button> }}</el-button>
<el-button type="primary" @click="handleQuery3">{{ <el-button type="primary" @click="handleQuery3">{{
$t("批量核销") $t("批量核销")
}}</el-button> }}</el-button>-->
</el-form-item> </el-form-item>
</el-row> </el-row>
</el-form> </el-form>
......
...@@ -909,6 +909,7 @@ ...@@ -909,6 +909,7 @@
<choose-contact-dialog <choose-contact-dialog
v-if="!!contactChooseType" v-if="!!contactChooseType"
:type="1"
@choose="onContactChoose" @choose="onContactChoose"
@close="contactChooseType = null" @close="contactChooseType = null"
/> />
......
...@@ -626,7 +626,7 @@ ...@@ -626,7 +626,7 @@
</div> </div>
</el-dialog> </el-dialog>
<choose-contact-dialog v-if="!!contactChooseType" @choose="onContactChoose" @close="contactChooseType=null" /> <choose-contact-dialog v-if="!!contactChooseType" :type="2" @choose="onContactChoose" @close="contactChooseType=null" />
<quick-create-customer v-if="quickCreateType" :type="quickCreateType" @success="onContactChoose" @close="quickCreateType=null" /> <quick-create-customer v-if="quickCreateType" :type="quickCreateType" @success="onContactChoose" @close="quickCreateType=null" />
</div> </div>
</template> </template>
......
...@@ -4,83 +4,97 @@ ...@@ -4,83 +4,97 @@
<order-base-info :order="order"></order-base-info> <order-base-info :order="order"></order-base-info>
<div style="margin-top: 20px;display: none"> <div style="margin-top: 20px; display: none">
<span>{{$t('储位')}}{{ ($refs.area ? $refs.area.selected : []).join(',') }}</span> <span
<el-button type="primary" size="mini" @click="areaVisible = true" style="margin-left: 15px">{{$t('选择')}}</el-button> >{{ $t("储位") }}{{
($refs.area ? $refs.area.selected : []).join(",")
}}</span
>
<el-button
type="primary"
size="mini"
@click="areaVisible = true"
style="margin-left: 15px"
>{{ $t("选择") }}</el-button
>
</div> </div>
<h2>{{$t('货物信息')}}</h2> <h2>{{ $t("货物信息") }}</h2>
<el-table <el-table
v-if="order.orderItemVOList && order.orderItemVOList.length > 0 && orderItemList && orderItemList.length > 0" v-if="
order.orderItemVOList &&
order.orderItemVOList.length > 0 &&
orderItemList &&
orderItemList.length > 0
"
:data="order.orderItemVOList || []" :data="order.orderItemVOList || []"
style="width: 100%"> style="width: 100%"
<el-table-column >
type="index" <el-table-column type="index" width="50" :label="$t('序号')">
width="50"
:label="$t('序号')">
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="prodTitleZh" :label="$t('品名')">
prop="prodTitleZh" <template v-slot="{ row }">
:label="$t('品名')"> {{ row.prodTitleZh }}<br />
<template v-slot="{row}">
{{ row.prodTitleZh }}<br>
{{ row.prodTitleEn }} {{ row.prodTitleEn }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column :label="$t('填单货物属性')">
:label="$t('填单货物属性')"> <template v-slot="{ row }">
<template v-slot="{row}"> <span v-if="row.isWarehouseInAdd">{{ $t("非填单货物信息") }}</span>
<span v-if="row.isWarehouseInAdd">{{$t('非填单货物信息')}}</span>
<template v-else> <template v-else>
{{$t('品牌')}}{{ [$t('无牌'), $t('有牌'), $t('中性')][row.brandType] }}<br> {{ $t("品牌") }}{{
{{$t('箱数')}}{{ row.num }}<br> [$t("无牌"), $t("有牌"), $t("中性")][row.brandType]
{{$t('体积')}}{{ row.volume }}<br> }}<br />
{{$t('重量')}}{{ row.weight }}Kg {{ $t("箱数") }}{{ row.num }}<br />
{{ $t("体积") }}{{ row.volume }}<br />
{{ $t("重量") }}{{ row.weight }}Kg
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column :label="$t('入库货物属性')">
:label="$t('入库货物属性')"> <template v-slot="{ row }">
<template v-slot="{row}">
<template v-if="row.warehouseInInfoVO"> <template v-if="row.warehouseInInfoVO">
{{$t('品牌')}}{{ row.brandName }}<br> {{ $t("品牌") }}{{ row.brandName }}<br />
{{$t('箱数')}}{{ row.warehouseInInfoVO.cartonsNum }}<br> {{ $t("箱数") }}{{ row.warehouseInInfoVO.cartonsNum }}<br />
{{$t('体积')}}{{ row.warehouseInInfoVO.volume }}<br> {{ $t("体积") }}{{ row.warehouseInInfoVO.volume }}<br />
{{$t('重量')}}{{ row.warehouseInInfoVO.weight }}Kg {{ $t("重量") }}{{ row.warehouseInInfoVO.weight }}Kg
</template> </template>
<span v-else>{{$t('暂无入仓信息')}}</span> <span v-else>{{ $t("暂无入仓信息") }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="expressNo" prop="expressNo"
v-slot="{row}" v-slot="{ row }"
:label="$t('快递单号')"> :label="$t('快递单号')"
{{ row.expressNo || (row.warehouseInInfoVO ? row.warehouseInInfoVO.expressNo : '') }} >
{{
row.expressNo ||
(row.warehouseInInfoVO ? row.warehouseInInfoVO.expressNo : "")
}}
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="createTime" :label="$t('最后操作时间')">
prop="createTime" <template v-slot="{ row }">
:label="$t('最后操作时间')">
<template v-slot="{row}">
{{ parseTime(row.updateTime) }} {{ parseTime(row.updateTime) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="diffType" v-slot="{ row }" :label="$t('状态')">
prop="diffType"
v-slot="{row}"
:label="$t('状态')">
<dict-tag <dict-tag
v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.diffType" v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.diffType"
:type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS" :type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS"
:value="row.warehouseInInfoVO.diffType" :value="row.warehouseInInfoVO.diffType"
class="red" class="red"
:class="{green: row.warehouseInInfoVO.diffType === 4}" :class="{ green: row.warehouseInInfoVO.diffType === 4 }"
/> />
<span :class="{red: row.itemStatus === 3}" v-else>{{ row.itemStatus === 3 ? ($t('少了') + row.num + $t('箱')) : $t('待入仓') }}</span> <span :class="{ red: row.itemStatus === 3 }" v-else>{{
<span class="red" v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.cartonsNumDiff">{{ row.warehouseInInfoVO.cartonsNumDiff }}{{$t('箱')}}</span> row.itemStatus === 3 ? $t("少了") + row.num + $t("箱") : $t("待入仓")
}}</span>
<span
class="red"
v-if="row.warehouseInInfoVO && row.warehouseInInfoVO.cartonsNumDiff"
>{{ row.warehouseInInfoVO.cartonsNumDiff }}{{ $t("箱") }}</span
>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="address" :label="$t('操作')">
prop="address"
:label="$t('操作')">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<warehouse <warehouse
v-if="isEdit" v-if="isEdit"
...@@ -89,21 +103,32 @@ ...@@ -89,21 +103,32 @@
:order-item-b="orderItemList[$index]" :order-item-b="orderItemList[$index]"
:title="$t('修改')" :title="$t('修改')"
:order="order" :order="order"
@close="getList"></warehouse> @close="getList"
<template v-else-if=" ></warehouse>
wareItem(row.orderItemId) <template
&& wareItem(row.orderItemId).orderWarehouseInBackItemDoList v-else-if="
&& wareItem(row.orderItemId).orderWarehouseInBackItemDoList.length > 0"> wareItem(row.orderItemId) &&
<!-- <template v-if="!order.parentOrderId">--> wareItem(row.orderItemId).orderWarehouseInBackItemDoList &&
wareItem(row.orderItemId).orderWarehouseInBackItemDoList.length >
0
"
>
<!-- <template v-if="!order.parentOrderId">-->
<warehouse <warehouse
v-if="!isEdit" v-if="!isEdit"
:order-item-a="order.orderItemVOList[$index]" :order-item-a="order.orderItemVOList[$index]"
:order-item-b="orderItemList[$index]" :order-item-b="orderItemList[$index]"
:title="$t('追加')" :title="$t('追加')"
:order="order" :order="order"
@close="getList"></warehouse> @close="getList"
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">{{$t('退仓')}}</el-button> ></warehouse>
<!-- </template>--> <el-button
size="mini"
type="text"
@click="handleWarehousingReturn(row)"
>{{ $t("退仓") }}</el-button
>
<!-- </template>-->
</template> </template>
<warehouse <warehouse
v-else v-else
...@@ -111,88 +136,182 @@ ...@@ -111,88 +136,182 @@
:order-item-b="orderItemList[$index]" :order-item-b="orderItemList[$index]"
:title="$t('入仓')" :title="$t('入仓')"
:order="order" :order="order"
@close="getList"></warehouse> @close="getList"
></warehouse>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-card v-if="order.parentOrderId" style="margin-top: 20px"> <el-card v-if="order.parentOrderId" style="margin-top: 20px">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span style="font-size: 18px">{{$t('标签箱号')}}</span> <span style="font-size: 18px">{{ $t("标签箱号") }}</span>
</div> </div>
<div v-for="(item, index) in label.orderLabelDtoList" :key="index" style="margin-bottom: 10px"> <div
<el-input-number v-model="item.start" controls-position="right"></el-input-number> - v-for="(item, index) in label.orderLabelDtoList"
<el-input-number v-model="item.end" controls-position="right"></el-input-number> :key="index"
<el-button icon="el-icon-minus" circle v-show="index !== 0" @click="label.orderLabelDtoList.splice(index, 1)" style="margin-left: 10px"></el-button> style="margin-bottom: 10px"
<el-button icon="el-icon-plus" circle @click="handleLabelAdd(index)"></el-button> >
<el-input-number
v-model="item.start"
controls-position="right"
></el-input-number>
-
<el-input-number
v-model="item.end"
controls-position="right"
></el-input-number>
<el-button
icon="el-icon-minus"
circle
v-show="index !== 0"
@click="label.orderLabelDtoList.splice(index, 1)"
style="margin-left: 10px"
></el-button>
<el-button
icon="el-icon-plus"
circle
@click="handleLabelAdd(index)"
></el-button>
</div> </div>
<div style="text-align: center"> <div style="text-align: center">
<el-button type="primary" @click="handleLabelSubmit">{{$t('修改箱号')}}</el-button> <el-button type="primary" @click="handleLabelSubmit">{{
$t("修改箱号")
}}</el-button>
</div> </div>
</el-card> </el-card>
<h2 v-if="orderSpecialNeeds.length > 0">{{$t('特殊需求')}}</h2> <h2 v-if="orderSpecialNeeds.length > 0">{{ $t("特殊需求") }}</h2>
<el-form ref="form" :model="form" label-width="200px"> <el-form ref="form" :model="form" label-width="200px">
<el-form-item :label="$i18n.locale === 'en_US' ? item.labelEn : item.label" v-for="(item, index) in orderSpecialNeeds" :key="item.value" style="width: 600px"> <el-form-item
<el-input-number v-model="form.orderSpecialNeedReceivableReqVoList[index].receivableMoney" type="number" :min="0" step-strictly :placeholder="$t('请输入') + ($i18n.locale === 'en_US' ? item.labelEn : item.label)"></el-input-number> :label="$i18n.locale === 'en_US' ? item.labelEn : item.label"
<el-select v-model="form.orderSpecialNeedReceivableReqVoList[index].receivableMoneyCurrency" :placeholder="$t('请选择')" style="width: 100px"> v-for="(item, index) in orderSpecialNeeds"
:key="item.value"
style="width: 600px"
>
<el-input-number
v-model="
form.orderSpecialNeedReceivableReqVoList[index].receivableMoney
"
type="number"
:min="0"
step-strictly
:placeholder="
$t('请输入') +
($i18n.locale === 'en_US' ? item.labelEn : item.label)
"
></el-input-number>
<el-select
v-model="
form.orderSpecialNeedReceivableReqVoList[index]
.receivableMoneyCurrency
"
:placeholder="$t('请选择')"
style="width: 100px"
>
<el-option <el-option
v-for="item in currencyList" v-for="item in currencyList"
:key="item.id" :key="item.id"
:label="$i18n.locale === 'en_US' ? item.titleEn : item.titleZh" :label="$i18n.locale === 'en_US' ? item.titleEn : item.titleZh"
:value="item.id"> :value="item.id"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<h2>{{$t('订单数据')}}</h2> <h2>{{ $t("订单数据") }}</h2>
<el-form-item :label="$t('总方数')" style="width: 380px"> <el-form-item :label="$t('总方数')" style="width: 380px">
<el-input v-model="form.sumVolume" :placeholder="$t('请输入总方数')" readonly> <el-input
v-model="form.sumVolume"
:placeholder="$t('请输入总方数')"
readonly
>
<span slot="append"></span> <span slot="append"></span>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item :label="$t('总重量')" style="width: 380px"> <el-form-item :label="$t('总重量')" style="width: 380px">
<el-input v-model="form.sumWeight" :placeholder="$t('请输入总重量')" readonly> <el-input
v-model="form.sumWeight"
:placeholder="$t('请输入总重量')"
readonly
>
<span slot="append">kg</span> <span slot="append">kg</span>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-card style="margin-top: 15px;"> <el-card style="margin-top: 15px">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span style="font-size: 18px">{{$t('入仓影像')}}</span> <span style="font-size: 18px">{{ $t("入仓影像") }}</span>
</div> </div>
<div> <div>
<image-and-video-upload readonly :fileSize="50" :isShowTip="true" :value="form.urls" ></image-and-video-upload> <image-and-video-upload
readonly
:fileSize="50"
:isShowTip="true"
:value="form.urls"
></image-and-video-upload>
</div> </div>
</el-card> </el-card>
<div style="text-align: center;margin-top: 15px" v-if="!(order.status !== 3 && isEdit)"> <div
<el-button @click="escapeBol = true;" type="primary">{{$t('转异')}}</el-button> style="text-align: center; margin-top: 15px"
<el-button type="primary" @click="finishVisible = true">{{$t('完成入仓')}}</el-button> v-if="!(order.status !== 3 && isEdit)"
>
<el-button @click="escapeBol = true" type="primary">{{
$t("转异")
}}</el-button>
<el-button type="primary" @click="finishVisible = true">{{
$t("完成入仓")
}}</el-button>
</div> </div>
</el-form> </el-form>
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList" <warehouse-area-dialog
:order-id="orderId" :warehouse-id="warehouseId" :is-editing="isEdit"></warehouse-area-dialog> ref="area"
:visible.sync="areaVisible"
v-model="form.orderLocationCreateReqVOList"
:order-id="orderId"
:warehouse-id="warehouseId"
:is-editing="isEdit"
></warehouse-area-dialog>
<!-- 完成入仓 --> <!-- 完成入仓 -->
<el-dialog <el-dialog
:title="$t('确认入仓')" :title="$t('确认入仓')"
:visible.sync="finishVisible" :visible.sync="finishVisible"
width="300px"> width="300px"
<div style="text-align: center">{{$t('在完成入仓前,您还可以')}}</div> >
<div style="text-align: center;padding: 15px 0"> <div style="text-align: center">{{ $t("在完成入仓前,您还可以") }}</div>
<!-- <el-button type="info" @click="areaVisible = true">{{$t('选择储位')}}</el-button>--> <div style="text-align: center; padding: 15px 0">
<el-button type="info" @click="isShowPrintTag = true">{{$t('打印标签')}}</el-button> <!-- <el-button type="info" @click="areaVisible = true">{{$t('选择储位')}}</el-button>-->
<el-button type="info" @click="isShowPrintTag = true">{{
$t("打印标签")
}}</el-button>
</div> </div>
<div style="text-align: center"> <div style="text-align: center">
<el-button type="primary" @click="handleSubmit()">{{$t('确 定')}}</el-button> <el-button type="primary" @click="handleSubmit()">{{
$t("确 定")
}}</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :title="order.orderNo + $t('订单转异')" center :visible.sync="escapeBol"> <el-dialog
<el-form label-position="top" label-width="200" ref="exceptionForm" :model="form" :rules="exceptionRules"> :title="order.orderNo + $t('订单转异')"
center
:visible.sync="escapeBol"
>
<el-form
label-position="top"
label-width="200"
ref="exceptionForm"
:model="form"
:rules="exceptionRules"
>
<el-form-item :label="$t('原因类型')" prop="manualExceptionType"> <el-form-item :label="$t('原因类型')" prop="manualExceptionType">
<dict-selector v-model="form.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector> <dict-selector
v-model="form.manualExceptionType"
form-type="checkbox"
:type="DICT_TYPE.MANUAL_EXCEPTION_TYPE"
multiple
></dict-selector>
</el-form-item> </el-form-item>
<el-form-item :label="$t('附件')"> <el-form-item :label="$t('附件')">
<image-upload v-model="form.exceptionUrls"></image-upload> <image-upload v-model="form.exceptionUrls"></image-upload>
...@@ -202,39 +321,51 @@ ...@@ -202,39 +321,51 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleException">{{$t('确认并完成入仓')}}</el-button> <el-button type="primary" @click="handleException">{{
<el-button @click="escapeBol = false">{{$t('取消')}}</el-button> $t("确认并完成入仓")
}}</el-button>
<el-button @click="escapeBol = false">{{ $t("取消") }}</el-button>
</span> </span>
</el-dialog> </el-dialog>
<print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag> <print-tag
v-if="isShowPrintTag"
:order-id="orderId"
@close="isShowPrintTag = false"
></print-tag>
<print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" /> <print-warehouse-receipt
v-if="isShowPrint"
:order-id="orderId"
@close="isShowPrint = false"
/>
</div> </div>
</template> </template>
<script> <script>
import {getCurrencyList} from "@/api/ecw/currency" import { getCurrencyList } from "@/api/ecw/currency";
import { import {
getLabelByOrder, getLabelWaitInByOrder, getLabelByOrder,
getLabelWaitInByOrder,
getOrder, getOrder,
getOrderWarehouseIn, getOrderWarehouseIn,
getSpecialListByOrderId, listByOrderId, getSpecialListByOrderId,
orderWarehouseInFinish, orderWarehouseInUpdateLabel, listByOrderId,
rollbackDelete, warehousePictureList orderWarehouseInFinish,
} from '@/api/ecw/order' orderWarehouseInUpdateLabel,
import orderBaseInfo from "@/components/OrderBaseInfo" rollbackDelete,
import WarehouseAreaDialog from '@/components/WarehouseAreaDialog' warehousePictureList,
import {DICT_TYPE} from "@/utils/dict" } from "@/api/ecw/order";
import PrintTag from "@/views/ecw/order/components/PrintTag" import orderBaseInfo from "@/components/OrderBaseInfo";
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt" import WarehouseAreaDialog from "@/components/WarehouseAreaDialog";
import { DICT_TYPE } from "@/utils/dict";
import PrintTag from "@/views/ecw/order/components/PrintTag";
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt";
import imageUpload from "@/components/ImageUpload"; import imageUpload from "@/components/ImageUpload";
import {parseTime} from "@/utils/ruoyi" import { parseTime } from "@/utils/ruoyi";
import ImageAndVideoUpload from '@/components/ImageAndVideoUpload' import ImageAndVideoUpload from "@/components/ImageAndVideoUpload";
import Warehouse from "@/views/ecw/order/warehousing/components/Warehouse" import Warehouse from "@/views/ecw/order/warehousing/components/Warehouse";
export default { export default {
name: "Warehousing", name: "Warehousing",
components: { components: {
orderBaseInfo, orderBaseInfo,
WarehouseAreaDialog, WarehouseAreaDialog,
...@@ -242,28 +373,30 @@ export default { ...@@ -242,28 +373,30 @@ export default {
PrintWarehouseReceipt, PrintWarehouseReceipt,
imageUpload, imageUpload,
ImageAndVideoUpload, ImageAndVideoUpload,
Warehouse Warehouse,
}, },
mounted() { mounted() {
if(this.$route.query.id){ if (this.$route.query.id) {
this.orderId = parseInt(this.$route.query.id || undefined) this.orderId = parseInt(this.$route.query.id || undefined);
this.getOrderItemList() this.getOrderItemList();
getSpecialListByOrderId(this.orderId).then(r => this.specialList = r.data) getSpecialListByOrderId(this.orderId).then(
(r) => (this.specialList = r.data)
);
Promise.all([ Promise.all([
this.getOrder(), this.getOrder(),
listByOrderId({ orderId: this.orderId }).then(r => { listByOrderId({ orderId: this.orderId }).then((r) => {
this.form.orderLocationCreateReqVOList = r.data this.form.orderLocationCreateReqVOList = r.data;
}) }),
]).then(() => { ]).then(() => {
// 等待仓库id和已选的储位后初始化储位信息 // 等待仓库id和已选的储位后初始化储位信息
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.area.updateArea() this.$refs.area.updateArea();
}) });
}) });
} }
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then((res) => (this.currencyList = res.data));
}, },
data() { data() {
...@@ -276,14 +409,14 @@ export default { ...@@ -276,14 +409,14 @@ export default {
form: { form: {
orderSpecialNeedReceivableReqVoList: [], orderSpecialNeedReceivableReqVoList: [],
orderLocationCreateReqVOList: [], orderLocationCreateReqVOList: [],
exceptionUrls:[], exceptionUrls: [],
descZh:'', descZh: "",
manualExceptionType:[], manualExceptionType: [],
urls: [], urls: [],
sumVolume: '', sumVolume: "",
sumWeight: '', sumWeight: "",
}, },
currencyList:[], currencyList: [],
order: {}, order: {},
orderId: undefined, orderId: undefined,
orderItemList: [], orderItemList: [],
...@@ -291,262 +424,287 @@ export default { ...@@ -291,262 +424,287 @@ export default {
warehousing: undefined, warehousing: undefined,
isShowPrintTag: false, isShowPrintTag: false,
isShowPrint: false, isShowPrint: false,
escapeBol:false, escapeBol: false,
label: { label: {
"orderId": 0, orderId: 0,
"orderLabelDtoList": [ orderLabelDtoList: [
{ {
"end": 0, end: 0,
"start": 0 start: 0,
} },
] ],
}, },
exceptionRules: { exceptionRules: {
manualExceptionType: [ manualExceptionType: [
{ required: true, message: '请勾选原因类型', trigger: 'change' }, { required: true, message: "请勾选原因类型", trigger: "change" },
{ {
validator: (rule, value, callback) => { validator: (rule, value, callback) => {
if (value.length <= 0) { if (value.length <= 0) {
callback(new Error('请勾选原因类型')) callback(new Error("请勾选原因类型"));
}
callback()
}, trigger: 'change'
}
]
}
} }
callback();
},
trigger: "change",
},
],
},
};
}, },
methods: { methods: {
getOrderItemList(){ getOrderItemList() {
this.orderItemList = [] this.orderItemList = [];
return getOrderWarehouseIn(this.orderId).then(r => this.orderItemList = r.data) return getOrderWarehouseIn(this.orderId).then(
(r) => (this.orderItemList = r.data)
);
}, },
getList(){ getList() {
this.getOrder() this.getOrder();
this.getOrderItemList() this.getOrderItemList();
}, },
getWarehousePictureList(){ getWarehousePictureList() {
return warehousePictureList({ return warehousePictureList({
bizId: this.order.orderId, bizId: this.order.orderId,
type: 1 type: 1,
}).then(r =>{ }).then((r) => {
this.form.urls = r.data.map(i =>i.url) this.form.urls = r.data.map((i) => i.url);
}) });
}, },
include(){ include() {
return (state, arr) => { return (state, arr) => {
return arr.indexOf(state) > -1 return arr.indexOf(state) > -1;
} };
}, },
exclude(){ exclude() {
return (state, arr) => { return (state, arr) => {
return arr.indexOf(state) == -1 return arr.indexOf(state) == -1;
} };
}, },
handleLabelSubmit(){ handleLabelSubmit() {
orderWarehouseInUpdateLabel({ orderWarehouseInUpdateLabel({
...this.label, ...this.label,
orderId: this.orderId orderId: this.orderId,
}).then(r => { }).then((r) => {
if (r.code === 0){ if (r.code === 0) {
this.$message.success(r.msg || this.$t('修改标签箱号成功')) this.$message.success(r.msg || this.$t("修改标签箱号成功"));
} }
}) });
}, },
// 箱号标签回显 // 箱号标签回显
getLabelByOrder(){ getLabelByOrder() {
getLabelByOrder(this.orderId).then(r => { getLabelByOrder(this.orderId).then((r) => {
if (r.code === 0 && !! r.data && r.data.length > 0) { if (r.code === 0 && !!r.data && r.data.length > 0) {
this.label.orderLabelDtoList = r.data this.label.orderLabelDtoList = r.data;
} else { } else {
// 没有历史数据,查默认值 // 没有历史数据,查默认值
getLabelWaitInByOrder(this.orderId).then(r => { getLabelWaitInByOrder(this.orderId).then((r) => {
console.log(r) console.log(r);
if (r.code === 0 && !! r.data) { if (r.code === 0 && !!r.data) {
this.label.orderLabelDtoList = [r.data] this.label.orderLabelDtoList = [r.data];
} }
}) });
} }
}) });
}, },
handleLabelAdd(index){ handleLabelAdd(index) {
this.label.orderLabelDtoList.splice(index + 1, 0, { this.label.orderLabelDtoList.splice(index + 1, 0, {
"end": '', end: "",
"start": '' start: "",
}) });
}, },
getTowSum(){ getTowSum() {
// let sumVolume = 0 // let sumVolume = 0
// let sumWeight = 0 // let sumWeight = 0
// this.order.orderItemVOList.forEach(e => { // this.order.orderItemVOList.forEach(e => {
// if (e?.warehouseInInfoVO?.volume) sumVolume += e.warehouseInInfoVO.volume // if (e?.warehouseInInfoVO?.volume) sumVolume += e.warehouseInInfoVO.volume
// if (e?.warehouseInInfoVO?.weight) sumWeight += e.warehouseInInfoVO.weight // if (e?.warehouseInInfoVO?.weight) sumWeight += e.warehouseInInfoVO.weight
// }) // })
this.form.sumVolume = this.order.sumVolume// || sumVolume this.form.sumVolume = this.order.sumVolume; // || sumVolume
this.form.sumWeight = this.order.sumWeight// || sumWeight this.form.sumWeight = this.order.sumWeight; // || sumWeight
}, },
getOrder(){ getOrder() {
return getOrder(this.orderId).then(r => { return getOrder(this.orderId)
this.order = r.data .then((r) => {
this.getTowSum() this.order = r.data;
}).then(() => { this.getTowSum();
this.getLabelByOrder()
this.getWarehousePictureList()
}) })
.then(() => {
this.getLabelByOrder();
this.getWarehousePictureList();
});
}, },
specialHas0(){ specialHas0() {
let result = false let result = false;
this.form.orderSpecialNeedReceivableReqVoList.forEach(e => { this.form.orderSpecialNeedReceivableReqVoList.forEach((e) => {
if (e.receivableMoney === '0' || e.receivableMoney === ''){ if (e.receivableMoney === "0" || e.receivableMoney === "") {
result = true result = true;
} }
}) });
return result return result;
}, },
handleException() { handleException() {
this.$refs.exceptionForm.validate((valid) => { this.$refs.exceptionForm.validate((valid) => {
if (valid) { if (valid) {
this.handleSubmit() this.handleSubmit();
} else { } else {
this.$message.warning('请勾选原因类型') this.$message.warning("请勾选原因类型");
} }
}) });
}, },
async handleSubmit() { async handleSubmit() {
if (this.specialHas0()) { if (this.specialHas0()) {
const confirm = await this.$confirm(this.$t('有特需费用为0或未填写,请问是否继续?'), this.$t('注意'), { const confirm = await this.$confirm(
confirmButtonText: this.$t('继续'), this.$t("有特需费用为0或未填写,请问是否继续?"),
cancelButtonText: this.$t('取消'), this.$t("注意"),
type: 'warning' {
}) confirmButtonText: this.$t("继续"),
if (confirm !== 'confirm'){ cancelButtonText: this.$t("取消"),
return type: "warning",
}
);
if (confirm !== "confirm") {
return;
} }
} }
let form = { let form = {
orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList, orderSpecialNeedReceivableReqVoList:
"orderLocationCreateReqVOList": this.form.orderLocationCreateReqVOList, this.form.orderSpecialNeedReceivableReqVoList,
"orderId": this.order.orderId, orderLocationCreateReqVOList: this.form.orderLocationCreateReqVOList,
orderId: this.order.orderId,
// urls: this.form.urls, // urls: this.form.urls,
sumVolume: this.form.sumVolume, sumVolume: this.form.sumVolume,
sumWeight: this.form.sumWeight, sumWeight: this.form.sumWeight,
isAppend: this.isAdd isAppend: this.isAdd,
} };
// 标签箱号 // 标签箱号
if (this.order.parentOrderId) { if (this.order.parentOrderId) {
form.labelList = this.label.orderLabelDtoList || [] form.labelList = this.label.orderLabelDtoList || [];
} }
if (this.escapeBol) { if (this.escapeBol) {
form.exceptionUrls = this.form.exceptionUrls.length !== 0 ? this.form.exceptionUrls?.split(',') : [] form.exceptionUrls =
this.form.exceptionUrls.length !== 0
? this.form.exceptionUrls?.split(",")
: [];
form.descZh = this.form.descZh; form.descZh = this.form.descZh;
form.manualExceptionType = this.form.manualExceptionType.join(',') form.manualExceptionType = this.form.manualExceptionType.join(",");
} }
orderWarehouseInFinish(form).then(r => { orderWarehouseInFinish(form).then((r) => {
if (r.code === 0) { if (r.code === 0) {
this.escapeBol = false; this.escapeBol = false;
this.finishVisible = false this.finishVisible = false;
const message = !r.data ? this.$t('该订单已成功入仓,是否打印?') : `<h3>${this.$t('货物已入仓,存在异常')}</h3>${this.$t('该订单已成功入仓,是否打印?')}` const message = !r.data
this.$confirm( ? this.$t("该订单已成功入仓,是否打印?")
message, : `<h3>${this.$t("货物已入仓,存在异常")}</h3>${this.$t(
this.$t('货物已入仓'), "该订单已成功入仓,是否打印?"
{ )}`;
confirmButtonText: this.$t(''), this.$confirm(message, this.$t("货物已入仓"), {
cancelButtonText: this.$t(''), confirmButtonText: this.$t(""),
dangerouslyUseHTMLString: true cancelButtonText: this.$t(""),
} dangerouslyUseHTMLString: true,
).then(() => {
this.isShowPrint = true
}).catch(() => {
// this.$store.dispatch('tagsView/delVisitedView')
this.$message.success(this.$t('入仓成功'))
this.$tab.closePage()
}) })
} .then(() => {
this.isShowPrint = true;
}) })
.catch(() => {
// this.$store.dispatch('tagsView/delVisitedView')
this.$message.success(this.$t("入仓成功"));
this.$tab.closePage();
});
}
});
}, },
handleWarehousingReturn(item){ handleWarehousingReturn(item) {
this.$confirm(item.prodTitleZh + this.$t('退仓后不可恢复,是否确认退仓?'), this.$t('确定要退仓?'), { this.$confirm(
confirmButtonText: this.$t('确定'), item.prodTitleZh + this.$t("退仓后不可恢复,是否确认退仓?"),
cancelButtonText: this.$t('取消'), this.$t("确定要退仓?"),
type: 'warning' {
}).then(() => { confirmButtonText: this.$t("确定"),
cancelButtonText: this.$t("取消"),
type: "warning",
}
)
.then(() => {
rollbackDelete({ rollbackDelete({
"orderId": item.orderId, orderId: item.orderId,
"orderItemId": item.orderItemId orderItemId: item.orderItemId,
}).then(() => { }).then(() => {
this.$message({ this.$message({
type: 'success', type: "success",
message: this.$t('货物退仓成功!') message: this.$t("货物退仓成功!"),
}); });
this.getOrderItemList() this.getOrderItemList();
this.getOrder() this.getOrder();
})
}).catch(e => {
}); });
} })
.catch((e) => {});
},
}, },
watch: { watch: {
orderSpecialNeeds(val){ orderSpecialNeeds(val) {
val.forEach(e => { val.forEach((e) => {
this.form.orderSpecialNeedReceivableReqVoList.push({ this.form.orderSpecialNeedReceivableReqVoList.push({
"id": e.id, id: e.id,
"receivableMoney": e.transFee || '', receivableMoney: e.transFee || "",
"receivableMoneyCurrency": e.transCurrency || 3 receivableMoneyCurrency: e.transCurrency || 3,
}) });
}) });
} },
}, },
computed: { computed: {
// 根据orderItemId获取入仓item // 根据orderItemId获取入仓item
wareItem(){ wareItem() {
return orderItemId => { return (orderItemId) => {
return this.orderItemList.find(item => item.orderItemId == orderItemId) return this.orderItemList.find(
} (item) => item.orderItemId == orderItemId
);
};
}, },
isAdd() { isAdd() {
return this.$route.path === "/order/warehousing-add" return this.$route.path === "/order/warehousing-add";
}, },
isEdit() { isEdit() {
return this.$route.path === "/order/warehousing-update" return this.$route.path === "/order/warehousing-update";
}, },
title() { title() {
return this.$i18n.locale === 'en_US' ? this.$route.meta.titleEn : this.$route.name return this.$i18n.locale === "en_US"
? this.$route.meta.titleEn
: this.$route.name;
}, },
orderSpecialNeedsDict() { orderSpecialNeedsDict() {
return this.$store.state.dict.dictDatas.order_special_needs return this.$store.state.dict.dictDatas.order_special_needs;
},
orderSpecialNeeds(){
const result = []
this.specialList.forEach(e => {
const t = this.orderSpecialNeedsDict.find(f => f.value === e.advanceType)
if(t) {
result.push({...e, label: t.label, labelEn: t.labelEn})
}
})
return result
}, },
warehouseId(){ orderSpecialNeeds() {
return this.order?.logisticsInfoDto?.startWarehouseId const result = [];
} this.specialList.forEach((e) => {
const t = this.orderSpecialNeedsDict.find(
(f) => f.value === e.advanceType
);
if (t) {
result.push({ ...e, label: t.label, labelEn: t.labelEn });
} }
} });
return result;
},
warehouseId() {
return this.order?.logisticsInfoDto?.startWarehouseId;
},
},
};
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import "src/assets/styles/element-variables"; @import "src/assets/styles/element-variables";
.red{ .red {
color: $--color-danger; color: $--color-danger;
} }
.green{ .green {
color: $--color-success; color: $--color-success;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment