Commit d18207b2 authored by huyf's avatar huyf

Merge remote-tracking branch 'origin/dev' into dev

parents 37c62cdf 56c0092b
......@@ -426,6 +426,25 @@ export function createGoods(data) {
/***************************** 预装 end **********************************/
/***************************** 装柜 start **********************************/
/**
* 获得装柜部分列表
*
* @export
* @param {*} params
* @return {*}
*/
export function loadSecGoodsList(params) {
return request({
url: "/ecw/box-preload-goods/loadSecGoodsList",
method: "get",
params,
});
}
/***************************** 装柜 end **********************************/
/**
* 服务提示消息回调
*
......
......@@ -11,7 +11,7 @@
<el-option
v-for="(item, index) in list"
:key="item.id"
:label="`${item.contactsName}(${item.customerName})`"
:label="`${item.contactsName}`"
:value="index">
</el-option>
</el-select>
......@@ -50,7 +50,15 @@ export default {
let index = this.list.findIndex(item => item.customerContactsId == this.value)
if(index < 0){
getCustomerContacts(this.value).then(res => {
this.list.unshift(res.data)
this.list.unshift({
contactsName: res.data.name,
customerName: res.data.customerName,
customerContactsId: res.data.id,
customerId: res.data.customerId,
phoneNew: res.data.phoneNew,
email: res.data.email
})
this.index = 0
})
}
......
<template>
<el-row class="" :gutter="10">
<el-col :span="10">
<el-card>
<div slot="header" class="header">
<el-input v-model="queryParams.searchKey" placeholder="用户名/手机/邮箱" style="width:200px" />
<!-- <dict-selector :type="DICT_TYPE.USER_TYPE" v-model="queryParams.customerType" style="width:100px" /> -->
<el-button type="primary" @click="reLoad">搜索</el-button>
</div>
<div class="list">
<div class="item" v-for="item in list" :key="item.customerContactsId">
<el-link class="el-icon-plus" @click="choose(item)" :disabled="selectedIds.indexOf(item.customerContactsId) > -1" />
{{item.customerName}} - {{item.contactsName}}{{item.areaCode}} {{item.phoneNew}}
</div>
</div>
</el-card>
</el-col>
<el-col :span="10">
<el-card>
<div slot="header" class="header">
已选客户
</div>
<div class="list">
<div class="item" v-for="item in choosedList" :key="item.customerContactsId">
<el-link class="el-icon-delete" @click="remove(item)" />
{{item.customerName}} - {{item.contactsName}}{{item.areaCode}} {{item.phoneNew}}
</div>
</div>
</el-card>
</el-col>
</el-row>
</template>
<script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
export default {
props:{
value: {
type: Array,
default: () => {
return []
}
}
},
data(){
return {
list:[],
queryParams:{
page: 1,
searchKey: null,
// level: null
},
choosedList:[]
}
},
computed:{
selectedIds(){
let arr = []
this.choosedList.forEach(item => {
arr.push(item.customerContactsId)
})
return arr
}
},
watch:{
selectedIds(val){
this.$emit('input', val)
},
value(val){
if(Array.from(new Set(val)).sort().join(',') != Array.from(new Set(this.selectedIds)).sort().join(',')){
this.getChoosedList()
}
}
},
created(){
/* if(this.value && this.value.length){
this.getChoosedList()
} */
this.reLoad()
},
methods:{
getChoosedList(){
if(!this.value || !this.value.length){
return
}
getCustomerContactsSelect({ids: this.value.join(',')})
.then(res => {
this.$set(this, 'choosedList', res.data)
})
},
reLoad(){
this.queryParams.page = 1
this.list = []
this.getList()
},
getList(){
getCustomerContactsSelect(this.queryParams).then(res => {
this.list = res.data
})
},
choose(item){
this.choosedList.push(item)
},
remove(item){
this.choosedList.forEach((item,index) => {
if(item.customerContactsId==item.customerContactsId) this.choosedList.splice(index,1)
})
}
}
}
</script>
<style scoped lang="scss">
.header{
>div{
margin-right: 5px;
}
}
.list{
height: 200px;
border: 1px solid #ccc;
overflow-y: auto;
overflow-x: hidden;
padding: 0 10px;
}
</style>
\ No newline at end of file
<template>
<el-select
v-model="index"
filterable
clearable
remote
reserve-keyword
placeholder="请输入关键词"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="(item, index) in list"
:key="item.id"
:label="`${item.name}(${item.number})`"
:value="index">
</el-option>
</el-select>
</template>
<script>
import {getSupplier, getSupplierPage} from '@/api/ecw/supplier'
// TODO 接口暂不支持关键词搜索,待接口支持后完善
export default {
props:{
productType: [String, Number],
value: [String, Number]
},
data(){
return {
index: null,
list:[],
loading: false
}
},
watch:{
index(val){
this.$emit('input', val !== null ? this.list[val].id: null)
this.$emit('change', val !== null ? this.list[val]: null)
},
value(val){
this.init()
}
},
created(){
this.init()
},
methods:{
init(){
if(!this.value) return
let index = this.list.findIndex(item => item.id == this.value)
if(index < 0){
getSupplier(this.value).then(res => {
this.list.unshift(res.data)
this.index = 0
})
}
},
remoteMethod(keyword){
let params = {}
params.searchKey = keyword
this.loading = true
getSupplierPage(params)
.then(res => this.list = res.data)
.finally(() => this.loading = false)
}
}
}
</script>
\ No newline at end of file
<template>
<div>
<my-process-viewer
ref="processViewer"
:value="bpmnXML"
:prefix="prefix"
:activityData="activityData"
:processInstanceData="processInstanceData"
:taskData="taskData"
style="height:500px; margin-bottom:10px"
/>
<el-form label-position="left" label-width="100px">
<el-form-item label="抄送">
<el-select v-model="valueSync" multiple placeholder="请选择抄送人" style="width:100%">
<el-option
v-for="item in users"
:key="item.id"
:label="item.nickname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
</div>
</template>
<script>
import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition"
import {listSimpleUsers} from '@/api/system/user'
export default {
props:{
xmlkey: String, // 流程标识
value: Array,
prefix: { // 使用哪个引擎
type: String,
default: "camunda",
},
activityData: { // 活动的数据。传递时,可高亮流程
type: Array,
default: () => [],
},
processInstanceData: { // 流程实例的数据。传递时,可展示流程发起人等信息
type: Object,
},
taskData: { // 任务实例的数据。传递时,可展示 UserTask 审核相关的信息
type: Array,
default: () => [],
}
},
data(){
return {
valueSync: [],
bpmnXML: null,
users: [],
selectedUserIds:[]
}
},
watch:{
value(){
this.valueSync = this.value || []
},
valueSync(val){
this.$emit('input', val)
},
},
created(){
if(this.value){
this.valueSync = this.value
}
listSimpleUsers().then(res => {
this.users = res.data
})
this.loadData()
},
methods:{
loadData(){
getProcessDefinitionBpmnXMLByKey(this.xmlkey).then(response => {
this.bpmnXML = response.data
})
}
}
}
</script>
\ No newline at end of file
......@@ -14,32 +14,6 @@ export const formConf = {
// 输入型组件 【左面板】
export const inputComponents = [
{
// 组件的自定义配置
__config__: {
label: '表格输入',
labelWidth: null,
showLabel: true,
changeTag: true,
tag: 'table-form',
tagIcon: 'input',
defaultValue: [],
required: false,
layout: 'colFormItem',
span: 24,
document: 'https://element.eleme.cn/#/zh-CN/component/input',
// 正则校验规则
regList: []
},
// 组件的插槽属性
__slot__: {
prepend: '',
append: ''
},
// 其余的为可直接写在组件标签上的属性
title: '表格标题',
style: { width: '100%' },
},
{
// 组件的自定义配置
__config__: {
......
......@@ -101,6 +101,8 @@ export const DICT_TYPE = {
ECW_HARVEST_METHOD: 'harvest_method', // 收货方式
ECW_PAY_ADVANCE: 'pay_advance', // 是否预付
ECW_BEGINTIME_TYPE_ENDTIME: 'begintime_type_endtime', // 时间筛选字段(订单)
ECW_CUSTOM_DRAWEE: 'custom_drawee', // 自定义付款人费用类型
ECW_IS_DRAFT: 'is_draft', // 草稿发布状态
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
<template>
<div class="app-container">
<doc-alert title="工作流" url="https://doc.iocoder.cn/bpm" />
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="流程名" prop="processName">
......@@ -20,8 +18,8 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="任务编号" align="center" prop="taskId" width="320" />
<el-table-column label="任务名称" align="center" prop="title" />
<el-table-column label="所属流程" align="center" prop="processName" />
<el-table-column label="流程分类" align="center" prop="title" />
<el-table-column label="流程名称" align="center" prop="processName" />
<el-table-column label="流程发起人" align="center" prop="originatorName" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
......
......@@ -61,11 +61,12 @@ export default {
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, [
"apRealTime",
"apConfirmTime",
"apUnloadPortTime",
]);
oldData = formatDateStr(
oldData,
["apRealTime", "apConfirmTime"],
"YYYY-MM-DD HH:mm:ss"
);
oldData = formatDateStr(oldData, ["apUnloadPortTime"]);
this.arrivalObj = oldData;
},
watch: {
......@@ -77,9 +78,11 @@ export default {
methods: {
// 获取预计到港时间
getExpectedTime() {
return dayjs(
this.$attrs.shipmentObj.shippingInfo.dtEstArrivalTime
).format("YYYY-MM-DD");
const { shippingInfo } = this.$attrs.shipmentObj;
if (shippingInfo) {
return dayjs(shippingInfo.dtEstArrivalTime).format("YYYY-MM-DD");
}
return null;
},
// 时间比较
compareDate(expectedTime, apConfirmTime) {
......
......@@ -2,9 +2,7 @@
<div>
<el-form ref="blCopyForm" :model="blCopyObj" label-width="120px">
<el-form-item label="提单Copy">
<el-upload action="" :file-list="blCopyObj.copyUrl">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
<FileUpload :limit="1" :isShowTip=false v-model="blCopyObj.copyUrl" :fileType="fileType" />
</el-form-item>
</el-form>
<el-row class="operate-button">
......@@ -17,23 +15,28 @@
<script>
import { ladingCopyCreate, serviceMsg } from "@/api/ecw/boxSea";
import FileUpload from "@/components/FileUpload";
import { fileTypes } from "../utils";
/**
* 提单copy
*/
export default {
name: "blCopy",
inheritAttrs: false,
components: { FileUpload },
data() {
return {
// 提单copy对象
blCopyObj: {},
// 文件格式
fileType: fileTypes,
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
this.blCopyObj = oldData;
this.blCopyObj.copyUrl = [];
},
methods: {
/** 提交 */
......
......@@ -8,16 +8,16 @@
<supplierSelect v-model="bookingObj.shipCompanyType" :companyType="'9'" placeholder="请选择船公司类型" :allSupplier="this.$attrs.allSupplier" />
</el-form-item>
<el-form-item label="驳船港">
<dockSelect v-model="bookingObj.bargePort" placeholder="请选择驳船港" :allDocks="this.$attrs.allDocks" />
<dockSelect v-model="bookingObj.bargePortId" placeholder="请选择驳船港" :allDocks="this.$attrs.allDocks" />
</el-form-item>
<el-form-item label="大船港">
<dockSelect v-model="bookingObj.bigPort" placeholder="请选择大船港" :allDocks="this.$attrs.allDocks" />
<dockSelect v-model="bookingObj.bigPortId" placeholder="请选择大船港" :allDocks="this.$attrs.allDocks" />
</el-form-item>
<el-form-item label="目的港">
<dockSelect v-model="bookingObj.destPort" placeholder="请选择目的港" :allDocks="this.$attrs.allDocks" />
<dockSelect v-model="bookingObj.destPortId" placeholder="请选择目的港" :allDocks="this.$attrs.allDocks" />
</el-form-item>
<el-form-item label="订舱公司">
<supplierSelect v-model="bookingObj.spaceCompany" :companyType="'1'" placeholder="请选择订舱公司" :allSupplier="this.$attrs.allSupplier" />
<supplierSelect v-model="bookingObj.spaceCompanyId" :companyType="'1'" placeholder="请选择订舱公司" :allSupplier="this.$attrs.allSupplier" />
</el-form-item>
<el-form-item label="预计驳船时间" prop="bargeTime">
<el-date-picker type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" v-model="bookingObj.bargeTime"></el-date-picker>
......@@ -31,7 +31,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="通知人" label-width="80px">
<userSelect v-model="bookingObj.feedTimePerson1" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
<userSelect v-model="bookingObj.sailNotifyUser" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
</el-form-item>
</el-col>
</el-row>
......@@ -39,12 +39,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="预计提单补料时间">
<el-date-picker type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" v-model="bookingObj.feedTime"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" v-model="bookingObj.ladingBillTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="通知人" label-width="80px">
<userSelect v-model="bookingObj.feedTimePerson2" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
<userSelect v-model="bookingObj.ladingBillNotifyUser" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
</el-form-item>
</el-col>
</el-row>
......@@ -52,12 +52,12 @@
<el-row>
<el-col :span="12">
<el-form-item label="预计报关时间">
<el-date-picker type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" v-model="bookingObj.declarationTime"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" value-format="yyyy-MM-dd" v-model="bookingObj.customsTime"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="通知人" label-width="80px">
<userSelect v-model="bookingObj.feedTimePerson3" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
<userSelect v-model="bookingObj.customsNotifyUser" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
</el-form-item>
</el-col>
</el-row>
......@@ -70,7 +70,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="通知人" label-width="80px">
<userSelect v-model="bookingObj.feedTimePerson4" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
<userSelect v-model="bookingObj.cutOffNotifyUser" placeholder="请选择通知人" :allUsers="this.$attrs.allUsers" />
</el-form-item>
</el-col>
</el-row>
......@@ -119,7 +119,13 @@ export default {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.shipmentObj[voName] };
oldData = formatStringNumber(oldData, ["shipCompanyType", "spaceCompany"]);
oldData = formatDateStr(oldData, ["sailTime", "bargeTime"]);
oldData = formatDateStr(oldData, [
"sailTime",
"bargeTime",
"ladingBillTime",
"customsTime",
"cutOffTime",
]);
this.bookingObj = oldData;
},
methods: {
......
......@@ -16,15 +16,13 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="cabinetObj.ldOutWarehouseTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="装柜图片">
<el-upload action="" :limit="1" :file-list="cabinetObj.ldPictures">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
<ImageUpload :limit="1" :isShowTip=false v-model="cabinetObj.ldPictures" />
</el-form-item>
</el-form>
<!-- 开始装柜 -->
<el-dialog title="开始装柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body destroy-on-close>
<startPacking />
<el-dialog title="开始装柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body>
<startPacking v-bind="$attrs" v-if="dialogVisible" />
</el-dialog>
<!-- 操作 -->
......@@ -39,8 +37,9 @@
<script>
import startPacking from "./startPacking.vue";
import { cabinetCreate, serviceMsg } from "@/api/ecw/boxSea";
import { cabinetCreate, serviceMsg, approvalCreate } from "@/api/ecw/boxSea";
import { formatDateStr } from "../../utils";
import ImageUpload from "@/components/ImageUpload";
/**
* 装柜
......@@ -48,7 +47,7 @@ import { formatDateStr } from "../../utils";
export default {
name: "cabinet",
inheritAttrs: false,
components: { startPacking },
components: { startPacking, ImageUpload },
data() {
return {
// 弹窗
......@@ -81,9 +80,21 @@ export default {
...this.cabinetObj,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
if (operateType === 2) {
approvalCreate({
shipmentId: this.$attrs.shipmentObj.id,
approvalStatus: 0,
approvalType: 2,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
} else {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
}
});
}
});
......
......@@ -4,25 +4,27 @@
<el-row class="content-area">
<!-- 左侧 -->
<el-col :span="6" class="left-area">
<el-row v-for="item in testData" :key="item.key" class="title-info">
<div>
<el-col :span="4" class="left-area">
<el-row v-for="item in listData" :key="item.id" class="title-info" :class="item.id === tableData.id ? 'selected' : ''">
<div @click="partClick(item)">
<p>{{item.title}}</p>
</div>
<div>
<p>111</p>
<p>111</p>
<p>111</p>
<template v-if="item.secStatistics">
<p>{{item.secStatistics.num}}</p>
<p>{{item.secStatistics.volume}}</p>
<p>{{item.secStatistics.weight}}Kg</p>
</template>
</div>
</el-row>
</el-col>
<!-- 右侧 -->
<el-col :span="18" class="right-area">
<el-col :span="20" class="right-area">
<!-- 操作 -->
<el-row class="table-title">
<div>当前装柜:第一部分</div>
<div>当前装柜:{{tableData.title}}</div>
<div>
<el-input v-model="qrCode" placeholder="请输入二维码/条码编号"></el-input>
<el-button type="primary">确定</el-button>
......@@ -33,19 +35,48 @@
</el-row>
<!-- 表格 -->
<el-row>
<el-table v-loading="loading" :data="listData">
<el-table-column label="序号" type="index" width="50" />
<el-table-column label="订单号" align="center" prop="selfNo">
<el-row class="table-content">
<el-table v-loading="loading" :data="tableData.sectionOrderList">
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="订单号" align="center" prop="orderId">
<template slot-scope="scope">
<a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.orderId }}</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 in scope.row.goodsList" :key="item.orderId" class="goodList-div">
<p>品名:{{item.prodTitleZh}}</p>
<p>
品牌:【
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
</p>
<p>其他:<span>{{item.num}}</span><span>{{item.volume}}</span><span>{{item.weight}}Kg</span></p>
</div>
</section>
</template>
</el-table-column>
<el-table-column label="计划箱数" align="center" prop="num">
<template slot-scope="scope">
{{ scope.row.num }}
</template>
</el-table-column>
<el-table-column label="实装箱数" align="center" prop="installNum">
<template slot-scope="scope">
<a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.selfNo }}</a>
{{ scope.row.installNum }}
</template>
</el-table-column>
<el-table-column label="体积" align="center" prop="volume">
<template slot-scope="scope">
{{ scope.row.volume }}
</template>
</el-table-column>
<el-table-column label="重量" align="center" prop="weight">
<template slot-scope="scope">
{{ scope.row.weight }} Kg
</template>
</el-table-column>
<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 label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="primary" size="small">移出</el-button>
......@@ -61,9 +92,8 @@
<!-- 统计 -->
<el-row>
<el-col :span="6" class="totle-info">
<div>
<p>总计:</p>
<p>111</p>
<div class="count-info">
<p>总计:<span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span></p>
</div>
<div>
<p>容量:</p>
......@@ -159,43 +189,32 @@
<script>
import supplementOrder from "./supplementOrder.vue";
import { loadSecGoodsList } from "@/api/ecw/boxSea";
/**
* 开始装柜
*/
export default {
name: "startPacking",
inheritAttrs: false,
components: {
supplementOrder,
},
props: {
shipmentObj: Object,
},
data() {
return {
// laoding
loading: false,
// 二维码/条码编号
qrCode: "",
// 表格数据
listData: [
{
selfNo: "111aaa",
cubNo: "11111111111111111111111111",
},
{
selfNo: "111aaa",
cubNo: "11111111111111111111111111",
},
],
// 左侧数据
testData: [
{
key: 1,
title: "第一部分",
},
{
key: 2,
title: "第二部分",
},
],
listData: [],
// 表格数据
tableData: {},
// 统计数据
sumData: {
count: { num: 0, volume: 0, weight: 0 },
},
// 弹窗配置
dialogConfig: {
title: "",
......@@ -204,6 +223,8 @@ export default {
type: "",
fullscreen: false,
},
// 二维码/条码编号
qrCode: "",
// 批量输入
batchObj: {},
// 批量纠错(订单号)
......@@ -222,7 +243,25 @@ export default {
},
};
},
created() {
this.getLoadSecGoodsList();
},
methods: {
/* 装柜部分列表 */
getLoadSecGoodsList() {
loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => {
const { data = [] } = res;
this.listData = data.map((item, index) => {
return {
...item,
title: `第${++index}部分`,
};
});
if (this.listData.length) {
this.tableData = this.listData[0];
}
});
},
/** 点击事件统一入口 */
handlerClick(type, title) {
this.shwoDialog({ type, title });
......@@ -261,12 +300,41 @@ export default {
}
});
},
/* 部分点击 */
partClick(item) {
console.log(item);
this.tableData = item;
},
},
watch: {
listData(val) {
let count = { num: 0, volume: 0, weight: 0 };
if (Array.isArray(val)) {
val.forEach((item) => {
const { secStatistics } = item;
if (secStatistics) {
if (!Number.isNaN(Number(secStatistics.num))) {
count.num = count.num + Number(secStatistics.num);
}
if (!Number.isNaN(Number(secStatistics.volume))) {
count.volume = count.volume + Number(secStatistics.volume);
}
if (!Number.isNaN(Number(secStatistics.weight))) {
count.weight = count.weight + Number(secStatistics.weight);
}
}
});
}
this.$set(this.sumData, "count", count);
},
},
};
</script>
<style lang="scss" scoped>
.startPacking {
display: flex;
flex-direction: column;
p {
margin: 0;
}
......@@ -276,7 +344,15 @@ export default {
border-right: 3px solid #e6ebf5;
padding-right: 10px;
.title-info {
height: 100px;
height: 80px;
&.selected {
> div:first-child {
background-color: #4f9cdd;
color: #fff;
}
}
> div:first-child {
font-size: 16px;
background-color: #f2f2f2;
......@@ -309,8 +385,27 @@ export default {
}
}
}
.order-href {
color: #4f9cdd;
.table-content {
.table-goodList {
.goodList-div {
border-bottom: 1px solid #e6ebf5;
> p {
text-align: left;
}
> p:last-child {
> span {
margin-right: 5px;
}
}
}
> div:last-child {
border-bottom: none;
}
}
.el-table {
color: red;
}
}
}
}
......@@ -321,6 +416,11 @@ export default {
display: flex;
margin-bottom: 5px;
}
.count-info {
> p > span {
margin-right: 5px;
}
}
}
.button-area {
text-align: center;
......
......@@ -28,9 +28,7 @@
</el-col>
</el-row>
<el-form-item label="电放凭证附件">
<el-upload action="" :file-list="cDocObj.cdElectricVoucher">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
<FileUpload :limit="1" :isShowTip=false v-model="cDocObj.cdElectricVoucher" :fileType="fileType" />
</el-form-item>
<el-form-item label="agent list">
......@@ -42,9 +40,7 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="cDocObj.cdAgentlistTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item>
<el-upload action="" :file-list="cDocObj.cdAgentlistFile">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
<FileUpload :limit="1" :isShowTip=false v-model="cDocObj.cdAgentlistFile" :fileType="fileType" />
</el-form-item>
<el-form-item label="soncap">
......@@ -56,9 +52,7 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="cDocObj.cdSoncapTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item>
<el-upload action="" :file-list="cDocObj.cdSoncapFile">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
<FileUpload :limit="1" :isShowTip=false v-model="cDocObj.cdSoncapFile" :fileType="fileType" />
</el-form-item>
</el-form>
......@@ -72,13 +66,21 @@
<script>
import { clearanceDocCreate, serviceMsg } from "@/api/ecw/boxSea";
import { constantDict, formatDateStr, formatNumberString } from "../utils";
import {
constantDict,
formatDateStr,
formatNumberString,
fileTypes,
} from "../utils";
import FileUpload from "@/components/FileUpload";
/**
* 清关文件
*/
export default {
name: "clrDocument",
inheritAttrs: false,
components: { FileUpload },
data() {
return {
// 清关文件对象
......@@ -87,6 +89,8 @@ export default {
method: constantDict.billingMethod,
// 选项
status: constantDict.isFile,
// 文件类型
fileType: fileTypes,
};
},
created() {
......
......@@ -58,7 +58,8 @@ export default {
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["clEstTime", "clClearTime"]);
oldData = formatDateStr(oldData, ["clEstTime"]);
oldData = formatDateStr(oldData, ["clClearTime"], "YYYY-MM-DD HH:mm:ss");
this.cusClearanceObj = oldData;
},
watch: {
......
......@@ -46,9 +46,7 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="cusDeclarationObj.dcCheckTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="查验前图片">
<el-upload action="" :limit="1" :file-list="cusDeclarationObj.dcCheckPreImg">
<el-button size="small" type="primary">选择文件</el-button>
</el-upload>
<ImageUpload :limit="1" :isShowTip=false v-model="cusDeclarationObj.dcCheckPreImg" />
</el-form-item>
<el-form-item label="新封条">
<el-input v-model="cusDeclarationObj.dcStripSeal" placeholder="请输入新封条" clearable />
......@@ -133,13 +131,15 @@
import supplierSelect from "./common/supplierSelect.vue";
import { customsCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatNumberString, formatDateStr } from "../utils";
import ImageUpload from "@/components/ImageUpload";
/**
* 报关
*/
export default {
name: "cusDeclaration",
inheritAttrs: false,
components: { supplierSelect },
components: { supplierSelect, ImageUpload },
data() {
return {
// 报关对象
......
......@@ -61,7 +61,8 @@ export default {
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["dtRealShipTime", "dtEstArrivalTime"]);
oldData = formatDateStr(oldData, ["dtRealShipTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["dtEstArrivalTime"]);
this.departureObj = oldData;
},
watch: {
......
......@@ -2,7 +2,7 @@
<div>
<el-form ref="reviewForm" :model="reviewObj" label-width="120px">
<el-form-item label="申请理由">
<el-input v-model="reviewObj.remark" type="textarea" rows="2" placeholder="请输入申请理由"></el-input>
<el-input v-model="reviewObj.applyReason" type="textarea" rows="2" placeholder="请输入申请理由"></el-input>
</el-form-item>
</el-form>
<el-row class="operate-button">
......@@ -13,7 +13,7 @@
</template>
<script>
import { approvalCreate } from "@/api/ecw/boxSea";
import { approvalCreate, serviceMsg } from "@/api/ecw/boxSea";
/**
* 预装反审
......@@ -36,7 +36,7 @@ export default {
shipmentId: this.$attrs.shipmentObj.id,
...this.reviewObj,
approvalStatus: -1,
approvalType: 1,
approvalType: 4,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
......
......@@ -7,7 +7,7 @@
</el-radio-group>
</el-form-item>
<el-form-item label="配船时间" v-show="shipObj.saExmtStatus === '2'">
<el-date-picker type="date" placeholder="请选择日期" v-model="shipObj.shipTime" value-format="yyyy-MM-dd"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="shipObj.configTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-form>
......
......@@ -33,8 +33,8 @@
<el-input v-model="subMaterialObj.markNo"></el-input>
</el-form-item>
<el-form-item label="包装数量与单位" class="two-element">
<el-input v-model="subMaterialObj.quantity" placeholder="请输入包装数量"></el-input>
<el-select v-model="subMaterialObj.unit" placeholder="请选择单位">
<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-select>
</el-form-item>
......@@ -42,7 +42,7 @@
<el-input v-model="subMaterialObj.kgs" placeholder="请输入毛重(KGS)"></el-input>
</el-form-item>
<el-form-item label="立方数(CBM)">
<el-input v-model="subMaterialObj.mesaurement" placeholder="请输入立方数(CBM)"></el-input>
<el-input v-model="subMaterialObj.cbm" placeholder="请输入立方数(CBM)"></el-input>
</el-form-item>
<el-form-item label="货物描述">
<el-input v-model="subMaterialObj.goodsDesc" placeholder="请输入货物描述"></el-input>
......@@ -97,16 +97,7 @@ export default {
markNo: "N/M",
},
// 出单方式
method: [
{
value: "1",
label: "正本",
},
{
value: "2",
label: "电放",
},
],
method: constantDict.billingMethod,
// 单位
units: [],
// 柜型
......@@ -132,6 +123,7 @@ export default {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.shipmentObj[voName] };
oldData = formatNumberString(oldData, ["issueType"]);
this.subMaterialObj = oldData;
},
methods: {
......
......@@ -8,13 +8,13 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="unloadingObj.ulWarehouseTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="卸柜时间">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="unloadingObj.ulBoxTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="unloadingObj.ulBoxTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type=" success" @click="onSubmit(2)">提交</el-button>
<el-button type="success" @click="onSubmit(2)">提交</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="danger" @click="startUnloading">开始卸柜</el-button>
</el-row>
......
......@@ -238,11 +238,11 @@ export default {
},
{
title: "数量",
key: "",
key: "packageNum",
},
{
title: "体积",
key: "",
key: "cbm",
},
{
title: "业务员",
......@@ -264,7 +264,7 @@ export default {
{
title: "实际开船时间",
key: "dtRealShipTime",
type: "date",
type: "datetime",
},
{
title: "预计到港时间",
......@@ -306,12 +306,12 @@ export default {
{
title: "实际到港时间",
key: "apRealTime",
type: "date",
type: "datetime",
},
{
title: "确认到港",
key: "apConfirmTime",
type: "date",
type: "datetime",
},
{
title: "卸港时间",
......@@ -332,7 +332,7 @@ export default {
{
title: "清关时间",
key: "clClearTime",
type: "date",
type: "datetime",
},
{
title: "业务员",
......@@ -383,6 +383,9 @@ export default {
case "date":
val = dayjs(val).format("YYYY-MM-DD");
break;
case "datetime":
val = dayjs(val).format("YYYY-MM-DD HH:mm:ss");
break;
case "supplier":
val = this.getSupplier(Number(val));
break;
......@@ -441,9 +444,7 @@ export default {
flex-direction: column;
flex-wrap: wrap;
align-content: flex-start;
// width: 100%;
height: 500px;
height: 550px;
p {
margin: 0;
......
......@@ -68,7 +68,7 @@ export default {
// 用户
allUsers: [],
// 流程图节点
seaBaseData: seaBaseData,
seaBaseData: seaBaseData(),
// 状态
statusLabel: "",
};
......
This diff is collapsed.
......@@ -172,7 +172,7 @@
>
<dict-selector v-if="form.type != 1" :type="DICT_TYPE.ECW_SUITABLE_USER_TYPE" v-model="form.suitableUserType" defaultable />
<dict-selector form-type="radio" v-else :type="DICT_TYPE.ECW_SUITABLE_USER_TYPE" :filter="item => item.colorType == 'danger'" v-model="form.suitableUserType" defaultable />
<customers-selector v-if="showCustomerSelector" v-model="form.customerIds" style="margin-top:5px" />
<customer-contacts-selector v-if="showCustomerSelector" v-model="form.customerIds" style="margin-top:5px" />
</el-form-item>
<el-form-item
label="适用线路类型"
......@@ -229,7 +229,8 @@
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button type="primary" @click="submitForm(0)">保 存</el-button>
<el-button type="primary" @click="submitForm(1)">发 布</el-button>
<el-button @click="$router.back()">返 回</el-button>
<el-button type="default" @click="reset">重 置</el-button>
</el-form-item>
......@@ -248,7 +249,7 @@ import {
exportCouponExcel,
getCouponSelect
} from "@/api/ecw/coupon";
import CustomersSelector from '@/components/CustomersSelector'
import CustomerContactsSelector from '@/components/CustomerContactsSelector'
import {getDictData} from '@/utils/dict'
import RoutersSelector from '@/components/RoutersSelector'
import ProductsSelector from '@/components/ProductsSelector'
......@@ -256,7 +257,7 @@ import Editor from '@/components/Editor'
import Selector from '@/components/Selector/index'
export default {
name: "CouponEdit",
components: {CustomersSelector, RoutersSelector, ProductsSelector, Editor, Selector},
components: {CustomerContactsSelector, RoutersSelector, ProductsSelector, Editor, Selector},
data() {
return {
// 遮罩层
......@@ -419,7 +420,7 @@ export default {
},
/** 提交按钮 */
submitForm() {
submitForm(status = 0) {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
......@@ -431,7 +432,7 @@ export default {
// 开始时间必填
if(!data.startTime)data.startTime = '2022-01-01 00:00:00'
// status必填
data.status = 0
data.status = status
data.couponIds = this.couponIds.join(',')
// 费用类型 1 运输费 2 清关费 3 总费用(优惠卷专用)
......
......@@ -154,9 +154,14 @@
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="createTime" width="180">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_IS_DRAFT" :value="row.status" />
</template>
</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-edit" @click="handleUpdate(scope.row)"
<el-button v-if="scope.row.status != 1" size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:coupon:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:coupon:delete']">删除</el-button>
......
<template>
<template xmlns="">
<div>
<el-row type="flex" style="margin-top: 15px;margin-bottom: 15px" justify="center">
......@@ -264,6 +264,11 @@
prop=""
label="关联账号"
>
<template v-slot = "{row}">
<el-select v-model="row.userid" @change="selectBD">
<el-option v-for="(item,index) in memberList" :value="item.id" :key="item.id" :label="item.nickname + '(' + item.mobile + ')'" ></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column
prop="social"
......@@ -370,7 +375,7 @@
<script>
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import upload from '@/components/ImageUpload'
import {createCustomer, getCustomer, updateCustomer, } from '@/api/ecw/customer'
import {createCustomer, getCustomer, updateCustomer, userMemberUserList,} from '@/api/ecw/customer'
import {getNodeList} from "@/api/ecw/node"
import { getProductTypeList } from '@/api/ecw/productType'
import { getProductList } from '@/api/ecw/product'
......@@ -382,6 +387,7 @@ import {listServiceUser} from "@/api/system/user"
import {getZhongPaoPage} from '@/api/ecw/zhongPao'
import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts'
import { getCountryListAll } from '@/api/ecw/country'
import Template from "@/views/cms/template";
export default {
name: "edit",
......@@ -389,6 +395,7 @@ export default {
customerId: String
},
components: {
Template,
upload,
CustomerLineTable
},
......@@ -426,6 +433,9 @@ export default {
getCountryListAll().then(r => {
this.countryList = r.data
})
userMemberUserList().then(r => {
this.memberList = r.data
})
this.getZhongPao()
},
......@@ -464,10 +474,14 @@ export default {
zhongLines: [], // 重货线路
paoLines: [], // 泡货线路
memberList:[],//会员列表
}
},
methods: {
selectBD(){
this.$forceUpdate();
},
/** 取消按钮 */
cancel() {
this.open = false;
......@@ -479,6 +493,9 @@ export default {
if (!valid) {
return;
}
this.form.customerContacts.forEach(e => {
e.userid = e.userid.join(',')
})
// 修改的提交
if (this.form.id != null) {
this.form.customerContacts.forEach(e => {
......@@ -572,7 +589,7 @@ export default {
"position": "",
"social": undefined,
"socialNumber": "",
// "userid": 0,
"userid": [],
// "username": ""
})
},
......@@ -592,7 +609,7 @@ export default {
computed: {
productListFilter(){
return this.productList.filter((p) => p.typeId === this.form.productType)
}
},
},
watch: {
zhongLines() {
......
......@@ -25,7 +25,13 @@
<el-table-column label="订单号" prop="orderNo"></el-table-column>
<el-table-column label="唛头" prop="marks"></el-table-column>
<el-table-column label="货物数据">
<template v-slot="{row}">
<div v-if="row.costVO">
箱数:{{row.costVO.totalNum}}
{{row.costVO.totalVolume}}
{{row.costVO.totalWeight}}kg
</div>
</template>
</el-table-column>
<el-table-column label="入仓时间" prop="rucangTime"></el-table-column>
<el-table-column label="状态">
......
......@@ -32,13 +32,13 @@
width="55">
</el-table-column>
<el-table-column type="index" label="序号"></el-table-column>
<el-table-column label="订单号" prop="orderNo"></el-table-column>
<el-table-column label="订单号" prop="orderBackVO.orderNo"></el-table-column>
<el-table-column label="唛头" prop="marks"></el-table-column>
<el-table-column label="货物数据"></el-table-column>
<el-table-column label="入仓时间" prop="remarks"></el-table-column>
<el-table-column label="入仓时间"></el-table-column>
<el-table-column label="状态" prop="status" >
<template v-slot:default="scope">
<dict-tag :value="scope.row.status" :type="DICT_TYPE.ORDER_STATUS" ></dict-tag>
<dict-tag :value="scope.row.orderBackVO.status" :type="DICT_TYPE.ORDER_STATUS" ></dict-tag>
</template>
</el-table-column>
<el-table-column label="操作人"></el-table-column>
......
......@@ -10,7 +10,13 @@
</template>
</el-table-column>
<el-table-column label="下单统计">
<template v-slot="{row}">
<div v-if="row.costVO">
箱数:{{row.costVO.totalNum}}
{{row.costVO.totalVolume}}
{{row.costVO.totalWeight}}kg
</div>
</template>
</el-table-column>
<el-table-column label="入仓统计" width="150">
<template v-slot="{row}">
......@@ -30,7 +36,7 @@
<el-table-column label="出货渠道">
</el-table-column>
<el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>
<!-- <el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>-->
<el-table-column label="目的地" prop="objectiveName"></el-table-column>
<el-table-column label="发货人">
<template v-slot="{row}">
......@@ -68,13 +74,8 @@
审批流程
</h1>
<div style="padding: 20px">
<my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" />
<work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId" />
</div>
<div style="height: 100px"></div>
<!-- <el-form label-width="200px">-->
<!-- <el-form-item label="抄送"></el-form-item>-->
<!-- <el-form-item label="抄送人"></el-form-item>-->
<!-- </el-form>-->
<div style="text-align: center">
<el-button style="margin-right: 50px" @click="submit" :disabled="isSubmit">提交申请</el-button>
<el-button @click="$router.push('/order/order')">取消</el-button>
......@@ -93,22 +94,21 @@ import {
import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
import {getOrderPage} from "@/api/ecw/order";
import workFlow from "@/components/WorkFlow";
export default {
name: "batchSingleApplication",
props:{
orderList:String,
},
components:{
warehouseDetails
warehouseDetails,
workFlow
},
created() {
getOrderPage({orderIdList:this.orderList}).then(r =>{
this.list = r.data.list
warehouseAdjustmentList({id:this.list[0].startWarehouseId}).then( r => this.availableWarehouse = r.data)
})
getProcessDefinitionBpmnXMLByKey("warehouse_transfer").then(response => {
this.bpmnXML = response.data
})
},
computed:{
isSubmit(){
......@@ -125,6 +125,7 @@ export default {
data(){
return {
list:[],
selectedUsers:[],
availableWarehouse:[],
DICT_TYPE,
departureWarehouse:undefined,
......@@ -132,11 +133,8 @@ export default {
params:{
orderIds:undefined,
warehouseInId:undefined,
warehouseOutId: undefined
},
bpmnXML: null,
bpmnControlForm: {
prefix: "activiti"
warehouseOutId: undefined,
copyUserId:[],
},
}
},
......
This diff is collapsed.
<template>
<div class="app-container">
<div class="title">控货订单</div>
<el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row>
<el-col :span="6">
<el-form-item label="订单号" prop="field101">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总控货数" prop="field104">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="体积" prop="field103">
111 m³
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量" prop="field102">
111 kg
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="可放货箱数" prop="field105">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="已放货箱数" prop="field106">
111
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="title">放货详情</div>
<el-table :data="[1]" border>
<el-table-column label="序号" width="50px">
</el-table-column>
<el-table-column label="收货人">
1
</el-table-column>
<el-table-column label="控货箱数">
1
</el-table-column>
<el-table-column label="放货箱数">
1
</el-table-column>
<el-table-column label="体积(m³)">
1
</el-table-column>
<el-table-column label="提单号">
1
</el-table-column>
<el-table-column label="备注">
1
</el-table-column>
<el-table-column label="操作人">
1
</el-table-column>
<el-table-column label="日期">
1
</el-table-column>
<el-table-column label="状态">
1
</el-table-column>
<el-table-column label="操作" width="300px">
<template slot-scope="{row}">
<el-button type="primary" size="mini" @click="showEdit=true">修改</el-button>
<el-button type="danger" size="mini">取消</el-button>
<el-button type="success" size="mini" @click="review">放货复核</el-button>
</template>
</el-table-column>
</el-table>
<div class="title">历史放货记录</div>
<el-table :data="[1]" border>
<el-table-column label="序号" width="50px">
</el-table-column>
<el-table-column label="操作">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="申请原因">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="附件">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="申请时间">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="申请人">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="审批时间">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="审批人">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="备注">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
</el-table>
<edit v-if="showEdit" @close="showEdit=false" />
</div>
</template>
<script>
import edit from './components/CargoControlEdit.vue'
export default {
components: {edit},
data(){
return {
showEdit: false,
formData:{}
}
},
methods:{
review(){
this.$confirm('已核实放货信息,确认放货?')
.then(res => {
this.$alert('// TODO ')
})
}
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form v-if="agreement" ref="elForm" :model="formData" size="small" label-width="100px" >
<el-form-item label="订单号" prop="field101">
111
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="收货人" prop="field104">
111
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话" prop="field103">
111
</el-form-item>
</el-col>
</el-row>
<el-form-item label="总控货箱数" prop="field105">
111
</el-form-item>
<el-form-item label="原放货箱数" prop="field106">
111
</el-form-item>
<el-form-item label="现放货箱数" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input>
</el-form-item>
<el-form-item label="备注" prop="field106">
<el-input v-model="formData.cnt" placeholder=""></el-input>
</el-form-item>
<el-form-item label="控货手机号" prop="field106">
13000000000
</el-form-item>
<el-form-item label="手机验证码" prop="field106">
<el-input v-model="formData.cnt" placeholder="" style="width: 100px; margin-right:10px"></el-input>
<el-button type="default">获取验证码</el-button>
</el-form-item>
<div class="title">审批流程</div>
<work-flow bmpkey="free_apple" />
<el-form-item label="">
<el-button type="primary" @click="$alert('// TODO')">提交申请</el-button>
<el-button @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
<div v-else>
<release-agreement />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import releaseAgreement from "./releaseAgreement"
import WorkFlow from '@/components/WorkFlow'
export default {
props:{
orderId: [String, Number]
},
components: {releaseAgreement, WorkFlow},
data(){
return {
show: false,
detail: null,
formData:{},
agreement: false, // 是否同意协议
}
},
computed:{
title(){
let t = '放货修改'
return t
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form v-if="agreement" ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row>
<el-col :span="6">
<el-form-item label="订单号" prop="field101">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总箱数" prop="field104">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="体积" prop="field103">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量" prop="field102">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="总控货箱数" prop="field105">
111
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="剩余放货箱数" prop="field106">
111
</el-form-item>
</el-col>
</el-row>
<div class="title">请填写放货信息</div>
<el-row>
<el-col :span="8">
<el-form-item label="收货人" prop="field108">
<el-input v-model="formData.field108" placeholder="请输入收货人" clearable ></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收货人电话" prop="field109">
<el-input v-model="formData.field109" placeholder="请输入收货人电话" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="收货人邮箱" prop="field110">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-form-item>
</el-col>
</el-row>
<el-table :data="[1]" border>
<el-table-column label="控货箱数">
</el-table-column>
<el-table-column label="放货箱数">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="体积(m³)">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="重量(kg)">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
<el-table-column label="备注">
<el-input v-model="formData.field110" placeholder="请输入收货人邮箱" clearable></el-input>
</el-table-column>
</el-table>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
<el-input v-model="formData.field117" placeholder="请输入控货手机号" clearable >
</el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="field118">
<el-input v-model="formData.field118" placeholder="请输入手机验证码" clearable style="width:200px; margin-right:10px" ></el-input>
<el-button type="success">获取验证码</el-button>
</el-form-item>
<el-form-item label="" prop="field117" style="margin-top:20px">
<el-button type="success">确认放货</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
<div v-else>
<release-agreement />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import ReleaseAgreement from "./ReleaseAgreement"
export default {
props:{
orderId: [String, Number]
},
components: {ReleaseAgreement},
data(){
return {
show: false,
detail: null,
formData:{},
agreement: false, // 是否同意协议
}
},
computed:{
title(){
let t = '控货权转移'
if(this.detail){
t += '-' + this.detail.orderNo
}
return t
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
}
}
</script>
<style lang="scss" scoped>
.title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
</style>
\ No newline at end of file
<template>
<div>
<h2>《捷道控放货须知》</h2>
<pre>
请您仔细阅读我们的控货须知,如果您对此须知中有任何部分存在疑问,请联系我司售前客服,如您已下单表示您已清楚我司控放货流程及风险。
1. 关于控货与放货
1.1控货是指由发货人与我司约定在货物的国际运输过程中,我司作为第三方对该货物进行临时控制;非经发货人按约定程序授权,我司不解除对该货物的控制的行为;
1.2您在订舱时选择控货选项,在货物入仓后,系统将会自动生成入仓号,表示货物已经控货成功;
1.3同一入仓号所属的货物只能控货一次,若出现分批次放货的情形,则最多不得超过3次,且每次只能有一个提货人;
1.4货物运抵目的地之后捷道公司会对货物进行临时控制。一经向系统申请放货并获得系统确认,则表明我司已获得您的授权,我司将根据约定向提货单持有人放货;
1.5您应在货物抵达目的地后30个自然日内通知捷道公司放货。尼日利亚:超过30日的,您应向捷道公司支付相应的仓储费尼;超过30天每天收取20naira/CBM ,超过60天每天40naira/CBM ,超过90天每天60naira/CBM;加纳:超过15日,需支付每天$1/CBM,超过180个自然日捷道公司有权根据依照相关法律规定处理该临时控制的货物;
1.6放货方式:A:登陆我司后台www.groupage.cn点击放货,通过账号原始绑定手机获取验证码进行放货;B:联系我司客服进行放货,联系电话4009009962,上班时间周一至周六 9:00-18:00。
2. 免责声明
2.1接受控货并不表明捷道公司对您货物所有权瑕疵进行担保;
2.2捷道公司经授权放货不代表同意对买卖双方的货款结算进行担保;
2.3若系统后台注册信息与实际信息不一致,如绑定手机号码需要更改,请自行登录系统后台操作,我司不提供任何注册信息主动变更服务,因注册信息与实际不一致而造成的损失,由您自行承担。
</pre>
</div>
</template>
\ No newline at end of file
<template>
<el-dialog :title="title" visible :before-close="closeDialog">
<div class="" v-if="agreement">
<el-form ref="form" :model="form" label-position="left" label-width="120px">
<el-form-item v-if="detail" label="原控货人">
<el-input v-model="detail.orderNo" readonly></el-input>
</el-form-item>
<el-form-item label="原控货手机号" prop="start" required>
<el-input v-model.number="form.start" type="number"></el-input>
</el-form-item>
<el-form-item label="新控货人" prop="end" required>
<el-input v-model.number="form.end" type="number" :max="detail ? detail.num : 1"></el-input>
</el-form-item>
<el-form-item label="新控货手机号" prop="start" required>
<el-input v-model.number="form.start" type="number">
<el-select slot="prepend" v-model="form.areaCode" placeholder="">
<el-option :label="1" :value="1"></el-option>
</el-select>
</el-input>
</el-form-item>
<el-form-item label="新控货人邮箱" prop="end" required>
<el-input v-model.number="form.end" type="number" :max="detail ? detail.num : 1"></el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="end" required>
<el-input v-model.number="form.end" type="number">
<span slot="append">获取验证码</span>
</el-input>
</el-form-item>
<el-form-item label="">
<el-button type="primary" @click="showPreview">确定转移</el-button>
</el-form-item>
</el-form>
</div>
<div v-else>
<transfer-agreement />
<div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button>
</div>
</div>
</el-dialog>
</template>
<script>
import TransferAgreement from "./TransferAgreement"
export default {
props:{
orderId: [String, Number]
},
components: {TransferAgreement},
data(){
return {
show: false,
detail: null,
form:{},
agreement: false, // 是否同意协议
}
},
computed:{
title(){
let t = '控货权转移'
if(this.detail){
t += '-' + this.detail.orderNo
}
return t
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
}
}
</script>
\ No newline at end of file
<template>
<pre>
控货权转移须知
《控货权转移须知》
为了切实加强施工现场安全生产管理,依照《中华人民共和国安全生产法》、《中华人民共和国建筑法》、《中华人民共和国合同法》以及《建设工程安全生产管理条例》建设部《施工现场临时用电安全技术规范》(JGJ46-88)、《建筑施工安全检查标准》(JGJ59-99),双方本着平等、自愿的原则,签订本协议书。甲方和乙方均严格遵守本协议书规定的权力、责任和义务,确保施工现场的安全生产和施工现场临时用电的安全。
一、甲方的权利、责任和义务:
1、贯彻落实国家有关施工现场安全生产、文明施工的法规和管理规定,对乙方施工现场和区域进行全面的安全生产管理和监督检查并对施工现场临时用电进行安全检查与指导。
2、及时纠正乙方施工人员违章指挥和违章作业行为,并按照有关规定予以查处。对乙方施工区域内的重大安全事故隐患,应开具隐患通知单。
3、要求乙方提供施工现场《生产安全事故应急救援预案》。
4、建立健全施工现场各项安全生产管理制度。
5、对乙方的安全生产培训、劳动保护用品的使用和危险预知工作提出指导意见,并监督落实情况。
6、对乙方提出的安全生产要求积极提供帮助。
7、向乙方提供电源时,应与乙方办理交接验收手续。
8、按照有关临时用电标准对乙方的临时用电设备设施进行监督和检查。发现乙方在临时用电中存在隐患必须责成乙方以整改。并监督整改落实情况。
9、对乙方特种作业人员的名单、操作证复印件及培训记录进行存档备案。
二、乙方的权利、责任和义务:
1、遵守国家有关施工现场安全生产的法规和管理制度,建立健全安全生产责任制和安全生产管理制度。严格执行国家施工现场临时用电及机械设备使用有关技术规范和安全操作规程,对施工区域内自行管辖的临时用电负全面管理责任。
2、服从甲方安全生产管理。
3、乙方必须为施工作业人员参加人身意外保险。
4、乙方造成生产安全事故,导致人员伤亡时,由乙方承担事故责任和经济责任。
5、未经安全生产教育培训和无证人员,不得上岗作业。
三、协议内容:
(一)登高上架要求
1、施工采用的脚手架、安全网必须由专业人员搭设,由项目经理(工地负责人)组织技术部、安全部门的有关人员验收合格后,方可投入使用,应按类别逐项查验,并应有验收记录。
2、高空作业时,严禁立体交叉作业。水平作业时,各工位间必须有一定的距离,作业人员必须配备相应劳动保护用品如安全帽、安全带、防护眼镜、防护手套、防护工作服等,并应正确使用,施工作业现场周边设置相关安全标志牌,并设专人巡查。
3、进入施工现场的人员必须佩带安全帽。凡在2m以上高处作业人员,必须正确使用安全带,安全带应高挂低用。
4、工程施工前,除工程技术人员对施工作业人员进行书面安全技术交底,并履行签字手续外,必须各施工班组长向施工人员进行班组交底及履行签字手续。
5、特殊工程施工项目如;电气、易燃、易爆容器、管道等,必须持有效证件及上岗证的专业人员操作。
6、拆除施工现场,必须设有临时急救人员及药品或设立临时救助站。
7、严禁在工作前和工作中饮酒,不许穿高跟鞋、硬底鞋、拖鞋,应穿防滑鞋。
8、进入施工现场须服从领导和安检人员的指挥,遵守劳动纪律、严守岗位、不串岗,作业时思想要集中。
9、严禁随意拆除或损坏防护栏杆、拉杆、安全网、跳板、脚手板、支撑等防护设施。
10、面砖搬运、安装时应注意安全,防止因面砖翻倒而受伤。
11、各种材料加工时注意操作安全及施工用电,不得随便乱接乱拉电线。
12、施工现场各周边洞口,必须有符合安全规范要求的安全防护,若因施工作业场地要求而拆除的,操作完成后,立即恢复。
13、脚手架上禁止有探头板、飞跳板,脚手架上应满铺脚手板,脚手架上禁止堆放砂浆、砖块、面砖等物料。
14、不准从正在起吊、运吊中的物件下通过,以防突然事件,不准从高处往下跑、跳;不准在没有防护的外墙和外悬挑板等建筑物上行走;不准站在小推车等不稳定的物件上操作;不得攀登起重臂、绳索、脚手架、井字架和随同运料的吊盘和吊篮及吊装物上下;井架吊篮禁止乘人。
15、作业中不得往下投掷物件、碎砖、灰渣等,清理物料时应设溜槽或使用垃圾桶;手持工具和零星物料应随时放在工具袋中。
16、年龄未满18周岁者,患有心脏病、贫血、高血压、低血压、癫痫病及其他不适于高空作业的病症者严禁从事外墙施工作业。
17、遇到雷雨、大风等天气外墙施工应暂停作业。
18、手持电动工具使用前应进行检查,空载试验运转正常合格后方可使用,转移工作点应切断电源,潮湿场所严禁使用手持式电动工具。
19、作业前必须认真检
</pre>
</template>
\ No newline at end of file
<template>
<div class="app-container">
<div class="app-container" v-if="order">
<el-card class="card">
<div slot="header" class="card-title">
订单编号:{{order.orderNo}}
<template v-if="order.containerNumber">- {{order.containerNumber}}</template>
</div>
<el-row :gutter="20">
<el-col :span="12">
<el-descriptions class="margin-top" border title="发货人" :column="1" labelStyle="width:150px">
<el-col :span="12" v-if="order.consignorVO">
<el-descriptions class="margin-top" border title="发货人" :column="1" :labelStyle="{width:'150px'}">
<el-descriptions-item label="发货人">{{order.consignorVO.name}}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{order.consignorVO.phone}}</el-descriptions-item>
<el-descriptions-item label="发货人邮箱">{{order.consignorVO.email}}</el-descriptions-item>
......@@ -16,8 +16,8 @@
</el-descriptions-item>
</el-descriptions>
</el-col>
<el-col :span="12">
<el-descriptions class="margin-top" border title="收货人" :column="1" labelStyle="width:150px">
<el-col :span="12" v-if="order.consigneeVO">
<el-descriptions class="margin-top" border title="收货人" :column="1" :labelStyle="{width:'150px'}">
<el-descriptions-item label="收货人">{{order.consigneeVO.name}}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{order.consigneeVO.phone}}</el-descriptions-item>
<el-descriptions-item label="收货人邮箱">{{order.consigneeVO.email}}</el-descriptions-item>
......@@ -99,7 +99,7 @@
</el-tab-pane>
<el-tab-pane label="订单动态" name="second">
<el-timeline v-if="order.orderTimeVOList && order.orderTimeVOList.length" :reverse="true">
<el-timeline-item v-for="(activity, index) in orderTimeVOList.orderTimeVOList" :key="index" :timestamp="activity.timestamp">
<el-timeline-item v-for="(activity, index) in order.orderTimeVOList" :key="index" :timestamp="activity.timestamp">
{{ activity.titleZh }}
</el-timeline-item>
</el-timeline>
......@@ -141,7 +141,7 @@ export default {
return {
// 遮罩层
loading: false,
order: {},
order: null,
activeName: 'first',
orderId: 17,
tableData: [],
......
......@@ -246,21 +246,24 @@
</el-descriptions>
<div class="card-title" style="padding:20px 0;">优惠信息</div>
<el-row v-for="(item, index) in getDictDatas(DICT_TYPE.ECW_COUPON_TYPE)" :key="item.value">
<el-row v-for="(item, index) in couponTypeList" :key="item.value" :gutter="10">
<el-col :span="2">{{index+1}}.{{item.label}}</el-col>
<el-col :span="4">
<!-- <el-select placeholder="">
</el-select> -->
<el-select placeholder="请选择优惠" v-model="selectedCoupons[item.value]" :data-type="item.value" clearable>
<template v-for="coupon in couponList">
<el-option v-if="coupon.type == +item.value" :key="coupon.couponId" :label="coupon.titleZh" :value="coupon.couponId"></el-option>
</template>
</el-select>
</el-col>
<el-col :span="2">-10美元</el-col>
<el-col :span="5">有效期:永久有效</el-col>
<el-col :span="2" v-if="getCoupon(selectedCoupons[item.value])"> -{{getCoupon(selectedCoupons[item.value]).reduceAmount}} 美元</el-col>
<el-col :span="5" v-if="getCoupon(selectedCoupons[item.value])">有效期:{{getCoupon(selectedCoupons[item.value]).endTime || '永久有效'}}</el-col>
</el-row>
<el-descriptions :column="1" border>
<el-descriptions-item label="优惠合计">
1233.1美元
{{discount}}美元
</el-descriptions-item>
<el-descriptions-item label="预计费用">
// TODO
</el-descriptions-item>
</el-descriptions>
</el-card>
......@@ -321,8 +324,8 @@
<dict-selector :type="DICT_TYPE.DRAWEE" v-model="form.drawee" defaultable form-type="radio" />
</el-descriptions-item>
<el-descriptions-item v-if="form.drawee==3" label="费用类型" :span="2">
<template v-for="(item,index) in customDraweeVOList" v-key="index">
<el-form-item :label="item.name" :key="index" >
<template v-for="(item,index) in customDraweeList" v-key="index">
<el-form-item :label="item.label" :key="index" >
<dict-selector :type="DICT_TYPE.DRAWEE" :filter="(e) => e.value == '1' || e.value == '2'" v-model="item.value" form-type="radio" />
</el-form-item>
</template>
......@@ -372,7 +375,7 @@
</el-card>
<el-form-item label="">
<el-form-item label="" style="margin: 30px 0">
<el-button type="primary" @click="submitForm(0)">保 存</el-button> <!--草稿-->
<el-button type="primary" @click="submitForm(2)">新建</el-button> <!--待入仓-->
<el-button @click="$router.back()">返回</el-button>
......@@ -382,7 +385,7 @@
</template>
<script>
import { createOrder, updateOrder, getOrder, getProductFeeList } from "@/api/ecw/order";
import { createOrder, updateOrder, getOrder, getProductFeeList, getOrderDetail } from "@/api/ecw/order";
import ProductSelector from '@/components/ProductSelector'
import {getProductAttrList} from '@/api/ecw/productAttr'
import {getChannelList} from '@/api/ecw/channel'
......@@ -404,13 +407,8 @@ export default {
},
data() {
return {
customDraweeVOList: [
{name: '运费',value: undefined},
{name: '清关费',value: undefined},
{name: '其他费用',value: undefined},
{name: '报关费',value: undefined}
],
draweeList: [],
customDraweeList: [],
// draweeList: [],
// 遮罩层
loading: true,
productList:[], // 商品信息
......@@ -421,12 +419,14 @@ export default {
treeList: [],
consignorContact: {}, // 发货联系人
consigneeContact:{}, // 收货联系人
consignee: null,
consignor: null,
/* consignee: null,
consignor: null, */
transportList: [],
currencyList:[],
unitList:[],
couponList: [],
couponTypeList: [],
selectedCoupons: {},
fee: {}, // 费用
// 表单参数
form: {
......@@ -472,6 +472,13 @@ export default {
transport(){
return this.transportList.find(item => item.value == this.form.transportId)
},
// 根据id获取优惠券
getCoupon(){
return couponId => {
if(!couponId) return null
return this.couponList.find(item => item.couponId == couponId)
}
},
currentcyMap(){
let map = {}
this.currencyList.forEach(item => {
......@@ -501,6 +508,10 @@ export default {
})
return sum
},
// 总优惠金额
discount(){
return 0
}
},
watch:{
......@@ -515,14 +526,14 @@ export default {
'form.transportId'(){
this.getOpenedRouterList
},
// 发货联系人发生变化获取发货客户
/* // 发货联系人发生变化获取发货客户
consignorContact(){
this.getConsignor()
},
// 收货联系人发生变化获取收货客户
consigneeContact(){
this.getConsignee()
},
}, */
productList:{
deep: true,
handler(){
......@@ -537,12 +548,20 @@ export default {
}
},
created() {
this.couponTypeList = this.getDictDatas(this.DICT_TYPE.ECW_COUPON_TYPE)
this.couponTypeList.forEach(item => {
this.$set(this.selectedCoupons, item.value, null)
})
if(this.$route.query.id){
getOrder(this.$route.query.id).then(res => {
getOrderDetail(this.$route.query.id).then(res => {
this.form = res.data
this.form.consignorContactsId = res.data.consignorVO.customerContactsId
this.form.consigneeContactsId = res.data.consigneeVO.customerContactsId
/* this.form.consignorContactsId = res.data.consignorVO.customerContactsId
this.form.consigneeContactsId = res.data.consigneeVO.customerContactsId */
this.form.deliveryDate = res.data.consigneeVO.deliveryDate
this.form.orderItemVOList.forEach(item => {
item.prodAttrArr = item.prodAttrIds.split(',').filter(item => item != '')
this.addProduct(Object.assign({}, item))
})
})
}else this.addProduct()
......@@ -552,6 +571,13 @@ export default {
getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data)
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => {
this.customDraweeList.push({
label: item.label, // 显示文字
name: item.value, // key值
value: 2 // 1 发货人,2收货人,默认收货人,可修改
})
})
},
methods: {
onProductChange(row, product){
......@@ -562,7 +588,7 @@ export default {
onAreaChange(type, val){
this.$set(this.form, type, val)
},
// 获取发货人
/* // 获取发货人
getConsignor(){
if(!this.consignorContact){
this.consignor = null
......@@ -579,7 +605,7 @@ export default {
getCustomer(this.consigneeContact.customerId).then(res => {
this.consignee = res.data
})
},
}, */
onProductAttrChange(row, attr){
console.log(attr)
this.calculationPrice(row)
......@@ -680,12 +706,14 @@ export default {
item.channelIds = Array.from(item.channelIdSet).join(',')
}
})
let coupons = Object.values(this.selectedCoupons).filter(item => !!item)
// 修改的提交
if (this.form.orderNo != null) {
let data = Object.assign({}, this.form, {
customDraweeVOList: this.customDraweeVOList,
customDraweeVOList: this.customDraweeList,
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
orderItemVOList: this.productList
orderItemVOList: this.productList,
couponIds: coupons.join(",")
})
updateOrder(data).then(response => {
this.$modal.msgSuccess("修改成功");
......@@ -694,12 +722,13 @@ export default {
return;
}
let data = Object.assign({
consigneeId: this.consignee.id,
consignorId: this.consignor.id,
customerId: this.consignor.id,
consigneeId: this.consigneeContact.customerId,
consignorId: this.consignorContact.customerId,
customerId : this.consignorContact.customerId,
couponIds: coupons.join(","),
status: type
}, this.form, {
customDraweeVOList: this.customDraweeVOList,
customDraweeVOList: this.customDraweeList,
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
orderItemVOList: this.productList
})
......
......@@ -60,7 +60,7 @@
<el-button>取消</el-button>
</div>
<div style="padding: 20px">
<my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" />
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div>
</div>
</template>
......@@ -69,10 +69,10 @@
import {getOrder, feeApplicationCreate, ApplicationListByOrderId, applicationUpdate} from "@/api/ecw/order";
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import Template from "@/views/cms/template";
import { getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import workFlow from "@/components/WorkFlow";
export default {
name: "feeApplication",
components: {Template},
components: {Template,workFlow},
props:{
orderId:[Number, String],
},
......@@ -85,10 +85,7 @@ export default {
STATUS:{},
isModify:[],
isModifyIf:false,
bpmnXML: null,
bpmnControlForm: {
prefix: "activiti"
},
selectedUsers:[]
}
},
created() {
......@@ -100,10 +97,8 @@ export default {
this.getOrderList()
this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{
this.STATUS[e.value] = e.label
}),
getProcessDefinitionBpmnXMLByKey("free_apply").then(response => {
this.bpmnXML = response.data
})
})
},
computed:{
forbidden(){
......@@ -142,10 +137,11 @@ export default {
})
}else {
if(this.list[this.list.length - 1].status === 0){
feeApplicationCreate( {...this.list[this.list.length - 1],status:1}).then(r=>{
feeApplicationCreate( {...this.list[this.list.length - 1],status:1,copyUserId:this.selectedUsers.join(',')}).then(r=>{
if(r.code === 0){
this.getOrderList();
this.$message.success('添加成功');
this.selectedUsers = [];
}
})
}
......
......@@ -10,7 +10,7 @@
<el-divider></el-divider>
<h2>审批流程</h2>
<div style="padding: 20px">
<my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" />
<work-flow xmlkey="retired_warehouse" v-model="params.copyUserId" />
</div>
<div>
<el-button @click="submit" type="primary" style="margin-right: 20px;">确定退仓</el-button>
......@@ -23,12 +23,16 @@
import {getOrder} from "@/api/ecw/order";
import {orderWarehouseInDelete} from "@/api/ecw/batchSingleApplication";
import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import workFlow from "@/components/WorkFlow";
export default {
name: "withdrawal",
props:{
orderId:String
},
components:{
workFlow
},
data(){
return {
orderDetails:{},
......@@ -40,14 +44,12 @@ export default {
orderId:undefined,
orderNo:undefined,
reason:'',
}
copyUserId:[]
},
}
},
created() {
getOrder(this.orderId).then(r => this.orderDetails = r.data);
getProcessDefinitionBpmnXMLByKey("retired_warehouse").then(response => {
this.bpmnXML = response.data
})
},
methods:{
submit(){
......
......@@ -191,14 +191,14 @@ export default {
transportPrice: [{ required: true, message: "海运费不能为空", trigger: "blur" }],
clearancePrice: [{ required: true, message: "清关费不能为空", trigger: "blur" }],
advanceStatus: [{ required: true, message: "是否预付不能为空", trigger: "blur" }],
containerLocation: [{ required: true, message: "货柜位置不能为空", trigger: "blur" }],
square: [{ required: true, message: "方数不能为空", trigger: "blur" }],
//containerLocation: [{ required: true, message: "货柜位置不能为空", trigger: "blur" }],
//square: [{ required: true, message: "方数不能为空", trigger: "blur" }],
// zhongLinjie:[{ required: true, message: "默认重货标准不能为空", trigger: "blur" }],
// paoLinjie:[{ required: true, message: "默认泡货标准不能为空", trigger: "blur" }],
needBook: [{ required: true, message: "预约入仓不能为空", trigger: "blur" }],
},
product: null,
productType: null,
/* productType: null, */
currencyList: [],
unitList: [],
productTypeList: [],
......@@ -219,11 +219,11 @@ export default {
this.form.lineChannelList = []
}
},
product() {
/* product() {
getProductType(this.product.typeId).then(res => {
this.productType = res.data
})
},
}, */
form(val) {
if (!val) return
// 特殊需求回显
......@@ -265,18 +265,29 @@ export default {
}
this.lineList = res.data
})
}
/* // 指定产品
else if (this.$route.query.product_id) {
getProduct(this.$route.query.product_id).then(res => {
this.product = res.data
})
} */
// 获取类型列表
else {
}else{
this.productDisabled = false
// 获取类型列表
getProductTypeList().then(res => this.productTypeList = res.data)
if (this.$route.query.product_type) {
this.$set(this.form, 'productType', +this.$route.query.product_type)
}
if (this.$route.query.product_id) {
this.$set(this.form, 'productId', +this.$route.query.product_id)
/*
getProduct(this.$route.query.product_id).then(res => {
this.product = res.data
}) */
}
}
/* // 指定产品
else
} */
getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data)
......
......@@ -6,7 +6,7 @@
<el-form-item label="关键字" prop="titleZh">
<el-input v-model="queryParams.titleZh" placeholder="请输入关键字" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
......@@ -19,7 +19,7 @@
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['ecw:product-type:create']">新增</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
......@@ -41,7 +41,7 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="typeProductList(scope.row)"
v-hasPermi="['ecw:product:query']">品列表</el-button>
v-hasPermi="['ecw:product:query']">品列表</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['ecw:product-type:update']">修改</el-button>
......
......@@ -10,7 +10,11 @@
<el-row>
<ueditor />
</el-row>
<el-card style="margin:20px 0">
<div slot="header">测试审批抄送</div>
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
<div>选择的用户:{{selectedUsers}}</div>
</el-card>
<el-row>
<my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" />
</el-row>
......@@ -49,7 +53,7 @@ import Ueditor from '@/components/Ueditor'
import {
getProcessDefinitionBpmnXMLByKey
} from "@/api/bpm/definition";
import WorkFlow from '@/components/WorkFlow'
const lineChartData = {
newVisitis: {
expectedData: [100, 120, 161, 134, 105, 160, 165],
......@@ -77,12 +81,13 @@ export default {
RaddarChart,
PieChart,
BarChart,
Ueditor
Ueditor,
WorkFlow
},
data() {
return {
lineChartData: lineChartData.newVisitis,
selectedUsers:[],
// BPMN 数据
bpmnXML: null,
bpmnControlForm: {
......
......@@ -69,7 +69,7 @@
@pagination="getList"/>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典名称" prop="name">
<el-input v-model="form.name" placeholder="请输入字典名称" />
......
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