Commit b8695a51 authored by dragondean@qq.com's avatar dragondean@qq.com
parents 1ea531c3 c3ac3e4f
......@@ -62,3 +62,11 @@ export function getTaskListByProcessInstanceId(processInstanceId) {
method: 'get',
})
}
export function taskTodoCount(){
return request(
{
url:'/bpm/task/todo-count',
method:'get'
}
)
}
......@@ -52,3 +52,12 @@ export function exportboxExcel(query) {
responseType: 'blob'
})
}
// 创建费用登记
export function createCost(data) {
return request({
url: '/ecw/box-cost/create',
method: 'post',
data: data
})
}
......@@ -334,6 +334,21 @@ export function approvalCreate(data) {
});
}
/**
* 异常登记
*
* @export
* @param {*} data
* @return {*}
*/
export function abnormalCreate(data) {
return request({
url: "/ecw/box-abnormal/create",
method: "post",
data,
});
}
/***************************** 预装 start **********************************/
/**
......@@ -521,6 +536,70 @@ export function boxUpdate(data) {
/***************************** 装柜 end **********************************/
/***************************** 卸柜 start **********************************/
/**
* 获取卸柜数据
*
* @export
* @param {*} data
* @return {*}
*/
export function loadGoodsList(params) {
return request({
url: "/ecw/box-preload-goods/loadGoodsList",
method: "get",
params,
});
}
/**
* 批量卸柜
*
* @export
* @param {*} data
* @return {*}
*/
export function batchUnload(data) {
return request({
url: "/ecw/box-load-info/batchUnload",
method: "post",
data,
});
}
/**
* 一键卸柜
*
* @export
* @param {*} data
* @return {*}
*/
export function allUnload(data) {
return request({
url: "/ecw/box-load-info/allUnload",
method: "post",
data,
});
}
/**
* 异常
*
* @export
* @param {*} data
* @return {*}
*/
export function createError(data) {
return request({
url: "/ecw/box-cabinet-unload-abnormal/create",
method: "post",
data,
});
}
/***************************** 卸柜 end **********************************/
/**
* 服务提示消息回调
*
......
......@@ -295,3 +295,10 @@ export function getCargoControlOrderPage(params){
data
})
}
export function listByOrderId(params){
return request({
url:'/order/location/list-by-order-id',
method:'get',
params,
})
}
import request from '@/utils/request'
// 创建
// 创建
export function createWarehouseAreaPosition(data) {
return request({
url: '/ecw/warehouse-area-position/create',
......@@ -9,7 +9,7 @@ export function createWarehouseAreaPosition(data) {
})
}
// 更新
// 更新
export function updateWarehouseAreaPosition(data) {
return request({
url: '/ecw/warehouse-area-position/update',
......@@ -18,7 +18,7 @@ export function updateWarehouseAreaPosition(data) {
})
}
// 删除
// 删除
export function deleteWarehouseAreaPosition(id) {
return request({
url: '/ecw/warehouse-area-position/delete?id=' + id,
......@@ -26,7 +26,7 @@ export function deleteWarehouseAreaPosition(id) {
})
}
// 获得
// 获得
export function getWarehouseAreaPosition(id) {
return request({
url: '/ecw/warehouse-area-position/get?id=' + id,
......@@ -34,7 +34,7 @@ export function getWarehouseAreaPosition(id) {
})
}
// 获得位分页
// 获得位分页
export function getWarehouseAreaPositionPage(query) {
return request({
url: '/ecw/warehouse-area-position/page',
......@@ -43,7 +43,7 @@ export function getWarehouseAreaPositionPage(query) {
})
}
// 导出位 Excel
// 导出位 Excel
export function exportWarehouseAreaPositionExcel(query) {
return request({
url: '/ecw/warehouse-area-position/export-excel',
......
<template>
<div class="component-upload-image">
<div style="display: flex;flex-wrap: wrap ">
<div v-for="(item, index) in fileList " :key="index" style="height: 148px; width:148px; border:1px solid;margin:5px 10px">
<el-image style="height: 148px; width:148px;" fit="fit" :src="item.url">
<div v-for="(item, index) in fileList " :key="index" style="height: 148px; width:148px; margin:5px 10px;position: relative;box-sizing: border-box;">
<el-image @click="dialogImageUrl = item.url; dialogVisible = true; " style="height: 148px; width:148px;" fit="fit" :src="item.url">
<video controls width="148px" height="148px" slot="error" :src="item.url" ></video>
</el-image>
<div @click="handleRemove(index)" class="el-icon-error" style="font-size: 25px;cursor: pointer;position: absolute;right: -10px; top: -10px" ></div>
</div>
<div>
<el-upload
......@@ -15,7 +16,6 @@
:before-upload="handleBeforeUpload"
:on-error="handleUploadError"
name="file"
:on-remove="handleRemove"
:show-file-list="false"
:headers="headers"
:on-preview="handlePictureCardPreview"
......@@ -79,7 +79,7 @@ export default {
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: []
fileList: [],
};
},
watch: {
......@@ -105,7 +105,8 @@ export default {
}
},
deep: true,
immediate: true
immediate: true,
}
},
computed: {
......@@ -116,12 +117,10 @@ export default {
},
methods: {
// 删除图片
handleRemove(file, fileList) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if(findex > -1) {
this.fileList.splice(findex, 1);
handleRemove(index) {
this.fileList.splice(index, 1);
this.$emit("input", this.listToString(this.fileList));
}
},
// 上传成功回调
handleUploadSuccess(res) {
......@@ -202,6 +201,7 @@ export default {
opacity: 0;
transform: translateY(0);
}
</style>
......@@ -7,8 +7,11 @@
<div class="right-menu">
<template v-if="device!=='mobile'">
<el-badge :value="matterNum !== 0 ? matterNum : '' " class="right-menu-item badge">
<div @click="$router.push('/bpm/task/todo')" style="font-size: 28px; color: #cccccc;cursor: pointer;" class="el-icon-postcard"></div>
</el-badge>
<el-badge :value="notMessage" class="right-menu-item badge">
<el-badge :value="notMessage !== 0 ? notMessage : '' " class="right-menu-item badge">
<el-image style="width: 22px;height: 20px;cursor: pointer;" :src="unreadMessage" @click="notRead"></el-image>
</el-badge>
......@@ -81,6 +84,7 @@ export default {
},
created() {
this.$store.dispatch('getNotMessage');
this.$store.dispatch('getToDoList');
},
components: {
Breadcrumb,
......@@ -116,7 +120,11 @@ export default {
},
notMessage(){
return this.$store.state.user.notMessage
},
matterNum(){
return this.$store.state.user.matterNum
}
},
methods: {
toggleSideBar() {
......
import {login, logout, getInfo, socialLogin, socialLogin2} from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import {getNotReadInternalMessageTotal} from '@/api/system/internalMessage'
import {getNotReadInternalMessageTotal,} from '@/api/system/internalMessage'
import {taskTodoCount} from "@/api/bpm/task";
const user = {
state: {
......@@ -11,6 +12,7 @@ const user = {
roles: [],
permissions: [],
notMessage:0,
matterNum:0
},
mutations: {
......@@ -34,6 +36,9 @@ const user = {
},
NOt_MESSAGE:(state, notMessage)=>{
state.notMessage = notMessage;
},
GET_MAATER:(state, matterNum) => {
state.matterNum = matterNum;
}
},
......@@ -163,6 +168,17 @@ const user = {
})
})
},
//获取待办事项
getToDoList({commit}){
return new Promise((resolve,reject) =>{
taskTodoCount().then(r => {
commit('GET_MAATER',r.data)
resolve()
}).catch(err => {
reject(err)
})
})
}
}
}
......
......@@ -147,7 +147,7 @@ export const DICT_TYPE = {
ORDER_ERROR_TYPE:'order_error_type',//订单异常类型
ORDER_EXCEPTION_STATUS:'order_exception_status',//异常订单状态
PAYMENT_TYPE:'payment_type',//收款类型
WAREHOUSE_IN_STATUS: 'warehouse_in_status', // 入仓状态
ORDER_WAREHOUSE_IN_STATUS: 'order_warehouse_in_status', // 入仓状态
ECASH_INIT:'ecash_init', //e-cash
FEE_TYPE:'receivable_fee_type',
......@@ -162,6 +162,10 @@ export const DICT_TYPE = {
BOX_SHIPPING_CUSTOMS_TYPE: 'shipping_customs_type', // 报关方式
BOX_SHIPPING_DCCUSTOMS_STATUS: 'shipping_dcCustoms_status', // 报关放行状态
BOX_SHIPPING_CHECK_STATUS: 'shipping_check_status', // 查验状态
BOX_SHIPPING_UNLOADING_ERROR: 'shipping_unloading_error', // 卸柜异常类型
BOX_SHIPPING_PRICE_UNIT: 'shipping_price_unit', // 金额单位
BOX_SHIPPING_TICKET_EXCEPTION: 'shipping_ticket_exception', // 票异常
BOX_SHIPPING_PROCESS: 'shipping_process', // 海运出货流程
}
/**
......
......@@ -154,6 +154,11 @@ export default {
specialDiscount,
warehouseDetails
},
computed:{
matterNum(){
return this.$store.state.user.matterNum
}
},
data() {
return {
// 遮罩层
......@@ -390,11 +395,15 @@ export default {
}
if (pass) {
approveTask(data).then(response => {
let p = this.matterNum
this.$store.commit('GET_MAATER', --p)
this.$modal.msgSuccess("审批通过成功!");
this.getDetail(); // 获得最新详情
});
} else {
rejectTask(data).then(response => {
let p = this.matterNum
this.$store.commit('GET_MAATER', --p)
this.$modal.msgSuccess("审批不通过成功!");
this.getDetail(); // 获得最新详情
});
......@@ -417,6 +426,8 @@ export default {
}
updateTaskAssignee(this.updateAssignee.form).then(response => {
this.$modal.msgSuccess("转派任务成功!");
let p = this.matterNum
this.$store.commit('GET_MAATER', --p)
this.updateAssignee.open = false;
this.getDetail(); // 获得最新详情
});
......
......@@ -76,8 +76,8 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:banner-pop:update']">修改</el-button> -->
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:banner-pop:update']">修改</el-button>
<el-button size="mini" type="text" @click="handleStatus(scope.row)"
v-hasPermi="['ecw:banner-pop:update']">{{scope.row.status == CommonStatusEnum.ENABLE ? '禁用' : '启用'}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
......
<template>
<div class="app-costForm">
<el-form ref="costForm" :model="costObj" label-width="80px">
<el-form-item label="操作步骤">
<el-select v-model="costObj.opStepType" placeholder="请选择操作步骤">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_PROCESS)" :key="type.value" :label="type.label" :value="type.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="费用类型">
<el-select v-model="costObj.costType" placeholder="请选择费用类型">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.FEE_TYPE)" :key="type.value" :label="type.label" :value="type.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="供应商">
<el-select v-model="costObj.supplierId" placeholder="请选择供应商">
<el-option v-for="supplier in allSupplier" :key="supplier.id" :label="supplier.companyZh" :value="supplier.id"></el-option>
</el-select>
</el-form-item>
<el-row class="two-element">
<el-form-item label="金额">
<el-input-number v-model="costObj.price" controls-position="right" :min="1"></el-input-number>
</el-form-item>
<el-form-item label="" label-width="0px">
<el-select v-model="costObj.priceUnit" placeholder="请选择单位">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_PRICE_UNIT)" :key="type.value" :label="type.label" :value="type.value"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-form-item label="备注">
<el-input v-model="costObj.remarks" type="textarea" rows="2" placeholder="请输入备注"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="operate-button">
<el-button type="primary" @click="submit">确定</el-button>
<el-button @click="$emit('closeDialog')">取消</el-button>
</div>
</div>
</template>
<script>
import { getSupplierPage } from "@/api/ecw/supplier";
import { createCost } from "@/api/ecw/box";
import { serviceMsg } from "@/api/ecw/boxSea";
export default {
name: "costForm",
inheritAttrs: false,
data() {
return {
// 费用登记对象
costObj: {},
// 供应商
allSupplier: [],
};
},
created() {
// 供应商
getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allSupplier = data.list;
});
},
methods: {
submit() {
this.$refs["costForm"].validate((valid) => {
if (valid) {
createCost({
shipmentId: this.$attrs.currRow.id,
...this.costObj,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog");
});
});
}
});
},
},
};
</script>
<style lang="scss">
// 海运操作统一弹窗样式
.app-costForm {
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
text-align: center;
}
.two-element {
display: flex;
> :last-child {
width: 100%;
margin-left: 10px;
}
}
}
</style>
......@@ -108,12 +108,6 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<!-- <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
v-hasPermi="['shipment:box:query']">查看</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['shipment:box:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['shipment:box:delete']">删除</el-button> -->
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)">
<el-button type="primary">
操作<i class="el-icon-arrow-down el-icon--right"></i>
......@@ -134,7 +128,8 @@
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<template v-if="dialogType === 'edit' || dialogType === 'add'">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="运输方式" prop="transportType">
......@@ -166,6 +161,10 @@
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</template>
<template v-if="dialogType === 'cost'">
<costForm v-if="open" @closeDialog="closeDialog" :currRow="currRow"/>
</template>
</el-dialog>
</div>
</template>
......@@ -175,10 +174,13 @@
import {getCabinetPage} from "@/api/ecw/cabinet";
import { getWarehouseList } from "@/api/ecw/warehouse"
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import costForm from './costForm.vue'
export default {
name: "box",
components: {},
components: {
costForm
},
data() {
return {
dateTypes:[
......@@ -203,6 +205,10 @@
list: [],
// 弹出层标题
title: "",
// 弹出类型
dialogType: "",
// 当前行
currRow: {},
// 是否显示弹出层
open: false,
dateRangeCreateTime: [],
......@@ -316,6 +322,7 @@
this.reset();
this.open = true;
this.title = "添加出货";
this.dialogType = "add";
},
/** 修改按钮操作 */
handleUpdate(row) {
......@@ -325,6 +332,7 @@
this.form = response.data;
this.open = true;
this.title = "修改出货";
this.dialogType = "edit";
});
},
/** 提交按钮 */
......@@ -379,6 +387,16 @@
}).catch(() => {
});
},
closeDialog() {
this.open = false;
},
/* 费用登记 */
createCost(row) {
this.title = '费用登记'
this.dialogType = 'cost';
this.open = true;
this.currRow = row;
},
/** 查看按钮操作 */
handleCommand(row, command) {
switch (command) {
......@@ -393,6 +411,10 @@
case 'delete':
this.handleDelete(row);
break;
case 'cost':
this.createCost(row);
break;
}
},
}
......
......@@ -24,7 +24,7 @@
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="票异常" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<regError @closeDialog="dialogVisible = false" />
<regError @closeDialog="dialogVisible = false" v-bind="$attrs" />
</el-dialog>
</div>
</template>
......
......@@ -37,7 +37,7 @@
<script>
import startPacking from "./startPacking.vue";
import { cabinetCreate, serviceMsg, approvalCreate } from "@/api/ecw/boxSea";
import { cabinetCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatDateStr } from "../../utils";
import ImageUpload from "@/components/ImageUpload";
......
......@@ -38,7 +38,7 @@
<!-- 表格 -->
<el-row class="table-content">
<el-table :data="tableData.sectionOrderList">
<el-table :data="tableData.sectionOrderList" border>
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope">
......@@ -48,7 +48,7 @@
<el-table-column label="货物信息" align="center" prop="goodsList">
<template slot-scope="scope">
<section class="table-goodList">
<div v-for="item in scope.row.goodsList" :key="item.orderId" class="goodList-div">
<div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
<p>品名:{{item.prodTitleZh}}</p>
<p>品牌:【
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
......@@ -82,7 +82,7 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview">移出</el-button>
<el-button type="text" size="small" disabled>拆单</el-button>
<!-- <el-button type="text" size="small" disabled>拆单</el-button> -->
</template>
</el-table-column>
</el-table>
......@@ -139,12 +139,10 @@
<el-option v-for="warehouse in $attrs.warehouseList" :key="warehouse.id" :label="warehouse.titleZh" :value="warehouse.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="预计时间" prop="estimatedTime">
<el-date-picker type="date" placeholder="请选择日期" v-model="modifyCabinetObj.estimatedTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="预计时间">{{preinstallDate}}</el-form-item>
<el-form-item label="选择柜型" prop="cabinetId">
<el-select v-model="modifyCabinetObj.cabinetId" placeholder="请选择柜型">
<el-option v-for="item in cabinetList" :label="item.name" :value="item.name" :key="item.id"></el-option>
<el-option v-for="item in cabinetList" :label="item.name" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="柜号">
......@@ -197,6 +195,7 @@
</template>
<script>
import dayjs from "dayjs";
import supplementOrder from "./supplementOrder.vue";
import { getCabinetPage } from "@/api/ecw/cabinet";
import {
......@@ -259,7 +258,6 @@ export default {
startWarehouseId: [
{ required: true, message: "必填", trigger: "change" },
],
estimatedTime: [{ required: true, message: "必填", trigger: "change" }],
cabinetId: [{ required: true, message: "必填", trigger: "change" }],
qrCode: [{ required: true, message: "必填", trigger: "change" }],
orderNo: [{ required: true, message: "必填", trigger: "change" }],
......@@ -378,7 +376,7 @@ export default {
};
if (type === "single") {
if (!this.qrCode) {
this.$message.warning("请输入二维码/条码编号");
this.$message.error("请输入二维码/条码编号");
return;
}
params.orderNumCode = this.qrCode;
......@@ -426,6 +424,7 @@ export default {
};
boxUpdate(params).then((res) => {
serviceMsg(res, this);
this.closeDialog();
});
},
/* 补单完成 */
......@@ -438,7 +437,7 @@ export default {
approvalCreate({
shipmentId: this.shipmentObj.id,
approvalStatus: 0,
approvalType: 2,
approvalType: 2, // 封柜
}).then((res) => {
serviceMsg(res, this);
});
......@@ -470,7 +469,14 @@ export default {
/* 是否审核中 */
isUnderReview() {
const { currNode } = this.$attrs;
this.shipmentObj[currNode.keyName] === 44 ? true : false;
return this.shipmentObj[currNode.keyName] === 44 ? true : false;
},
/* 预计时间 */
preinstallDate() {
if (this.shipmentObj.yzDate) {
return dayjs(this.shipmentObj.yzDate).format("YYYY-MM-DD HH:mm:ss");
}
return null;
},
},
};
......
......@@ -84,7 +84,7 @@
</el-row>
<el-collapse-transition>
<div v-show="!item.fold">
<el-table :data="item.orderItemList" border>
<el-table v-loading="loading" :data="item.orderItemList" border>
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="品名" align="center" prop="prodTitleZh" min-width="500" />
<el-table-column label="品牌" align="center" prop="brandType" width="120">
......@@ -147,7 +147,7 @@ import {
deleteSection,
serviceMsg,
createGoods,
deleteGoods,
remove,
} from "@/api/ecw/boxSea";
/**
* 补单
......@@ -173,6 +173,7 @@ export default {
// 待预装
toBePreList: [],
total: 0,
loading: false,
};
},
created() {
......@@ -204,6 +205,7 @@ export default {
},
/* 查询待预装 */
getPreLoad() {
this.loading = true;
// 处理查询参数
let params = {
...this.queryParams,
......@@ -211,13 +213,17 @@ export default {
preloadPage({ ...params, ...this.pageParam }).then((res) => {
this.toBePreList = res.data.list;
this.total = res.data.total;
this.loading = false;
});
},
/* 删除订单 */
deleteOrder(data) {
let ids = [data.orderItemId];
deleteGoods(ids).then((res) => {
let params = {
secId: this.partData.id,
shipmentId: this.$attrs.shipmentObj.id,
orderId: data.orderId,
};
remove(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
......
......@@ -20,7 +20,7 @@
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="票异常" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<regError @closeDialog="dialogVisible = false" />
<regError @closeDialog="dialogVisible = false" v-bind="$attrs" />
</el-dialog>
</div>
</template>
......
......@@ -24,7 +24,7 @@
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="票异常" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<regError @closeDialog="dialogVisible = false" />
<regError @closeDialog="dialogVisible = false" v-bind="$attrs" />
</el-dialog>
</div>
</template>
......
......@@ -401,7 +401,7 @@ export default {
...this.operatorData,
shipmentId: this.$attrs.shipmentObj.id,
approvalStatus: 0,
approvalType: 1,
approvalType: 1, // 预装
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
......@@ -503,7 +503,7 @@ export default {
if (type === "selected") {
const rows = this.selectedRows[data.id] ?? [];
if (!rows.length) {
this.$message.warning("请选择订单");
this.$message.error("请选择订单");
return;
}
ids = rows.map((item) => item.orderItemId);
......
......@@ -35,8 +35,8 @@ export default {
approvalCreate({
shipmentId: this.$attrs.shipmentObj.id,
...this.reviewObj,
approvalStatus: -1,
approvalType: 4,
approvalStatus: 0,
approvalType: 4, // 预装反审
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
......
......@@ -2,30 +2,32 @@
<div>
<el-form ref="errorForm" :model="errorObj" label-width="140px">
<el-form-item label="操作步骤">
<el-select v-model="errorObj.step" placeholder="请选择操作步骤">
<el-select v-model="errorObj.opStep" placeholder="请选择操作步骤">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_PROCESS)" :key="type.value" :label="type.label" :value="type.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="票异常">
<el-select v-model="errorObj.ticketError" placeholder="请选择票异常">
<el-select v-model="errorObj.billAbnId" placeholder="请选择票异常">
<el-option v-for="type in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_TICKET_EXCEPTION)" :key="type.value" :label="type.label" :value="type.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="异常情况">
<el-input v-model="errorObj.description" type="textarea" rows="2" placeholder="请输入异常情况"></el-input>
<el-input v-model="errorObj.abnDetail" type="textarea" rows="2" placeholder="请输入异常情况"></el-input>
</el-form-item>
<el-form-item label="异常时间" prop="arrivalTime" class="two-element">
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.errorStart" value-format="yyyy-MM-dd"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.errorend" value-format="yyyy-MM-dd"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnStartTime" value-format="yyyy-MM-dd"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnEndTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="是否更新订单状态">
<el-radio-group v-model="errorObj.updateOrder">
<el-radio-group v-model="errorObj.orderStatus">
<el-radio v-for="item in status" :key="item.value" :label="item.value">{{item.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="中文内容">
<el-input v-model="errorObj.chContent" type="textarea" rows="2" placeholder="请输入中文内容"></el-input>
<el-input v-model="errorObj.contentZh" type="textarea" rows="2" placeholder="请输入中文内容"></el-input>
</el-form-item>
<el-form-item label="英文内容">
<el-input v-model="errorObj.enContent" type="textarea" rows="2" placeholder="请输入英文内容"></el-input>
<el-input v-model="errorObj.contentEn" type="textarea" rows="2" placeholder="请输入英文内容"></el-input>
</el-form-item>
</el-form>
......@@ -37,6 +39,7 @@
</template>
<script>
import { abnormalCreate, serviceMsg } from "@/api/ecw/boxSea";
/**
* 异常登记
*/
......@@ -60,13 +63,23 @@ export default {
],
};
},
watch: {},
created() {
const { currNode } = this.$attrs;
this.errorObj = { opStep: currNode.dataKey };
},
methods: {
/** 提交 */
onSubmit() {
this.$refs["errorForm"].validate((valid) => {
if (valid) {
alert("submit!");
abnormalCreate({
...this.errorObj,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog");
});
});
}
});
},
......
......@@ -35,7 +35,7 @@
<el-form-item label="包装数量与单位" class="two-element">
<el-input v-model="subMaterialObj.packageNum" placeholder="请输入包装数量"></el-input>
<el-select v-model="subMaterialObj.packageUnit" placeholder="请选择单位">
<el-option v-for="unit in units" :key="unit.id" :value="unit.fuhao">{{unit.titleZh}}</el-option>
<el-option v-for="unit in units" :key="unit.id" :value="unit.id" :label="unit.titleZh"></el-option>
</el-select>
</el-form-item>
<el-form-item label="毛重(KGS)">
......
......@@ -20,8 +20,8 @@
</el-row>
<!-- 开始卸柜 -->
<el-dialog title="开始卸柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body destroy-on-close>
<startUnloading />
<el-dialog title="开始卸柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body>
<startUnloading v-if="dialogVisible" v-bind="$attrs" @closeStart="closeStart" />
</el-dialog>
</div>
</template>
......@@ -62,7 +62,7 @@ export default {
const { keyName } = this.$attrs.currNode;
const ulStatus = this.$attrs.shipmentObj[keyName];
if (ulStatus !== 145) {
this.$message.warning("请先通过卸柜审批");
this.$message.error("请先通过卸柜审批");
return;
}
}
......@@ -82,6 +82,10 @@ export default {
cancel(type) {
this.$emit("closeDialog", type);
},
/* 关闭弹窗 */
closeStart() {
this.dialogVisible = false;
},
// 开始卸柜
startUnloading() {
this.dialogVisible = true;
......
......@@ -4,11 +4,11 @@
<!-- 自编号 -->
<el-row class="number-area">
<p class="label-font">自编号:</p>
<p class="label-font">CNG2510</p>
<p class="label-font">{{selfNo}}</p>
<el-input v-model="labelNo" placeholder="请输入标签号"></el-input>
<div>
<el-button>批量输入</el-button>
<el-button>一键卸柜</el-button>
<el-button type="primary" @click="modifyBatchUnload">批量输入</el-button>
<el-button type="primary" @click="modifyAllUnload">一键卸柜</el-button>
</div>
</el-row>
......@@ -25,24 +25,33 @@
</el-row>
<!-- 表格 -->
<el-row>
<el-table v-loading="loading" :data="list">
<el-table-column label="序号" type="index" width="50" />
<!-- <el-table-column label="订单号" align="center" prop="selfNo">
<el-row class="table-area">
<el-table v-loading="loading" :data="pageData.sectionOrderList" border>
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope">
<a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.selfNo }}</a>
<a href="javascript:void(0);" class="order-href">{{ scope.row.orderNo }}</a>
</template>
</el-table-column>
<el-table-column label="商品信息" align="center" prop="goodsList">
<template slot-scope="scope">
<section class="table-goodList">
<div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
<p>{{index+1}}{{item.prodTitleZh}}</p>
</div>
</section>
</template>
</el-table-column> -->
<el-table-column label="订单号" align="center" prop="cubNo" />
<el-table-column label="商品信息" align="center" prop="cubNo" />
<el-table-column label="实装箱数" align="center" prop="cabinetId" />
<el-table-column label="卸柜箱数" align="center" prop="transportType" />
<el-table-column label="清关状态" align="center" prop="squareNumber" />
<el-table-column label="体积" align="center" prop="weight" />
</el-table-column>
<el-table-column label="实装箱数" align="center" prop="installNum" />
<el-table-column label="卸柜箱数" align="center" prop="unloadNum" />
<el-table-column label="清关状态" align="center" prop="">
<template slot-scope="scope">{{clearStatus(scope.row)}}</template>
</el-table-column>
<el-table-column label="体积" align="center" prop="volume" />
<el-table-column label="重量" align="center" prop="weight" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="danger" size="small" @click="openError">异常</el-button>
<el-button type="danger" size="small" @click="openError(scope.row)">异常</el-button>
</template>
</el-table-column>
</el-table>
......@@ -50,40 +59,48 @@
<!-- 总计 -->
<el-row>
<div>
<div class="label-font">
<p>
<span>总计:</span>
<span>33箱子</span>
<span>10.83m3</span>
<span>210kg</span>
<span>{{pageData.totalStatistics ? pageData.totalStatistics.num : 0}}箱</span>
<span>{{pageData.totalStatistics ? pageData.totalStatistics.volume : 0}}m3</span>
<span>{{pageData.totalStatistics ? pageData.totalStatistics.weight : 0}}kg</span>
</p>
</div>
<div>
<div class="label-font">
<p>
<span>已卸:</span>
<span>16</span>
<span>0</span>
</p>
</div>
</el-row>
<el-row>
<el-button type="success">卸柜完成</el-button>
<el-button type="success" @click="onSubmit">卸柜完成</el-button>
</el-row>
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="异常" :visible.sync="dialogVisible" width="500px" :modal-append-to-body=false append-to-body destroy-on-close>
<unloadingError @closeDialog="dialogVisible = false" />
<el-dialog custom-class="shipping-dialog" title="异常" :visible.sync="dialogVisible" width="600px" :modal-append-to-body=false append-to-body>
<unloadingError v-if="dialogVisible" @closeDialog="closeDialog" v-bind="$attrs" :currRow="currRow" />
</el-dialog>
</div>
</template>
<script>
import unloadingError from "./unloadingError.vue";
import {
loadGoodsList,
batchUnload,
allUnload,
approvalCreate,
serviceMsg,
} from "@/api/ecw/boxSea";
/**
* 开始卸柜
*/
export default {
name: "startUnloading",
inheritAttrs: false,
components: { unloadingError },
data() {
return {
......@@ -93,31 +110,102 @@ export default {
currPart: "",
// loading
loading: false,
// 表格数据
list: [{}],
// 页面数据
pageData: {},
// 弹窗配置
dialogVisible: false,
// 自编号
selfNo: this.$attrs.shipmentObj.selfNo,
// 当前行
currRow: {},
};
},
watch: {},
created() {
this.getLoadGoodsList();
},
methods: {
/* 获取卸柜数据 */
getLoadGoodsList(params) {
this.loading = true;
params = {
secId: 0,
...params,
shipmentId: this.$attrs.shipmentObj.id,
};
loadGoodsList(params).then((res) => {
const { data } = res;
this.pageData = data;
this.loading = false;
});
},
/* 批量输入 */
modifyBatchUnload() {
if (!this.labelNo) {
this.$message.error("请输入标签号");
return;
}
batchUnload({
orderNo: this.labelNo,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.getLoadGoodsList();
});
});
},
/* 一键卸柜 */
modifyAllUnload() {
this.$confirm("确认卸柜?", "提示", {
type: "warning",
})
.then((_) => {
allUnload({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
serviceMsg(res, this).then((res) => {
this.getLoadGoodsList();
});
});
})
.catch((_) => {});
},
/** 提交 */
onSubmit() {
this.$refs["unloadingForm"].validate((valid) => {
if (valid) {
// TODO 判断是否已经卸柜
this.$message.warning("请先通过卸柜审批");
}
approvalCreate({
shipmentId: this.$attrs.shipmentObj.id,
approvalStatus: 0,
approvalType: 3, // 卸柜
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel();
});
});
},
/** 取消 */
cancel() {
this.$emit("closeDialog");
this.$emit("closeStart");
},
// 打开异常
openError() {
/* 关闭弹窗 */
closeDialog() {
this.dialogVisible = false;
this.getLoadGoodsList();
},
/* 打开异常 */
openError(row) {
this.currRow = row;
this.dialogVisible = true;
},
/* 清关状态 */
clearStatus(row) {
const { installNum, unloadNum } = row;
if (installNum === unloadNum) {
return "全部清关";
}
if (installNum >= unloadNum) {
return "部分清关";
}
if (unloadNum === 0) {
return "未清关";
}
},
},
};
</script>
......@@ -147,5 +235,19 @@ export default {
width: 200px;
}
}
.table-area {
.table-goodList {
.goodList-div {
> p {
text-align: left;
}
> p:last-child {
> span {
margin-right: 5px;
}
}
}
}
}
}
</style>
......@@ -2,18 +2,20 @@
<div>
<el-form ref="errorForm" :model="errorObj" label-width="100px">
<el-form-item label="异常">
<el-radio-group v-model="errorObj.errorStatus">
<el-radio-group v-model="errorObj.exceptionType ">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_UNLOADING_ERROR)" :key="item.value" :label="item.value">{{item.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="品名">
<el-select v-model="errorObj.goodName" placeholder="请选择品名">
<el-select v-model="errorObj.productId" placeholder="请选择品名">
<el-option v-for="(item, index) in goodsList" :key="index" :value="item.orderItemId" :label="item.prodTitleZh"></el-option>
</el-select>
</el-form-item>
<el-form-item label="件数">
<el-input-number v-model="errorObj.pieces" controls-position="right" :min="1"></el-input-number>
<el-input-number v-model="errorObj.productNum" controls-position="right" :min="1"></el-input-number>
</el-form-item>
<el-form-item label="异常详情">
<el-input v-model="errorObj.details" type="textarea" rows="2" placeholder="请输入异常详情"></el-input>
<el-input v-model="errorObj.exceptionDetail" type="textarea" rows="2" placeholder="请输入异常详情"></el-input>
</el-form-item>
</el-form>
......@@ -25,15 +27,21 @@
</template>
<script>
import { createError, serviceMsg } from "@/api/ecw/boxSea";
/**
* 卸柜异常
*/
export default {
name: "unloadingError",
inheritAttrs: false,
data() {
const { currRow } = this.$attrs;
return {
// 异常对象
errorObj: {},
// 品名
goodsList: currRow.goodsList ?? [],
};
},
methods: {
......@@ -41,7 +49,21 @@ export default {
onSubmit() {
this.$refs["errorForm"].validate((valid) => {
if (valid) {
alert("submit!");
const { productNum = 0 } = this.errorObj;
const { currRow } = this.$attrs;
if (productNum > currRow.installNum) {
this.$message.error("货物异常数量不能大于装柜数量");
return;
}
createError({
...this.errorObj,
orderId: this.$attrs.currRow.orderId,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.$emit("closeDialog");
});
});
}
});
},
......
......@@ -43,7 +43,7 @@ import { getWarehouseList } from "@/api/ecw/warehouse";
import { getSupplierPage } from "@/api/ecw/supplier";
import { getDockPage } from "@/api/ecw/dock";
import { listUser } from "@/api/system/user";
import { statusName, seaBaseData } from "./utils";
import { getStatusName, seaBaseData } from "./utils";
/**
* 海运操作主页面
......@@ -144,7 +144,7 @@ export default {
}
if (isBreak) break;
}
this.statusLabel = statusName.get(currNodeStatus);
this.statusLabel = getStatusName().get(currNodeStatus);
},
},
};
......@@ -161,7 +161,7 @@ export default {
}
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div {
> div:not(.el-input-number) {
width: 100%;
}
}
......
import dayjs from "dayjs";
const statusName = new Map();
function getStatusName() {
const statusName = new Map();
statusName.set(11, "未订舱");
statusName.set(12, "已订舱");
statusName.set(11, "未订舱");
statusName.set(12, "已订舱");
statusName.set(21, "未预装");
statusName.set(22, "预装审核中");
statusName.set(23, "预装审核失败");
statusName.set(24, "预装审核成功");
statusName.set(21, "未预装");
statusName.set(22, "预装审核中");
statusName.set(23, "预装审核失败");
statusName.set(24, "预装审核成功");
statusName.set(31, "未派车");
statusName.set(32, "已派车");
statusName.set(31, "未派车");
statusName.set(32, "已派车");
statusName.set(41, "未装柜");
statusName.set(42, "装柜中");
statusName.set(43, "已装柜、待封柜");
statusName.set(44, "封柜审核中");
statusName.set(45, "封柜审核失败");
statusName.set(46, "封柜审核成功");
statusName.set(41, "未装柜");
statusName.set(42, "装柜中");
statusName.set(43, "已装柜、待封柜");
statusName.set(44, "封柜审核中");
statusName.set(45, "封柜审核失败");
statusName.set(46, "封柜审核成功");
statusName.set(51, "未报关");
statusName.set(52, "报关中");
statusName.set(53, "已报关");
statusName.set(51, "未报关");
statusName.set(52, "报关中");
statusName.set(53, "已报关");
statusName.set(61, "未配船");
statusName.set(62, "已配船");
statusName.set(61, "未配船");
statusName.set(62, "已配船");
statusName.set(71, "未提单补料");
statusName.set(72, "已提单补料");
statusName.set(71, "未提单补料");
statusName.set(72, "已提单补料");
statusName.set(81, "未驳船");
statusName.set(82, "已驳船");
statusName.set(81, "未驳船");
statusName.set(82, "已驳船");
statusName.set(91, "未起运");
statusName.set(92, "已起运");
statusName.set(91, "未起运");
statusName.set(92, "已起运");
statusName.set(101, "未上传");
statusName.set(102, "已上传");
statusName.set(101, "未上传");
statusName.set(102, "已上传");
statusName.set(111, "未清关文件");
statusName.set(112, "已清关文件");
statusName.set(111, "未清关文件");
statusName.set(112, "已清关文件");
statusName.set(121, "未到港");
statusName.set(122, "已到港");
statusName.set(121, "未到港");
statusName.set(122, "已到港");
statusName.set(131, "未清关");
statusName.set(132, "已清关");
statusName.set(131, "未清关");
statusName.set(132, "已清关");
statusName.set(141, "未卸柜");
statusName.set(142, "卸柜中");
statusName.set(143, "卸柜审核中");
statusName.set(144, "卸柜审核失败");
statusName.set(145, "卸柜审核成功");
statusName.set(146, "已卸柜");
statusName.set(141, "未卸柜");
statusName.set(142, "卸柜中");
statusName.set(143, "卸柜审核中");
statusName.set(144, "卸柜审核失败");
statusName.set(145, "卸柜审核成功");
statusName.set(146, "已卸柜");
statusName.set(151, "未结算");
statusName.set(152, "结算中");
statusName.set(153, "已结算");
statusName.set(151, "未结算");
statusName.set(152, "结算中");
statusName.set(153, "已结算");
const seaBaseData = () => {
return statusName;
}
function seaBaseData() {
return [
[
{
......@@ -69,6 +73,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/dc-end.png"),
},
type: "booking", // 类型
dataKey: "1", // 字典数据键值
/**
* 订舱状态:11、未订舱;12、已订舱
*/
......@@ -90,6 +95,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/yz-end.png"),
},
type: "preinstall",
dataKey: "2", // 字典数据键值
/**
* 预装状态:21、未预装;22、预装审核中;23、预装审核失败;24、预装审核成功
*/
......@@ -109,6 +115,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/tc-end.png"),
},
type: "trailer",
dataKey: "3", // 字典数据键值
/**
* 拖车状态:31、未派车;32、已派车
*/
......@@ -141,6 +148,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/zg-end.png"),
},
type: "cabinet",
dataKey: "4", // 字典数据键值
/**
* 装柜状态:41、未装柜;42、装柜中;43、已装柜、待封柜;44、封柜审核中;45、封柜审核失败;46、封柜审核成功
*/
......@@ -162,10 +170,11 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/bg-end.png"),
},
type: "cusDeclaration",
voName: "customsInfo",
dataKey: "5", // 字典数据键值
/**
*报关状态:51、未报关;52、报关中;53、已报关
*/
voName: "customsInfo",
keyName: "dcStatus",
status: {
start: [51],
......@@ -181,6 +190,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/pc-end.png"),
},
type: "ship",
dataKey: "6", // 字典数据键值
/**
* 配船状态:61、未配船;62、已配船
*/
......@@ -200,6 +210,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/tdcl-end.png"),
},
type: "subMaterial",
dataKey: "7", // 字典数据键值
/**
* 提单补料状态:71、未提单补料;72、已提单补料
*/
......@@ -221,6 +232,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/bc-end.png"),
},
type: "barge",
dataKey: "8", // 字典数据键值
/**
* 驳船状态:81、未驳船;82、已驳船
*/
......@@ -242,6 +254,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/qy-end.png"),
},
type: "departure",
dataKey: "9", // 字典数据键值
/**
* 起运状态:91、未起运;92、已起运
*/
......@@ -263,6 +276,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/tdcopy-end.png"),
},
type: "blCopy",
dataKey: "10", // 字典数据键值
/**
* 提单COPY状态:101、未上传;102、已上传
*/
......@@ -282,6 +296,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/qg-end.png"),
},
title: "清关文件",
dataKey: "11", // 字典数据键值
/**
* 清关文件状态:111、未清关文件;112、已清关文件
*/
......@@ -303,6 +318,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/dg-end.png"),
},
type: "arrival",
dataKey: "12", // 字典数据键值
/**
* 到港状态:121、未到港;112、已到港
*/
......@@ -324,6 +340,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/qg-end.png"),
},
type: "cusClearance",
dataKey: "13", // 字典数据键值
/**
* 清关状态:131、未清关;132、已清关
*/
......@@ -345,6 +362,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/xg-end.png"),
},
type: "unloading",
dataKey: "14", // 字典数据键值
/**
* 卸柜状态:141、未卸柜;142、卸柜中;143、卸柜审核中;144、卸柜审核失败;145、卸柜审核成功;146、已卸柜
*/
......@@ -366,6 +384,7 @@ const seaBaseData = () => {
end: require("@/assets/images/shipping/js-end.png"),
},
type: "settlement",
dataKey: "15", // 字典数据键值
/**
* 结算状态:151、未结算;152、结算中;153、已结算
*/
......@@ -379,7 +398,7 @@ const seaBaseData = () => {
},
],
];
};
}
const constantDict = {
// 配船状态
......@@ -467,7 +486,7 @@ export const fileTypes = [
];
export {
statusName,
getStatusName,
seaBaseData,
constantDict,
formatStringNumber,
......
......@@ -174,6 +174,13 @@
</el-checkbox-group>
</el-form-item>
<el-form-item label="其他服务" prop="otherServiceList">
<el-checkbox-group v-model="form.otherServiceList">
<el-checkbox label="1">送货上门</el-checkbox>
<el-checkbox label="2">非控货订单代收货款</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="网点详情" prop="contentZh">
<editor v-model="form.contentZh" :min-height="150"/>
......@@ -267,6 +274,7 @@ export default {
// 表单参数
form: {
checkList:[],
otherServiceList:[],
},
// 表单校验
rules: {
......@@ -463,7 +471,8 @@ export default {
worktime: undefined,
adminId: undefined,
aorder: undefined,
checkList: []
checkList: [],
otherServiceList: []
};
this.resetForm("form");
......@@ -499,6 +508,9 @@ export default {
let ckList = response.data.freight.split(',');
this.$set(this.form, 'checkList', ckList);
let otherService = response.data.otherService.split(",");
this.$set(this.form, 'otherServiceList', otherService);
this.open = true;
this.title = "修改服务网点";
});
......@@ -518,6 +530,11 @@ export default {
freight = freight.substring(0, freight.length - 1);
this.form.freight = freight;
var otherService = this.form.otherServiceList.join(',');
this.form.otherService= otherService;
// console.log(otherService);
// return;
// 修改的提交
if (this.form.id != null) {
updateNode(this.form).then(response => {
......
......@@ -73,9 +73,11 @@
<el-descriptions style="margin-top: 20px" :column="4" border>
<el-descriptions-item label="集运仓库">{{ warehouseDetails.warehouseOutName }}</el-descriptions-item>
<el-descriptions-item label="储位">{{}}</el-descriptions-item>
<el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInId }}</el-descriptions-item>
<el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInName }}</el-descriptions-item>
<el-descriptions-item label="物流公司">
<el-input v-model="params.logisticsCompany"></el-input>
<el-select v-model="params.logisticsCompany" >
<el-option v-for="(item,index) in expressList " :key="index" :value="item.id" :label="item.companyZh"></el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item label="物流单号">
<el-input v-model="params.logisticsNo"></el-input>
......@@ -118,7 +120,7 @@
<script>
import ordeDetailsForm from "@/views/ecw/order/components/ordeDetailsForm";
import {
getOrder,
getOrder, listByOrderId,
orderWarehouseInGetAdjustInfo,
orderWarehousePicturePage, warehouseAdjustArrived, warehouseAdjustPage,
warehouseAdjustSendOut
......@@ -126,6 +128,7 @@ import {
import Template from "@/views/cms/template";
import {DICT_TYPE} from '@/utils/dict';
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index";
import {getSupplierPage} from "@/api/ecw/supplier";
let STATUS = {1:'审核中', 2:'已通过', 3:'已拒绝', 4:'已出仓', 5:'已到仓'}
export default {
name: "transferWarehousing",
......@@ -149,14 +152,19 @@ export default {
deliveryDate: "",
deliveryRemark: "",
id: undefined,
logisticsCompany: "",
logisticsCompany:undefined,
logisticsNo: "",
phone: "",
urls: []
}
},
expressList:[]
}
},
created() {
getSupplierPage({ pageNo: 1, pageSize: 10000}).then(r => {
this.expressList = r.data.list;
})
getOrder(this.orderId).then(r => {
if (r.code === 0) {
this.orderDetails = r.data;
......@@ -169,16 +177,19 @@ export default {
}
orderWarehouseInGetAdjustInfo({orderId: this.orderId, lang: 0}).then(r => {
this.warehouseDetails = r.data[0]
listByOrderId({orderId:this.orderId}).then(r => {
console.log(r,'r')
})
this.params.phone = this.warehouseDetails.phone;
this.params.logisticsNo = this.warehouseDetails.logisticsNo;
this.params.id = this.warehouseDetails.id;
this.params.deliveryDate = this.warehouseDetails.deliveryDate
this.params.logisticsCompany = this.warehouseDetails.logisticsCompany ? parseInt(this.warehouseDetails.logisticsCompany) :undefined;
orderWarehousePicturePage({rows:100,bizId:this.params.id,type:this.type == 1 ? 2 : 3 }).then(r => {
if(r.code === 0){
this.params.urls = r.data.list.map(e => e.url);
}
})
})
},
methods:{
......
......@@ -15,7 +15,6 @@
v-else v-model="form.brand"
placeholder="可修改"
filterable
@change="handleChangeBrand"
allow-create>
<el-option
v-for="item in brandList"
......@@ -205,13 +204,6 @@ export default {
},
methods: {
handleChangeBrand(b){
if (this.brandList.find(e => e.titleZh === b)){
this.isBeian = '有备案'
} else {
this.isBeian = '无备案'
}
},
handleSubmit() {
const orderWarehouseInItemDoList = this.form.orderWarehouseInItemDoList.map(e => {
return {
......
......@@ -56,7 +56,7 @@
prop="diffType"
v-slot="{row}"
label="状态">
<dict-tag :type="DICT_TYPE.WAREHOUSE_IN_STATUS" :value="row.warehouseInInfoVO.diffType" />
<dict-tag :type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS" :value="row.warehouseInInfoVO && row.warehouseInInfoVO.diffType" />
</el-table-column>
<el-table-column
prop="address"
......@@ -102,12 +102,14 @@
<div style="text-align: center">在完成入仓前,您还可以</div>
<div style="text-align: center;padding: 15px 0">
<el-button type="info" @click="areaVisible = true">选择储位</el-button>
<el-button type="info">打印标签</el-button>
<el-button type="info" @click="isShowPrint = true">打印标签</el-button>
</div>
<div style="text-align: center">
<el-button type="primary" @click="handleSubmit()">确 定</el-button>
</div>
</el-dialog>
<print-tag v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false"></print-tag>
</div>
</template>
......@@ -124,6 +126,7 @@ import orderBaseInfo from "@/components/OrderBaseInfo"
import WarehouseAreaDialog from '@/components/WarehouseAreaDialog'
import editDialog from '@/views/ecw/order/warehousing/components/editDialog'
import {DICT_TYPE} from "@/utils/dict"
import PrintTag from "@/views/ecw/order/components/PrintTag"
export default {
name: "Warehousing",
......@@ -131,7 +134,8 @@ export default {
components: {
orderBaseInfo,
WarehouseAreaDialog,
editDialog
editDialog,
PrintTag
},
mounted() {
......@@ -156,9 +160,11 @@ export default {
},
currencyList:[],
order: {},
orderId: undefined,
orderItemList: [],
specialList: [],
warehousing: undefined
warehousing: undefined,
isShowPrint: false
}
},
......
......@@ -41,6 +41,20 @@
<el-table v-loading="loading" :data="list">
<el-table-column label="仓库编号" align="center" prop="number" />
<el-table-column label="仓库名称" align="center" prop="titleZh" />
<el-table-column label="英文名称" align="center" prop="titleEn" />
<el-table-column label="贸易属性" align="center" prop="tradeType" >
<template slot-scope="scope">
<div>{{tradeTypeName(scope.row.tradeType)}}</div>
</template>
</el-table-column>
<el-table-column label="运输方式" align="center" prop="freight" >
<template slot-scope="scope">
<div>{{transportNames(scope.row.freight)}}</div>
</template>
</el-table-column>
<el-table-column label="仓库容量(m)³" align="center" prop="volume" />
<el-table-column label="仓库地址" align="center" prop="addressZh" />
......@@ -483,6 +497,30 @@ export default {
}
}
},
transportNames() {
return freight => {
let transportTypes = freight.split(",");
let names = [];
for(let index in transportTypes) {
let transportType = transportTypes[index];
let name = this.transportName(transportType);
names.push(name);
}
return names.join(',');
}
},
tradeTypeName() {
return tradeType => {
for(let index in this.regionTypeDatas) {
let regionTypeItem = this.regionTypeDatas[index];
if(regionTypeItem.value == tradeType) {
return regionTypeItem.label;
}
}
}
},
},
watch: {
......
......@@ -35,7 +35,7 @@
<el-button size="mini" type="text" @click="handleCreate(scope.row)" v-if="scope.row.pid==0"
v-hasPermi="['ecw:warehouse-area:create']">添加库区</el-button>
<el-button size="mini" type="text" @click="positionManager(scope.row)" v-if="scope.row.pid>0"
v-hasPermi="['ecw:warehouse-area:create']">查看</el-button>
v-hasPermi="['ecw:warehouse-area:create']">查看</el-button>
</template>
</el-table-column>
</el-table>
......
......@@ -4,8 +4,8 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="位代码" prop="code">
<el-input v-model="queryParams.code" placeholder="请输入位代码" clearable @keyup.enter.native="handleQuery"/>
<el-form-item label="位代码" prop="code">
<el-input v-model="queryParams.code" placeholder="请输入位代码" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
......@@ -18,7 +18,7 @@
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['ecw:warehouse-area-position:create']">新增</el-button>
v-hasPermi="['ecw:warehouse-area-position:create']">新增</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
......@@ -26,7 +26,7 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list" row-key="id" default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
<el-table-column label="位代码" align="center" prop="code" />
<el-table-column label="位代码" align="center" prop="code" />
<el-table-column label="仓库" align="center" prop="warehouseId">
<template slot-scope="scope">
<span>{{ warehouseName(scope.row.warehouseId) }}</span>
......@@ -53,7 +53,7 @@
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:warehouse-area-position:delete']">删除</el-button>
<el-button size="mini" type="text" @click="handleCreate(scope.row)" v-if="scope.row.pid==0"
v-hasPermi="['ecw:warehouse-area:create']">添加</el-button>
v-hasPermi="['ecw:warehouse-area:create']">添加</el-button>
</template>
</el-table-column>
</el-table>
......@@ -68,8 +68,8 @@
<span>{{parentDo.code}}</span>
</el-form-item>
<el-form-item label="位代码" prop="code">
<el-input v-model="form.code" placeholder="请输入仓位代码" />
<el-form-item label="位代码" prop="code">
<el-input v-model="form.code" placeholder="请输位代码" />
</el-form-item>
<el-form-item label="仓库" prop="warehouseId">
......@@ -143,7 +143,7 @@ export default {
showSearch: true,
// 总条数
total: 0,
//位列表
//位列表
list: [],
// 弹出层标题
title: "",
......@@ -168,7 +168,7 @@ export default {
form: {},
// 表单校验
rules: {
code: [{ required: true, message: "位代码不能为空", trigger: "blur" }],
code: [{ required: true, message: "位代码不能为空", trigger: "blur" }],
warehouseId: [{ required: true, message: "仓库不能为空", trigger: "blur" }],
domainId: [{ required: true, message: "库域不能为空", trigger: "blur" }],
areaId: [{ required: true, message: "库区不能为空", trigger: "blur" }],
......@@ -331,7 +331,7 @@ computed: {
this.parentDo = null;
this.form.status = 0;
this.form.isShelf = 1;
this.title = "添加";
this.title = "添加";
},
/** 修改按钮操作 */
handleUpdate(row) {
......@@ -344,7 +344,7 @@ computed: {
}
this.form = response.data;
this.open = true;
this.title = "修改";
this.title = "修改";
});
},
/** 提交按钮 */
......@@ -373,7 +373,7 @@ computed: {
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal.confirm('是否确认删除位编号为"' + id + '"的数据项?').then(function() {
this.$modal.confirm('是否确认删除位编号为"' + id + '"的数据项?').then(function() {
return deleteWarehouseAreaPosition(id);
}).then(() => {
this.getList();
......@@ -388,7 +388,7 @@ computed: {
params.pageSize = undefined;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
this.$modal.confirm('是否确认导出所有位数据项?').then(() => {
this.$modal.confirm('是否确认导出所有位数据项?').then(() => {
this.exportLoading = true;
return exportWarehouseAreaPositionExcel(params);
}).then(response => {
......@@ -397,7 +397,7 @@ computed: {
}).catch(() => {});
},
/** 新增位 */
/** 新增位 */
handleCreate(row) {
this.reset();
this.parentDo = row;
......@@ -410,7 +410,7 @@ computed: {
this.form.areaName = row.areaName;
this.form.pid = row.id;
this.open = true;
this.title = "添加";
this.title = "添加";
},
}
};
......
......@@ -446,8 +446,8 @@ export default {
setGuarantee(){
seTupdateBackletter({userId:this.publicObj.id,backLetter:this.guaranteeUrl}).then(r=>{
if(r.code === 0){
this.publicObj.backLetterImg = this.guaranteeUrl;
this.guaranteeShow = false;
this.guaranteeUrl = '';
this.$message.success('保存成功');
}
})
......
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