|
@@ -24,23 +24,25 @@
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="发货人姓名:" prop="sender.name">
|
|
|
- <!-- {{ deliveryForms.sender.name }}-->
|
|
|
- <el-input v-model="deliveryForms.sender.name" :minlength="1" :maxlength="20" placeholder="请输入发货人姓名"
|
|
|
- :disabled="true"></el-input>
|
|
|
+ {{ deliveryForms.sender.name }}
|
|
|
+ <!-- <el-input v-model="deliveryForms.sender.name" :minlength="1" :maxlength="20" placeholder="请输入发货人姓名"
|
|
|
+ :disabled="true"></el-input> -->
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="手机号:" prop="sender.phone">
|
|
|
- <!-- {{ deliveryForms.sender.phone }}-->
|
|
|
- <el-input v-model="deliveryForms.sender.phone" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
- placeholder="请输入手机号"></el-input> </el-form-item></el-col>
|
|
|
+ {{ deliveryForms.sender.phone }}
|
|
|
+ <!-- <el-input v-model="deliveryForms.sender.phone" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
+ placeholder="请输入手机号"></el-input> --> </el-form-item></el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="发货地址:" prop="sender.address">
|
|
|
- <!-- {{ deliveryForms.sender.province_name }} -->
|
|
|
- <el-cascader size="large" :options="options" clearable :disabled="true" v-model="selectedOptions"
|
|
|
+ {{
|
|
|
+ fullSenderAddress
|
|
|
+ }}
|
|
|
+ <!-- <el-cascader size="large" :options="options" clearable :disabled="true" v-model="selectedOptions"
|
|
|
@change="sendHandleChange">
|
|
|
</el-cascader>
|
|
|
- <el-input :disabled="true" v-model="deliveryForms.sender.address" placeholder="请输入"></el-input>
|
|
|
+ <el-input :disabled="true" v-model="deliveryForms.sender.address" placeholder="请输入"></el-input> -->
|
|
|
</el-form-item></el-col>
|
|
|
<!-- <el-col :span="12">
|
|
|
<el-form-item label="配送仓库:" prop="freight_price">
|
|
@@ -72,37 +74,28 @@
|
|
|
<!-- --><el-row>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="收货人姓名:" prop="receiver.name">
|
|
|
- <el-input v-model="deliveryForms.receiver.name" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
- placeholder="请输入收货人姓名"></el-input>
|
|
|
+ {{ deliveryForms.receiver.name }}
|
|
|
+ <!-- <el-input v-model="deliveryForms.receiver.name" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
+ placeholder="请输入收货人姓名"></el-input> -->
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="手机号:" prop="receiver.phone">
|
|
|
- <el-input v-model="deliveryForms.receiver.phone" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
- placeholder="请输入手机号"></el-input> </el-form-item></el-col>
|
|
|
+ {{ deliveryForms.receiver.phone }}
|
|
|
+ <!-- <el-input v-model="deliveryForms.receiver.phone" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
+ placeholder="请输入手机号"></el-input> --></el-form-item></el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="配送地址:" prop="receiver.address">
|
|
|
- <el-cascader size="large" :options="options" clearable :disabled="true" v-model="receiverOptions"
|
|
|
+ {{
|
|
|
+ fullReceiverAddress
|
|
|
+ }}
|
|
|
+ <!-- <el-cascader size="large" :options="options" clearable :disabled="true" v-model="receiverOptions"
|
|
|
@change="receiverChange">
|
|
|
</el-cascader>
|
|
|
<el-input v-model="deliveryForms.receiver.address" size="medium" :disabled="true"
|
|
|
- placeholder="请输入"></el-input> </el-form-item></el-col>
|
|
|
+ placeholder="请输入"></el-input> --> </el-form-item></el-col>
|
|
|
</el-row>
|
|
|
- <el-divider></el-divider>
|
|
|
- <!-- <el-row :gutter="20">
|
|
|
- <el-col :span="8" :offset="6">
|
|
|
- <el-form-item label="物流单号:" prop="tracking_number">
|
|
|
- <el-input
|
|
|
- v-model="tracking_number"
|
|
|
- :minlength="1"
|
|
|
- :maxlength="20"
|
|
|
- clearable
|
|
|
- placeholder="请输入物流单号"
|
|
|
- ></el-input>
|
|
|
- <el-button>自动获取单号</el-button>
|
|
|
- </el-form-item
|
|
|
- ></el-col>
|
|
|
- </el-row> -->
|
|
|
+ <!-- <el-divider></el-divider>
|
|
|
<h3>商品信息:</h3>
|
|
|
<el-table :data="product_list" border :cell-style="{ textAlign: 'center' }"
|
|
|
:header-cell-style="{ textAlign: 'center' }" style="width: 100%">
|
|
@@ -111,55 +104,54 @@
|
|
|
<template slot-scope="scope">
|
|
|
{{ scope.row.goods_vo.sn }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="商品名称">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="商品名称">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.goods_vo.name }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="sku">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="sku">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.product_vo.sku }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="序列号" v-if="sn_code_list">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="序列号" v-if="sn_code_list">
|
|
|
+ <template slot-scope="scope">
|
|
|
<span v-for="(item, index) in scope.row.sn_code_list" :key="item.id"><span v-if="index !== 0">,</span>{{
|
|
|
item.sn_code }}</span>
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="规格型号">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="规格型号">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.product_vo.spec_name }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="单位">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="单位">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.product_vo.unit }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="订单数量">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="订单数量">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.num }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="可用库存">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="可用库存">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.use_able_stock }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="实际库存">
|
|
|
- <template slot-scope="scope">
|
|
|
+</el-table-column>
|
|
|
+<el-table-column label="实际库存">
|
|
|
+ <template slot-scope="scope">
|
|
|
{{ scope.row.actual_stock }}
|
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+</el-table-column>
|
|
|
+</el-table> -->
|
|
|
<el-divider></el-divider>
|
|
|
- <h3>出库明细</h3>
|
|
|
+ <h3>商品明细</h3>
|
|
|
<el-button class="button" size="mini" type="primary" @click="scanCode"
|
|
|
:disabled="disabledType">扫码出库</el-button>
|
|
|
<div style="width: 100%; display: block">
|
|
|
- <!-- // -->
|
|
|
<el-table border :data="goodsExchangeAddForm.product_list" :cell-style="{ textAlign: 'center' }"
|
|
|
:header-cell-style="{ textAlign: 'center' }" style="width: 100%; margin-top: 20px">
|
|
|
<el-table-column label="商品编号">
|
|
@@ -179,8 +171,11 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="序列号" v-if="sn_code_list">
|
|
|
<template slot-scope="scope">
|
|
|
- <span v-for="(item, index) in scope.row.sn_code_list" :key="item.id"><span
|
|
|
- v-if="index !== 0">,</span>{{ item.sn_code }}</span>
|
|
|
+ <div class="sn-code-container">
|
|
|
+ <span v-for="item in scope.row.sn_code_list" :key="item.id">
|
|
|
+ <p>{{ item.sn_code }}</p>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="product_vo.spec_name" label="规格型号">
|
|
@@ -196,10 +191,15 @@
|
|
|
<!-- <el-input v-model="scope.row.out_num" type="number" :min="0" :maxlength="20"></el-input> -->
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column label="订单数量">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.orderNum }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="实际库存">
|
|
|
<template slot-scope="scope">
|
|
|
- <span v-if="!disabledType">{{ scope.row.usable_stock }}</span>
|
|
|
- <span v-else>{{ scope.row.use_able_stock }}</span>
|
|
|
+ <span>{{ scope.row.actual_stock }}</span>
|
|
|
+ <!-- <span>{{ scope.row.use_able_stock }}</span> -->
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column width="200" label="操作" v-if="!disabledType">
|
|
@@ -250,12 +250,16 @@
|
|
|
<el-divider></el-divider>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8" :offset="6">
|
|
|
- <el-form-item label="物流单号:" prop="tracking_number">
|
|
|
+ <el-form-item label="物流单号:" prop="tracking_number" v-if="deliveryForms.send_type !== 'SELF_PICKUP'">
|
|
|
<el-input v-model="kdnCode" :minlength="1" :maxlength="20" :disabled="true"
|
|
|
placeholder="请输入物流单号"></el-input>
|
|
|
<el-button @click="obtainOrder" v-if="kdnCode == '' || kdnCode == undefined"
|
|
|
:disabled="btnType">获取单号</el-button>
|
|
|
- </el-form-item></el-col>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="自提单号:" prop="tracking_number" v-else>
|
|
|
+ {{ deliveryForms.selfPickupNum }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -491,7 +495,8 @@
|
|
|
</el-form> -->
|
|
|
<div class="footer">
|
|
|
<!-- <el-button type="primary"> 获取全部单号 </el-button> -->
|
|
|
- <el-button type="primary" @click="saveErpWarehouseOut" :disabled="outType == 'check'" v-if="kdnCode !== ''">发货
|
|
|
+ <el-button type="primary" @click="saveErpWarehouseOut" :disabled="outType == 'check'"
|
|
|
+ v-if="kdnCode !== '' || deliveryForms.send_type == 'SELF_PICKUP'">发货
|
|
|
</el-button>
|
|
|
<el-button @click="roBack2()">保存</el-button>
|
|
|
</div>
|
|
@@ -542,6 +547,8 @@ export default {
|
|
|
adminList: [],
|
|
|
kdnCode: "",
|
|
|
deliveryForms: {
|
|
|
+ send_type: '',
|
|
|
+ selfPickupNum: '',
|
|
|
remark: "",
|
|
|
declared_value: "",
|
|
|
appointment_type: 0,
|
|
@@ -659,6 +666,7 @@ export default {
|
|
|
},
|
|
|
computed: {
|
|
|
...mapGetters(["user"]),
|
|
|
+
|
|
|
activeStep() {
|
|
|
// 定义步骤数组,每个元素对应一个步骤的条件
|
|
|
const steps = [
|
|
@@ -677,6 +685,14 @@ export default {
|
|
|
|
|
|
// 如果没有任何步骤是激活的,返回-1或者你可以选择返回0显示第一步
|
|
|
return -1;
|
|
|
+ },
|
|
|
+ fullSenderAddress() {
|
|
|
+ const { province_name, city_name, area_name, address } = this.deliveryForms.sender;
|
|
|
+ return [province_name, city_name, area_name, address].filter(Boolean).join("");
|
|
|
+ },
|
|
|
+ fullReceiverAddress() {
|
|
|
+ const { province_name, city_name, area_name, address } = this.deliveryForms.receiver;
|
|
|
+ return [province_name, city_name, area_name, address].filter(Boolean).join("");
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
@@ -700,7 +716,6 @@ export default {
|
|
|
return (
|
|
|
el.goods_id === res.goods_id &&
|
|
|
el.product_id === res.product_id &&
|
|
|
- el.warehouse_id === res.warehouse_id &&
|
|
|
el.product_vo.sku === res.product_vo.sku
|
|
|
);
|
|
|
});
|
|
@@ -867,29 +882,53 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
saveErpWarehouseOut() {
|
|
|
- const params = this.goodsExchangeAddForm
|
|
|
- params.order_item_vos = params.product_list
|
|
|
- API_order.outOrderSend(this.id, params).then((res) => {
|
|
|
- this.$router.push({ name: "warehouseOut" });
|
|
|
- });
|
|
|
- return;
|
|
|
- /* {
|
|
|
- send_address: this.send_address,
|
|
|
- receive_address: this.receive_address,
|
|
|
- } */
|
|
|
- API_order.addErpWarehouseOut({
|
|
|
- order_list: this.orderOutboundInfo.order_list,
|
|
|
- warehouse_consignee_id: this.orderOutboundInfo.warehouse_consignee_id,
|
|
|
- out_time: this.orderOutboundInfo.out_time / 1000,
|
|
|
- }).then((response) => {
|
|
|
- this.$message.success("出库成功!");
|
|
|
- const { callback } = this.$route.params;
|
|
|
- if (typeof callback === "function") callback();
|
|
|
- this.$store.dispatch("delCurrentViews", {
|
|
|
- view: this.$route,
|
|
|
- $router: this.$router,
|
|
|
- });
|
|
|
- this.$router.push({ name: "order" });
|
|
|
+ this.$refs["ruleForm"].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ this.btnType = true;
|
|
|
+ const params = this.MixinClone(this.deliveryForms);
|
|
|
+ //发货详细地址
|
|
|
+ params.receiver.province_city_area_address =
|
|
|
+ params.receiver.province_name +
|
|
|
+ params.receiver.city_name +
|
|
|
+ params.receiver.area_name +
|
|
|
+ params.receiver.address;
|
|
|
+ //收货详细地址
|
|
|
+ params.sender.province_city_area_address =
|
|
|
+ params.sender.province_name +
|
|
|
+ params.sender.city_name +
|
|
|
+ params.sender.area_name +
|
|
|
+ params.sender.address;
|
|
|
+ //商品信息
|
|
|
+ const item = {};
|
|
|
+ this.product_list.map((el) => {
|
|
|
+ item.goods_name = el.goods_vo.name;
|
|
|
+ /* item.goods_price = el.product_vo.price; */
|
|
|
+ item.quantity = el.num;
|
|
|
+ item.unit = el.product_vo.unit;
|
|
|
+ return params.goods_list.push(item);
|
|
|
+ });
|
|
|
+ params.goods_num = this.product_list.reduce(
|
|
|
+ (sum, e) => sum + Number(e.num || 0),
|
|
|
+ 0
|
|
|
+ );
|
|
|
+ params.total_weight = Number(params.total_weight);
|
|
|
+ params.total_volume = Number(params.total_volume);
|
|
|
+ params.declared_value = Number(params.declared_value);
|
|
|
+ //地址
|
|
|
+ params.send_address = this.send_address;
|
|
|
+ params.receive_address = this.receive_address;
|
|
|
+ params.order_code = this.id;
|
|
|
+ if (this.goodsExchangeAddForm.product_list.length == 0) {
|
|
|
+ return this.$message.error("请录入出库商品")
|
|
|
+ }
|
|
|
+ params.order_item_vos = this.goodsExchangeAddForm.product_list
|
|
|
+ API_order.outOrderSend(this.id, params).then((res) => {
|
|
|
+ this.$router.push({ name: "warehouseOut" });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$message.error("表单填写有误,请检查")
|
|
|
+ return false;
|
|
|
+ }
|
|
|
});
|
|
|
},
|
|
|
// 选择批次
|
|
@@ -912,13 +951,53 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
roBack2() {
|
|
|
- const { callback } = this.$route.params;
|
|
|
- if (typeof callback === "function") callback();
|
|
|
- this.$store.dispatch("delCurrentViews", {
|
|
|
- view: this.$route,
|
|
|
- $router: this.$router,
|
|
|
+ this.btnType = true;
|
|
|
+ const params = this.MixinClone(this.deliveryForms);
|
|
|
+ //发货详细地址
|
|
|
+ params.receiver.province_city_area_address =
|
|
|
+ params.receiver.province_name +
|
|
|
+ params.receiver.city_name +
|
|
|
+ params.receiver.area_name +
|
|
|
+ params.receiver.address;
|
|
|
+ //收货详细地址
|
|
|
+ params.sender.province_city_area_address =
|
|
|
+ params.sender.province_name +
|
|
|
+ params.sender.city_name +
|
|
|
+ params.sender.area_name +
|
|
|
+ params.sender.address;
|
|
|
+ //商品信息
|
|
|
+ const item = {};
|
|
|
+ this.product_list.map((el) => {
|
|
|
+ item.goods_name = el.goods_vo.name;
|
|
|
+ /* item.goods_price = el.product_vo.price; */
|
|
|
+ item.quantity = el.num;
|
|
|
+ item.unit = el.product_vo.unit;
|
|
|
+ return params.goods_list.push(item);
|
|
|
+ });
|
|
|
+ params.goods_num = this.product_list.reduce(
|
|
|
+ (sum, e) => sum + Number(e.num || 0),
|
|
|
+ 0
|
|
|
+ );
|
|
|
+ params.total_weight = Number(params.total_weight);
|
|
|
+ params.total_volume = Number(params.total_volume);
|
|
|
+ params.declared_value = Number(params.declared_value);
|
|
|
+ //地址
|
|
|
+ params.send_address = this.send_address;
|
|
|
+ params.receive_address = this.receive_address;
|
|
|
+ params.order_code = this.id;
|
|
|
+ params.order_item_vos = this.goodsExchangeAddForm.product_list
|
|
|
+ API_order.saveOrderSend(this.id, params).then((res) => {
|
|
|
+ this.$router.push({ name: "warehouseOut" });
|
|
|
});
|
|
|
- this.$router.push({ name: "warehouseOut" });
|
|
|
+ /* const { callback } = this.$route.params;
|
|
|
+ if (typeof callback === "function") callback();
|
|
|
+ this.$store.dispatch("delCurrentViews", {
|
|
|
+ view: this.$route,
|
|
|
+ $router: this.$router,
|
|
|
+ });
|
|
|
+ this.$router.push({ name: "warehouseOut" }); */
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
roBack() {
|
|
|
const { callback } = this.$route.params;
|
|
@@ -934,8 +1013,14 @@ export default {
|
|
|
API_order.getSendOrderDetail(this.id).then((res) => {
|
|
|
res.product_list = res.order_item_vos;
|
|
|
this.product_list = res.order_item_vos;
|
|
|
- this.selectedOptions = res.warehouse_vo.ware_pro_city_area.split(",")
|
|
|
- this.receiverOptions = res.order_vo.province_city_area.split(",");
|
|
|
+ this.deliveryForms.send_type = res.order_vo.send_type
|
|
|
+ this.deliveryForms.selfPickupNum = res.self_pickup_num
|
|
|
+ if (res.warehouse_vo && res.warehouse_vo.ware_pro_city_area) {
|
|
|
+ this.selectedOptions = res.warehouse_vo.ware_pro_city_area.split(",");
|
|
|
+ }
|
|
|
+ if (res.order_vo && res.order_vo.province_city_area) {
|
|
|
+ this.receiverOptions = res.order_vo.province_city_area.split(",");
|
|
|
+ }
|
|
|
if (this.outType !== undefined || res.kdn_order_code !== undefined) {
|
|
|
this.goodsExchangeAddForm.product_list = res.order_item_vos
|
|
|
this.disabledType = true;
|
|
@@ -991,12 +1076,19 @@ export default {
|
|
|
|
|
|
}
|
|
|
res.order_item_vos.map((el) => {
|
|
|
+ el.orderNum = el.num
|
|
|
+ el.num = 0
|
|
|
+ if(!el.sn_code_list){
|
|
|
+ el.sn_code_list = []
|
|
|
+ }
|
|
|
+
|
|
|
this.deliveryForms.total_weight = Number(
|
|
|
el.product_vo.weight * el.num
|
|
|
);
|
|
|
});
|
|
|
this.deliveryForms.warehouse_id = res.warehouse_id
|
|
|
this.deliveryForms.declared_value = Number(res.order_vo.real_price);
|
|
|
+ this.goodsExchangeAddForm.product_list = res.order_item_vos
|
|
|
/* if (res.send_address && res.receiver_address) {
|
|
|
this.selectedOptions = res.send_address.split(",");
|
|
|
this.receiverOptions = res.receive_address.split(",");
|
|
@@ -1083,7 +1175,12 @@ export default {
|
|
|
.order-item {
|
|
|
margin-top: 30px;
|
|
|
}
|
|
|
-
|
|
|
+.sn-code-container {
|
|
|
+ max-height: 100px;
|
|
|
+ /* 设置最大高度,超过这个高度将显示滚动条 */
|
|
|
+ overflow-y: auto;
|
|
|
+ /* 垂直方向上溢出时显示滚动条 */
|
|
|
+}
|
|
|
.footer {
|
|
|
width: 100%;
|
|
|
padding: 10px;
|