Commit 2ab02011 authored by 我在何方's avatar 我在何方

更新拆单

parents 0f2aff51 0faed767
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.4.3", "fuse.js": "6.4.3",
"highlight.js": "9.18.5", "highlight.js": "9.18.5",
"html2canvas": "^1.4.1",
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
...@@ -69,6 +70,7 @@ ...@@ -69,6 +70,7 @@
"vue-ueditor-wrap": "^2.5.6", "vue-ueditor-wrap": "^2.5.6",
"vuedraggable": "2.24.3", "vuedraggable": "2.24.3",
"vuex": "3.6.0", "vuex": "3.6.0",
"xlsx": "^0.18.5",
"xml-js": "^1.6.11" "xml-js": "^1.6.11"
}, },
"devDependencies": { "devDependencies": {
......
...@@ -31,25 +31,38 @@ export default { ...@@ -31,25 +31,38 @@ export default {
margin-right:10px; margin-right:10px;
} }
} }
.ml-10{ .flex{
margin-left: 10px; display: flex;
} }
.mr-10{ .flex-1{
margin-right: 10px; flex: 1;
} }
.mb-10{ .center{
margin-bottom: 10px; align-content: center;
text-align: center;
} }
.mt-10{ .flex-center{
margin-top: 10px; display: flex;
align-items: center;
justify-content: center;
} }
.w-100{ $sizes: 10,20,30,50,100,150,200,500,800,1000;
width: 100px; @for $i from 1 through length($sizes){
} $item: nth($sizes, $i);
.w-150{ .ml-#{$item}{
width: 150px; margin-left: #{$item}px;
} }
.w-200{ .mr-#{$item}{
width: 200px; margin-right: #{$item}px;
}
.mb-#{$item}{
margin-bottom: #{$item}px;
}
.mt-#{$item}{
margin-top: #{$item}px;
}
.w-#{$item}{
width: #{$item}px;
}
} }
</style> </style>
...@@ -56,3 +56,20 @@ export function warehouseApprovalGetById(params){ ...@@ -56,3 +56,20 @@ export function warehouseApprovalGetById(params){
params, params,
}) })
} }
//调仓-查看状态
export function adjustApplyStatus(params){
return request({
url:'/order/order-warehouse-in/adjust-apply-status',
method:'get',
params
})
}
//调仓-撤销
export function cancelAdjustApply(data){
return request({
url:'/order/order-warehouse-in/cancel-adjust-apply',
method:'post',
data
})
}
...@@ -163,6 +163,15 @@ export function orderWarehouseIn(data){ ...@@ -163,6 +163,15 @@ export function orderWarehouseIn(data){
}) })
} }
// 入仓
export function orderWarehouseInUpdateApply(data){
return request({
url: '/order/order-warehouse-in/update-apply',
method: 'put',
data
})
}
// 入仓完成 // 入仓完成
export function orderWarehouseInFinish(data){ export function orderWarehouseInFinish(data){
return request({ return request({
......
...@@ -25,4 +25,21 @@ export function create(data){ ...@@ -25,4 +25,21 @@ export function create(data){
method: 'post', method: 'post',
data data
}) })
}
// 创建订单控货人放货记录
export function createPick(data){
return request({
url: '/ecw/order-cargo-control-pick/create',
method: 'post',
data
})
}
//获得控货订单放货编辑详情
export function getRleaseInfo(orderId){
return request({
url:'/ecw/order-cargo-control/release/info/' + orderId,
method:'get'
})
} }
\ No newline at end of file
...@@ -34,6 +34,14 @@ export function getNeedKnow(id) { ...@@ -34,6 +34,14 @@ export function getNeedKnow(id) {
}) })
} }
// 根据key获得须知
export function getNeedKnowByKey(key) {
return request({
url: '/system/need-know/getByKey?key=' + key,
method: 'get'
})
}
// 获得须知分页 // 获得须知分页
export function getNeedKnowPage(query) { export function getNeedKnowPage(query) {
return request({ return request({
......
<template>
<selector v-model="valueSync" :options="countryList" value-field="tel" key-field="id" :label-field="item => item.nameZh + item.tel" filterable clearable></selector>
</template>
<script>
import {getCountryListAll} from '@/api/ecw/country'
import selector from '@/components/Selector'
export default {
components: {selector},
props: {
value: String,
},
data(){
return {
valueSync: '',
countryList:[]
}
},
watch:{
valueSync(){
this.$emit('input', this.valueSync)
},
value(){
if(this.value)this.valueSync = this.value
}
},
created(){
if(this.value){
this.valueSync = this.value
}
getCountryListAll().then(res => {
this.countryList = res.data
})
},
methods:{
}
}
</script>
\ No newline at end of file
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
<el-select v-model="formData.country"> <el-select v-model="formData.country">
<el-option v-for="(item) in treeList" :value="item.id" :label="item.titleZh" :key="item.id" /> <el-option v-for="(item) in treeList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select> </el-select>
<el-select v-model="formData.province"> <el-select v-model="formData.province" class="ml-10">
<el-option v-for="(item) in provinceList" :value="item.id" :label="item.titleZh" :key="item.id" /> <el-option v-for="(item) in provinceList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select> </el-select>
<el-select v-model="formData.city"> <el-select v-model="formData.city" class="ml-10">
<el-option v-for="(item) in cityList" :value="item.id" :label="item.titleZh" :key="item.id" /> <el-option v-for="(item) in cityList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select> </el-select>
</div> </div>
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</div> </div>
</template> </template>
<script> <script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts' import {getCustomerContactsSelect, getCustomerContactsListByCustomer} from '@/api/ecw/customerContacts'
import QuickCreate from '@/views/ecw/customer/components/quickCreate' import QuickCreate from '@/views/ecw/customer/components/quickCreate'
export default { export default {
...@@ -82,11 +82,13 @@ export default { ...@@ -82,11 +82,13 @@ export default {
}, },
onQuickCreateSuccess(id){ onQuickCreateSuccess(id){
this.showQuickCreate = false this.showQuickCreate = false
getCustomerContactsSelect({ids: id}).then(res => { getCustomerContactsListByCustomer({customerId: id}).then(res => {
if(!res.data || !res.data.length){ if(!res.data || !res.data.length){
return this.$message.error('联系人信息获取失败') return this.$message.error('联系人信息获取失败')
} }
this.list.unshift(res.data[0]) let data = res.data[0]
data.contactsName = data.name // 字段名跟getCustomerContactsSelect对齐
this.list.unshift(data)
this.index = 0 this.index = 0
}) })
} }
......
<template>
<div class="need-know" :id="'need-know_' + keyname" v-if="detail">
<!-- <h2>{{detail.titleZh}}</h2> -->
<div class="body" v-html="detail.contentZh"></div>
</div>
</template>
<script>
import {getNeedKnowByKey} from '@/api/system/needKnow'
import html2canvas from 'html2canvas'
import FileSaver from 'file-saver'
export default {
props:{
keyname: String
},
data(){
return {
detail: null
}
},
created(){
getNeedKnowByKey(this.keyname).then(res => {
this.detail = res.data
})
},
methods:{
download(){
// 直接保存图片
let l = this.$loading()
html2canvas(document.querySelector("#need-know_" + this.keyname)).then(canvas => {
canvas.toBlob((blob) => {
FileSaver.saveAs(blob, this.keyname + '.png')
})
}).finally(res => {
l.close()
});
},
}
}
</script>
<style scoped>
.body img{
max-width: 100%;
}
.need-know{
padding: 20px;
}
</style>
\ No newline at end of file
<template> <template>
<el-select v-model="valueSync" :multiple="multiple" :disabled="disabled"> <el-select v-model="valueSync" :multiple="multiple" :disabled="disabled" :filterable="filterable">
<el-option v-for="item in optionsFormated" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in optionsFormated" :key="item.key" :label="item.label" :value="item.value" />
</el-select> </el-select>
</template> </template>
<script> <script>
...@@ -21,6 +21,11 @@ export default { ...@@ -21,6 +21,11 @@ export default {
type: String, type: String,
default: 'value' default: 'value'
}, },
keyField:{
type: String,
default: 'value'
},
filterable: Boolean,
multiple: Boolean, multiple: Boolean,
clearable: Boolean, clearable: Boolean,
defaultable: Boolean, // 没有值的时候是否选择第一项 defaultable: Boolean, // 没有值的时候是否选择第一项
...@@ -32,7 +37,8 @@ export default { ...@@ -32,7 +37,8 @@ export default {
this.options.forEach((item, index) => { this.options.forEach((item, index) => {
arr.push({ arr.push({
label: typeof this.labelField == 'string' ? item[this.labelField] : (this.labelField)(item, index), label: typeof this.labelField == 'string' ? item[this.labelField] : (this.labelField)(item, index),
value: item[this.valueField] value: item[this.valueField],
key: item[this.keyField]
}) })
}) })
return arr return arr
......
...@@ -134,7 +134,7 @@ import {getActivityList} from "@/api/bpm/activity"; ...@@ -134,7 +134,7 @@ import {getActivityList} from "@/api/bpm/activity";
import specialDiscount from "@/views/ecw/offer/specialDiscount" import specialDiscount from "@/views/ecw/offer/specialDiscount"
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails"; import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
import shippingDetail from '@/views/ecw/box/shippingDetail' import shippingDetail from '@/views/ecw/box/shippingDetail'
import SplitDetail from '@/views/ecw/order/components/SplitDetail'
// 流程实例的详情页,可用于审批 // 流程实例的详情页,可用于审批
export default { export default {
...@@ -143,7 +143,8 @@ export default { ...@@ -143,7 +143,8 @@ export default {
Parser, Parser,
specialDiscount, specialDiscount,
warehouseDetails, warehouseDetails,
shippingDetail shippingDetail,
SplitDetail
}, },
computed:{ computed:{
matterNum(){ matterNum(){
...@@ -237,6 +238,10 @@ export default { ...@@ -237,6 +238,10 @@ export default {
shipment_preassemble: { shipment_preassemble: {
component: "shippingDetail", component: "shippingDetail",
processId: this.processInstance.businessKey, processId: this.processInstance.businessKey,
},
split_order: {
component: "splitDetail",
id: this.processInstance.businessKey,
} }
} }
return map[this.processInstance.processDefinition.formCustomViewPath] return map[this.processInstance.processDefinition.formCustomViewPath]
......
...@@ -170,8 +170,11 @@ export default { ...@@ -170,8 +170,11 @@ export default {
}, },
}, },
watch: { watch: {
processId(val) { processId: {
this.getApprovalDetail(val); immediate: true,
handler(val) {
this.getApprovalDetail(val);
},
}, },
boxBackVO(val) { boxBackVO(val) {
// 柜型 // 柜型
......
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-card>
<div slot="header" class="card-title">拆单申请-{{orderData.orderNo||''}}</div>
<div class="btn-header">
<span class="card-title">原单信息</span>
<div>
<span v-if="orderData.status==99" class="red">异常无法拆单</span>
<el-button v-else type="primary" @click="addSplit">新建拆单 </el-button>
</div>
</div>
<el-descriptions :column="4">
<el-descriptions-item label="唛头">
{{orderData.marks?orderData.marks:''}}
</el-descriptions-item>
<el-descriptions-item label="已到箱数/总箱数">
<span>{{orderData.sumNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span>
</el-descriptions-item>
<el-descriptions-item label="订单状态">
<!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="orderData.status" /> -->
{{orderData.status==99?'异常':'正常'}}
</el-descriptions-item>
<el-descriptions-item label="送货日期">
{{orderData.consigneeVO?orderData.consigneeVO.deliveryDate:''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" />
</el-descriptions-item>
<el-descriptions-item label="始发地">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:''}}
</el-descriptions-item>
<el-descriptions-item label="目的地">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.destTitleZh:''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item label="发货人姓名">
{{orderData.consignorVO?orderData.consignorVO.name||'':''}}
</el-descriptions-item>
<el-descriptions-item label="发货公司">
{{orderData.consignorVO?orderData.consignorVO.company||'':''}}
</el-descriptions-item>
<el-descriptions-item label="发货电话">
{{orderData.consignorVO?(orderData.consignorVO.phone?(orderData.consignorVO.countryCode+orderData.consignorVO.phone):''):''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item label="收货人姓名">
{{orderData.consigneeVO?orderData.consigneeVO.name||'':''}}
</el-descriptions-item>
<el-descriptions-item label="收货公司">
{{orderData.consigneeVO?orderData.consigneeVO.company||'':''}}
</el-descriptions-item>
<el-descriptions-item label="收货电话">
{{orderData.consigneeVO?(orderData.consigneeVO.phone?(orderData.consigneeVo.countryCode+orderData.consigneeVO.phone):''):''}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="card">
<!-- 列表 -->
<div slot="header" class="card-title">货物信息</div>
<el-table id='table' v-loading="loading" border :data="orderData.orderItemVOList" :summary-method="getSummaries" show-summary>
<el-table-column label="序号" align="center" prop="id" type="index" width="60">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="品名" align="center">
<template slot-scope="scope">
<el-row>{{scope.row.prodTitleZh}}</el-row>
<el-row>{{scope.row.prodTitleEn}}</el-row>
</template>
</el-table-column>
<el-table-column label="装柜货物属性" align="center" width="600">
<template slot-scope="scope">
<el-row>
<span>规格:{{scope.row.boxGauge}}</span>
</el-row>
<el-row>
<span>品牌:
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
</span>
<span style="margin-left: 10px;">箱数:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.cartonsNum : 0 }}</span>
<span style="margin-left: 10px;">体积:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.volume : 0 }}</span>
<span style="margin-left: 10px;">重量:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.weight : 0 }}kg</span>
</el-row>
</template>
</el-table-column>
<el-table-column label="最后操作时间" align="center">
<template slot-scope="scope">
<span>{{parseTime(scope.row.updateTime)}}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
</el-table>
</el-card>
<el-card class="card" v-if="splitData.length>0">
<!-- 列表 -->
<div slot="header" class="card-title">拆单信息</div>
<div v-for="(item, index) in splitData" :key="index">
<div class="btn-header">
<div>
<p class="card-info">
<span class="card-title">
{{item.orderNo}}
</span>
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportId" />
<span>发往:{{importCityName(item.dstWarehouseId)}}</span>
</p>
</div>
<div>
<el-button v-if="index==0" disabled type="primary" @click="addShop(index)">放入</el-button>
<el-button v-if="index!=0" type="primary" @click="addShop(index)">放入</el-button>
<el-button type="primary" plain @click="deleteSplit(item.id)">删除</el-button>
</div>
</div>
<el-table border :data="item.orderSplitItemBackVOList">
<el-table-column label="序号" align="center" prop="id" type="index">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="品名" align="center">
<template slot-scope="scope">
<el-row>{{scope.row.prodTitleZh}}</el-row>
<el-row>{{scope.row.prodTitleEn}}</el-row>
</template>
</el-table-column>
<el-table-column label="品牌" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
</template>
</el-table-column>
<el-table-column label="体积" align="center">
<template slot-scope="scope">
<span>{{scope.row.volume}}</span>
</template>
</el-table-column>
<el-table-column label="重量" align="center">
<template slot-scope="scope">
<span>{{scope.row.weight}}</span>
</template>
</el-table-column>
<el-table-column label="箱数" align="center">
<template slot-scope="scope">
<span>{{scope.row.num}}</span>
</template>
</el-table-column>
<el-table-column label="计划装柜" align="center">
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button v-if="index==0" disabled size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
<div slot="footer" class="card footer_btn" v-if="orderData.status!=99">
<el-button v-if="orderData.status!=19" type="primary" @click="submitForm">提交申请</el-button>
<el-button v-if="orderData.status!=19" plain type="primary" @click="$emit('closeDialog')">取消</el-button>
<el-button v-if="orderData.status==19" type="primary" disabled>审核中</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="cancelSplit">取消审核</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="$emit('closeDialog')">返回</el-button>
</div>
<!-- 对话框(添加 / 修改) -->
<el-dialog title="新建拆单" :visible.sync="open" width="400px" append-to-body>
<el-form ref="formSplit" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-form-item label="运输方式">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" formatter="number" />
</el-form-item>
</el-row>
<el-row>
<el-form-item label="目的仓库:">
<el-select v-model="form.destWarehouseId" placeholder="请选择目的仓库">
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出货渠道" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<el-select v-model="form.channelId" placeholder="请选择出货渠道">
<el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="item.nameZh" :value="item.channelId" />
</el-select>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="haddleAdd">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 对话框(添加 / 修改) -->
<el-dialog title="放入品名" :visible.sync="shopOpen" width="400px" append-to-body>
<el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="80px">
<el-row>
<el-form-item label="中文品名:">
<el-select v-model="shopForm.prodTitleZh" placeholder="请选择中文品名" @change="changeProdTitleZh">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleZh" :value="item.prodTitleZh" :key="item.prodTitleZh"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="英文品名:">
<el-select v-model="shopForm.prodTitleEn" placeholder="请选择英文品名" @change="changeProdTitleEn">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleEn" :value="item.prodTitleEn" :key="item.prodTitleEn"></el-option>
</el-select>
</el-form-item>
<el-form-item label="剩余箱数:">
{{shopForm.sum||0}}
</el-form-item>
<el-form-item label="放入箱数:">
<el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum"></el-input-number>
</el-form-item>
<el-form-item label="备注信息:">
<el-input v-model="shopForm.remarks"></el-input>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="shopAdd">确 定</el-button>
<el-button @click="shopCancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDictData, getDictDatas } from "@/utils/dict";
import {
getSplitList,
splitApply,
createSplit,
cancelApply,
createSplitItem,
deleteSplitItem,
deleteSplit,
} from "@/api/ecw/orderHandle";
import { getTradeCityList } from "@/api/ecw/region";
import { getChannelList } from "@/api/ecw/channel";
import WorkFlow from "@/components/WorkFlow";
import { getOrder } from "@/api/ecw/order";
export default {
name: "splitOrder",
components: {
WorkFlow,
},
props: {
currRow: Object,
},
data() {
return {
checked: false,
orderData: {},
splitData: [],
splitIndex: 0,
channelData: [],
tradeCityList: [],
multipleSelection: [],
loading: false,
open: false,
form: {},
selectedUsers: [],
shopOpen: false,
shopForm: {},
// 表单校验
rules: {
transportId: [
{ required: true, message: "请选择运输方式", trigger: "change" },
],
warehouseIds: [
{ required: true, message: "请选择目的仓库", trigger: "change" },
],
channelId: [
{ required: true, message: "请选择出货渠道", trigger: "change" },
],
},
// 表单校验
shopRules: {
prodTitleZh: [
{ required: true, message: "请选择中文品名", trigger: "change" },
],
prodTitleEn: [
{ required: true, message: "请选择英文品名", trigger: "change" },
],
},
queryParams: {
orderId: 96,
lang: 0,
},
query: {
page: 1,
rows: 20,
},
splitItemIndex: 0,
};
},
created() {
this.getChannel();
getTradeCityList().then((res) => (this.tradeCityList = res.data));
this.queryParams.orderId = this.currRow.orderId;
this.getList();
this.getOrder();
},
watch: {
//监听table这个对象
tableData: {
// 立即监听
immediate: true,
handler() {
this.$nextTick(() => {
const tds = document.querySelectorAll(
"#table .el-table__footer-wrapper tr>td"
);
// colSpan合并列
tds[1].colSpan = 5;
tds[1].style.textAlign = "left";
tds[2].style.display = "none";
tds[3].style.display = "none";
tds[4].style.display = "none";
});
},
},
},
computed: {
getDictData() {
return (type, value) => getDictData(type, value) || {};
},
getDictDatas() {
return getDictDatas;
},
importCityList() {
return this.tradeCityList.filter((item) => item.type == 1);
},
},
methods: {
getOrder() {
this.loading = true;
getOrder(this.queryParams.orderId).then((response) => {
this.orderData = response.data;
this.query.destWarehouseId =
response.data.logisticsInfoDto.startWarehouseId;
this.loading = false;
});
},
/** 查询列表 */
getList() {
this.loading = true;
// 执行查询
getSplitList(this.queryParams).then((response) => {
this.splitData = response.data;
this.loading = false;
});
},
getChannel() {
getChannelList().then((res) => (this.channelData = res.data));
},
changeDest() {
this.query.warehouseIds = this.form.destWarehouseId;
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex == this.orderData.orderItemVOList.length) {
if (columnIndex === 1) {
return [2, 3];
} else if (columnIndex > 1) {
return [0, 0];
}
}
},
getSummaries() {
const sums = [];
sums[0] = "小计";
if (
!this.orderData ||
!this.orderData.orderItemVOList ||
this.orderData.length == 0
) {
return sums;
}
var orderSum = 0;
var orderV = 0;
var orderW = 0;
var leviteSum = 0;
var leviteV = 0;
var leviteW = 0;
this.orderData.orderItemVOList.forEach((column, index) => {
orderSum += column.num ?? 0;
orderV += column.volume ?? 0;
orderW += column.weight ?? 0;
leviteSum += column.warehouseInInfoVO?.cartonsNum ?? 0;
leviteV += column.warehouseInInfoVO?.volume ?? 0;
leviteW += column.warehouseInInfoVO?.weight ?? 0;
});
sums[1] =
"下单统计:" +
orderSum +
"" +
orderV +
"" +
orderW +
" kg " +
" 入仓统计:" +
leviteSum +
"" +
leviteV +
"" +
leviteW +
" kg";
return sums;
},
importCityName(id) {
var arr = this.tradeCityList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : "";
},
submitForm() {
var params = {
orderId: this.queryParams.orderId,
copyUserId: this.selectedUsers,
};
splitApply(params).then((res) => {
this.$modal.msgSuccess("申请成功");
that.getList();
});
},
addShop(index) {
this.splitItemIndex = index;
this.shopOpen = true;
},
addSplit() {
this.open = true;
},
changeProdTitleZh() {
var list = [];
list = this.orderData.orderItemVOList.filter(
(item) => item.prodTitleZh == this.shopForm.prodTitleZh
);
this.shopForm.sum = list[0].num;
this.shopForm.orderItemId = list[0].orderItemId;
this.shopForm.prodTitleEn = list[0].prodTitleEn;
},
changeProdTitleEn() {
var list = [];
list = this.orderData.orderItemVOList.filter(
(item) => item.prodTitleEn == this.shopForm.prodTitleEn
);
this.shopForm.sum = list[0].num;
this.shopForm.prodTitleZh = list[0].prodTitleZh;
},
haddleAdd() {
let that = this;
if (!that.form.transportId) {
that.$message.error("请选择运输方式");
}
if (!that.form.destWarehouseId) {
that.$message.error("请选择目的仓库");
}
// if(!this.form.channelId){
// this.$modal.msgError("请选择出货渠道");
// }
var params = {
dstWarehouseId: that.form.destWarehouseId,
parentOrderId: that.orderData.orderId,
parentOrderNo: that.orderData.orderNo,
transportId: that.form.transportId,
};
createSplit(params).then((res) => {
that.getList();
});
that.open = false;
},
cancel() {
this.open = false;
this.form = {};
},
shopAdd() {
this.$refs["shopForm"].validate((valid) => {
if (!valid) {
return;
}
});
var params = {
num: this.shopForm.num,
orderItemId: this.shopForm.orderItemId,
orderSplitId: this.splitData[this.splitItemIndex].id,
remarks: this.shopForm.remarks,
};
createSplitItem(params).then((res) => {
this.$message.success("放入成功");
this.getList();
this.shopForm = {};
});
this.shopOpen = false;
},
removeShop(id) {
let that = this;
that.$confirm("是否移除货物吗?").then(function () {
deleteSplitItem(id).then((res) => {
that.$message.success("移除成功");
that.getList();
});
});
},
cancelSplit() {
let that = this;
that.$confirm("是否取消审核吗?").then(function () {
cancelApply({ orderId: that.queryParams.orderId }).then((res) => {
that.$message.success("取消成功");
that.getList();
});
});
},
shopCancel() {
this.shopOpen = false;
this.shopForm = {};
},
/** 删除按钮操作 */
deleteSplit(id) {
let that = this;
that.$confirm("是否确认删除新拆的订单吗?").then(function () {
deleteSplit(id).then((res) => {
that.$message.success("删除成功");
that.getList();
});
});
},
},
};
</script>
<style>
.card-title {
font-size: 18px;
font-weight: bold;
margin-top: 10px;
}
.card-info {
font-size: 16px;
}
.card {
margin-top: 20px;
}
.btn-header {
width: 90%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 20px 0;
}
.red {
color: #ff3430;
font-size: 15px;
}
.footer_btn {
padding-bottom: 60px;
}
</style>
...@@ -79,8 +79,8 @@ ...@@ -79,8 +79,8 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <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" @click="moveOut(scope.row)" v-if="!isUnderReview && scope.row.installNum === 0">移出</el-button>
<!-- <el-button type="text" size="small" disabled>拆单</el-button> --> <!-- <el-button type="text" size="small" v-if="isShowSplitOrder(scope.row)" @click="handlerSplitOrder(scope.row, 'splitOrder','拆单')">拆单</el-button> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
</el-row> </el-row>
</template> </template>
<!-- 批量装柜纠错(订单号) --> <!-- 批量装柜纠错(订单号) -->
<template v-if=" dialogConfig.type === 'correctionOrder' && dialogConfig.dialogVisible"> <template v-if="dialogConfig.type === 'correctionOrder' && dialogConfig.dialogVisible">
<el-form ref="orderForm" :rules="rules" :model="orderObj" label-position="top"> <el-form ref="orderForm" :rules="rules" :model="orderObj" label-position="top">
<el-form-item label="装柜纠错(订单号)" prop="orderNo"> <el-form-item label="装柜纠错(订单号)" prop="orderNo">
<el-input type="textarea" :rows="3" v-model="orderObj.orderNo" placeholder="请输入,多个以逗号分隔" clearable /> <el-input type="textarea" :rows="3" v-model="orderObj.orderNo" placeholder="请输入,多个以逗号分隔" clearable />
...@@ -174,7 +174,7 @@ ...@@ -174,7 +174,7 @@
</el-row> </el-row>
</template> </template>
<!-- 装柜批量输入 --> <!-- 装柜批量输入 -->
<template v-if=" dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible"> <template v-if="dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible">
<el-form ref="batchForm" :rules="rules" :model="batchObj" label-position="top"> <el-form ref="batchForm" :rules="rules" :model="batchObj" label-position="top">
<el-form-item label="" prop="qrCode"> <el-form-item label="" prop="qrCode">
<el-input type="textarea" :rows="3" v-model="batchObj.qrCode" placeholder="请输入,多个以逗号分隔" clearable /> <el-input type="textarea" :rows="3" v-model="batchObj.qrCode" placeholder="请输入,多个以逗号分隔" clearable />
...@@ -185,6 +185,8 @@ ...@@ -185,6 +185,8 @@
<el-button @click="closeDialog">取消</el-button> <el-button @click="closeDialog">取消</el-button>
</el-row> </el-row>
</template> </template>
<!-- 拆单 -->
<splitOrder v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog="closeDialog" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
...@@ -205,6 +207,7 @@ import { ...@@ -205,6 +207,7 @@ import {
approvalCreate, approvalCreate,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { getTotlContent, serviceMsg } from "../../utils"; import { getTotlContent, serviceMsg } from "../../utils";
import splitOrder from "./splitOrder.vue";
/** /**
* 开始装柜 * 开始装柜
...@@ -214,6 +217,7 @@ export default { ...@@ -214,6 +217,7 @@ export default {
inheritAttrs: false, inheritAttrs: false,
components: { components: {
supplementOrder, supplementOrder,
splitOrder,
}, },
props: { props: {
shipmentObj: Object, shipmentObj: Object,
...@@ -259,6 +263,8 @@ export default { ...@@ -259,6 +263,8 @@ export default {
qrCode: [{ required: true, message: "必填", trigger: "change" }], qrCode: [{ required: true, message: "必填", trigger: "change" }],
orderNo: [{ required: true, message: "必填", trigger: "change" }], orderNo: [{ required: true, message: "必填", trigger: "change" }],
}, },
// 当前行
currRow: {},
}; };
}, },
created() { created() {
...@@ -289,6 +295,11 @@ export default { ...@@ -289,6 +295,11 @@ export default {
handlerClick(type, title) { handlerClick(type, title) {
this.shwoDialog({ type, title }); this.shwoDialog({ type, title });
}, },
/* 拆单 */
handlerSplitOrder(row, type, title) {
this.currRow = row;
this.shwoDialog({ type, title });
},
/** 表格订单号点击 */ /** 表格订单号点击 */
orderClick(row) { orderClick(row) {
orderTagList({ orderId: row.orderId }).then((res) => { orderTagList({ orderId: row.orderId }).then((res) => {
...@@ -340,6 +351,9 @@ export default { ...@@ -340,6 +351,9 @@ export default {
this.$set(this.dialogConfig, "fullscreen", false); this.$set(this.dialogConfig, "fullscreen", false);
this.modifyCabinetObj = {}; this.modifyCabinetObj = {};
break; break;
case "splitOrder":
this.$set(this.dialogConfig, "fullscreen", true);
break;
} }
this.$set(this.dialogConfig, "dialogVisible", true); this.$set(this.dialogConfig, "dialogVisible", true);
}, },
...@@ -465,6 +479,13 @@ export default { ...@@ -465,6 +479,13 @@ export default {
serviceMsg(res, this); serviceMsg(res, this);
}); });
}, },
/* 是否显示拆单 */
isShowSplitOrder(row) {
if (row.num > row.installNum) {
return true;
}
return false;
},
}, },
watch: { watch: {
listData(val) { listData(val) {
......
...@@ -277,26 +277,12 @@ ...@@ -277,26 +277,12 @@
<el-row class="process-area" v-show="isAudit"> <el-row class="process-area" v-show="isAudit">
<div class="process"> <div class="process">
<div>审批流程</div> <div>审批流程</div>
<div>流程图</div> <work-flow xmlkey="shipment_preassemble" v-model="selectedUsers"></work-flow>
</div> </div>
<!-- <div class="copy-user">
<div>
<label class="el-form-item__label">抄送</label>
<userSelect v-model="copyUser" placeholder="请选择抄送人" :allUsers="this.$attrs.allUsers" size="small" multiple collapse-tags />
</div>
<div>
<label class="el-form-item__label">抄送人</label>
<div class="copyUser-tag">
<el-tag v-for="user in copyUsers" :key="user.id" closable @close="removeCopyUser(user)">
{{user.nickname}}
</el-tag>
</div>
</div>
</div> -->
<div> <div>
<el-button type="primary" :disabled=true>审核中</el-button> <el-button type="primary" :disabled=true>审核中</el-button>
<el-button type="primary" @click="canclAudit">取消审核</el-button> <el-button plain type="primary" @click="canclAudit">取消审核</el-button>
<el-button type="primary" @click="closeDialog">返回</el-button> <el-button plain type="primary" @click="closeDialog">返回</el-button>
</div> </div>
</el-row> </el-row>
</div> </div>
...@@ -317,6 +303,7 @@ import { ...@@ -317,6 +303,7 @@ import {
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { formatDate, getTotlContent, serviceMsg } from "../utils"; import { formatDate, getTotlContent, serviceMsg } from "../utils";
import dayjs from "dayjs"; import dayjs from "dayjs";
import WorkFlow from "@/components/WorkFlow";
/** /**
* 预装 * 预装
...@@ -324,7 +311,7 @@ import dayjs from "dayjs"; ...@@ -324,7 +311,7 @@ import dayjs from "dayjs";
export default { export default {
name: "preinstall", name: "preinstall",
inheritAttrs: false, inheritAttrs: false,
components: { userSelect }, components: { userSelect, WorkFlow },
data() { data() {
return { return {
// 状态 // 状态
...@@ -364,10 +351,8 @@ export default { ...@@ -364,10 +351,8 @@ export default {
}, },
// 出货信息 // 出货信息
shipmentObj: this.$attrs.shipmentObj, shipmentObj: this.$attrs.shipmentObj,
// 抄送人
copyUser: undefined,
// 抄送人数组 // 抄送人数组
copyUsers: [], selectedUsers: [],
}; };
}, },
computed: { computed: {
...@@ -594,10 +579,6 @@ export default { ...@@ -594,10 +579,6 @@ export default {
: rucangtime[1], : rucangtime[1],
}; };
}, },
/* 删除抄送人 */
removeCopyUser(user) {
this.copyUser = this.copyUser.filter((id) => id !== user.id);
},
/* 关闭弹框 */ /* 关闭弹框 */
closeDialog() { closeDialog() {
this.$emit("closeDialog"); this.$emit("closeDialog");
...@@ -617,17 +598,6 @@ export default { ...@@ -617,17 +598,6 @@ export default {
}); });
}, },
}, },
watch: {
copyUser(val) {
const { allUsers } = this.$attrs;
let users = [];
for (const id of val) {
const user = allUsers.find((item) => item.id === id);
if (user) users.push(user);
}
this.copyUsers = users;
},
},
}; };
</script> </script>
...@@ -730,26 +700,6 @@ export default { ...@@ -730,26 +700,6 @@ export default {
font-weight: bolder; font-weight: bolder;
font-size: 16px; font-size: 16px;
} }
> :last-child {
height: 300px;
}
}
.copy-user {
margin-bottom: 15px;
> div {
display: flex;
align-items: center;
}
> :last-child {
.copyUser-tag {
display: flex;
flex-wrap: wrap;
> span {
margin-right: 10px;
}
}
}
} }
} }
} }
......
...@@ -74,7 +74,6 @@ export default { ...@@ -74,7 +74,6 @@ export default {
seaBaseData: Array, seaBaseData: Array,
}, },
data() { data() {
console.log(this.$store.state.user);
return { return {
// 弹窗配置 // 弹窗配置
dialogConfig: { dialogConfig: {
...@@ -177,8 +176,17 @@ export default { ...@@ -177,8 +176,17 @@ export default {
let nodeIndex = 0; let nodeIndex = 0;
for (let j = 0; j < nodes.length; j++) { for (let j = 0; j < nodes.length; j++) {
const node = nodes[j]; const node = nodes[j];
const { keyName, voName, status } = node; const { keyName, voName, status, type } = node;
if (!keyName) continue;
if (!keyName && type === "agent") {
if (val[voName]) {
// 已完成agent节点
node.currStatus = "end";
++nodeIndex;
}
continue;
}
const { start, wait, end } = status; const { start, wait, end } = status;
if (start.includes(val[keyName])) { if (start.includes(val[keyName])) {
...@@ -199,7 +207,7 @@ export default { ...@@ -199,7 +207,7 @@ export default {
++nodeIndex; ++nodeIndex;
} }
} }
// 如果相等标识步骤已完成 // 如果相等标识步骤已完成
if (nodeIndex === nodes.length) { if (nodeIndex === nodes.length) {
// 加1表示为已完成步骤后一步 // 加1表示为已完成步骤后一步
this.currIndex = i + 1; this.currIndex = i + 1;
......
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<selector v-model="item.prodUnit" :options="unitList" label-field="titleZh" value-field="id" defaultable style="width:100px" /> <selector v-model="item.prodUnit" :options="unitList" label-field="titleZh" value-field="id" defaultable style="width:100px" />
</template> </template>
<el-button class="el-icon-plus" size="mini" type="primary" @click="fee[1].push({})" /> <el-button class="el-icon-plus" size="mini" type="primary" @click="fee[1].push({type:1})" />
<el-button v-if="fee[1].length > 1" class="el-icon-minus" size="mini" type="danger" @click="fee[1].splice(index,1)" /> <el-button v-if="fee[1].length > 1" class="el-icon-minus" size="mini" type="danger" @click="fee[1].splice(index,1)" />
</div> </div>
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
<selector v-model="item.prodUnit" :options="unitList" label-field="titleZh" value-field="id" defaultable style="width:100px" /> <selector v-model="item.prodUnit" :options="unitList" label-field="titleZh" value-field="id" defaultable style="width:100px" />
</template> </template>
<el-button class="el-icon-plus" size="mini" type="primary" @click="fee[2].push({})" /> <el-button class="el-icon-plus" size="mini" type="primary" @click="fee[2].push({type:2})" />
<el-button v-if="fee[2].length > 1" class="el-icon-minus" size="mini" type="danger" @click="fee[2].splice(index,1)" /> <el-button v-if="fee[2].length > 1" class="el-icon-minus" size="mini" type="danger" @click="fee[2].splice(index,1)" />
</div> </div>
...@@ -276,8 +276,8 @@ export default { ...@@ -276,8 +276,8 @@ export default {
couponList: [], // 优惠券列表 couponList: [], // 优惠券列表
couponIds:[], couponIds:[],
fee:{ fee:{
1: [{},{}], // 运费 1: [{type:1},{type:1}], // 运费
2: [{},{}], // 清关费 2: [{type:2},{type:2}], // 清关费
3: [{}] // 优惠券专用 3: [{}] // 优惠券专用
} }
}; };
...@@ -428,7 +428,9 @@ export default { ...@@ -428,7 +428,9 @@ export default {
if(!this.costType){ if(!this.costType){
return this.$message('暂无费用设置') return this.$message('暂无费用设置')
} }
let data = Object.assign({}, this.form, {discountDetailedVOs: this.fee[this.costType]}) // 非有优惠券需要把运费和清关费一起提交
let discountDetailedVOs = this.costType == 3 ? this.fee[3] : this.fee[1].concat(this.fee[2])
let data = Object.assign({}, this.form, {discountDetailedVOs})
// 开始时间必填 // 开始时间必填
if(!data.startTime)data.startTime = '2022-01-01 00:00:00' if(!data.startTime)data.startTime = '2022-01-01 00:00:00'
// status必填 // status必填
......
...@@ -162,6 +162,11 @@ ...@@ -162,6 +162,11 @@
<el-input v-model="form.remarks" placeholder="请输入备注"/> <el-input v-model="form.remarks" placeholder="请输入备注"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="是否显示提单价格" prop="remarks">
<el-switch v-model="form.isShowTidanPrice"></el-switch>
</el-form-item>
</el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="到仓确认" prop="arrivalConfirm"> <el-form-item label="到仓确认" prop="arrivalConfirm">
<el-switch v-model="form.arrivalConfirm" :active-value="0" :inactive-value="1" /> <el-switch v-model="form.arrivalConfirm" :active-value="0" :inactive-value="1" />
...@@ -493,9 +498,6 @@ export default { ...@@ -493,9 +498,6 @@ export default {
if (!valid) { if (!valid) {
return; return;
} }
this.form.customerContacts.forEach(e => {
e.userid = e.userid.join(',')
})
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
this.form.customerContacts.forEach(e => { this.form.customerContacts.forEach(e => {
...@@ -556,7 +558,8 @@ export default { ...@@ -556,7 +558,8 @@ export default {
remarks: undefined, remarks: undefined,
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined,
createTime: undefined createTime: undefined,
isShowTidanPrice:true,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -10,66 +10,72 @@ ...@@ -10,66 +10,72 @@
<el-radio label="2">收件人</el-radio> <el-radio label="2">收件人</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="订单类型" style="margin-bottom: 0">
<el-checkbox-group v-model="form.type">
<el-checkbox label="1">集运服务</el-checkbox>
<!-- <el-checkbox label="2">海外仓</el-checkbox> -->
</el-checkbox-group>
</el-form-item>
<el-descriptions :column="3" border> <el-descriptions :column="3" border>
<el-descriptions-item label="*发货人" > <el-descriptions-item label="*发货人" :labelStyle="labelStyle" >
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consignorId" required error="发货人不能为空"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consignorId" required error="发货人不能为空">
<customer-contact-selector v-model="form.consignorId" @change="consignor = $event" /> <customer-contact-selector v-model="form.consignorId" @change="consignor = $event" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="发货人"> <el-descriptions-item label="发货人" :labelStyle="labelStyle">
{{consignor.contactsName || ''}} {{consignor.contactsName || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="手机号"> <el-descriptions-item label="手机号" :labelStyle="labelStyle">
{{consignor.areaCode}} {{consignor.phoneNew || ''}} {{consignor.areaCode}} {{consignor.phoneNew || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="发货人公司"> <el-descriptions-item label="发货人公司名称" :labelStyle="labelStyle">
{{consignor.customerName || ''}} {{consignor.company || ''}}
</el-descriptions-item>
<el-descriptions-item label="客户来源">
{{consignor.source || ''}} // TODO
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="客户来源" :labelStyle="labelStyle">
{{consignor.email || ''}}
</el-descriptions-item><!--
<el-descriptions-item label="社交软件"> <el-descriptions-item label="社交软件">
{{consignor.social}} {{consignor.socialNumber}} {{consignor.social}} {{consignor.socialNumber}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="联系地址"> <el-descriptions-item label="联系地址">
{{consignor.address || ''}} {{consignor.address || ''}} -->
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-descriptions :column="3" border> <el-descriptions :column="3" border>
<el-descriptions-item label="*收货人"> <el-descriptions-item label="*收货人" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consigneeId" required error="收货人不能为空"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consigneeId" required error="收货人不能为空">
<customer-contact-selector v-model="form.consigneeId" @change="consignee = $event" /> <customer-contact-selector v-model="form.consigneeId" @change="consignee = $event" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="收货人"> <el-descriptions-item label="收货人" :labelStyle="labelStyle">
{{consignee.contactsName || ''}} {{consignee.contactsName || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="手机号"> <el-descriptions-item label="手机号" :labelStyle="labelStyle">
{{consignee.areaCode}} {{consignee.phoneNew}} {{consignee.areaCode}} {{consignee.phoneNew}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="收货人公司"> <el-descriptions-item label="发货人公司名称" :labelStyle="labelStyle">
{{consignee.customerName || ''}} {{consignee.company || ''}}
</el-descriptions-item>
<el-descriptions-item label="客户来源">
{{consignee.source || ''}} // TODO
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Email" :labelStyle="labelStyle">
{{consignee.email || ''}}
</el-descriptions-item><!--
<el-descriptions-item label="社交软件"> <el-descriptions-item label="社交软件">
{{consignee.social}} {{consignee.socialNumber}} {{consignee.social}} {{consignee.socialNumber}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="联系地址"> <el-descriptions-item label="联系地址">
{{consignee.address || ''}} // TODO {{consignee.address || ''}} // TODO
</el-descriptions-item> </el-descriptions-item> -->
</el-descriptions> </el-descriptions>
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
<el-descriptions-item label="*运输方式"> <el-descriptions-item label="*运输方式" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="transportId" required error="请选择运输方式"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="transportId" required error="请选择运输方式">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" @input="calculationPrice" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" @input="calculationPrice" />
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="出货渠道"> <el-descriptions-item label="出货渠道" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="channelId" :required="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'" error="请选择出货渠道"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="channelId" :required="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'" error="请选择出货渠道">
<selector <selector
:disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'"
...@@ -81,22 +87,23 @@ ...@@ -81,22 +87,23 @@
></selector> ></selector>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions>
<el-descriptions-item label="*始发城市"> <el-descriptions :column="2" border>
<el-descriptions-item label="*始发城市" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="departureId" required error="始发地必选"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="departureId" required error="始发地必选">
<el-select v-model="form.departureId" placeholder="请选择始发地"> <el-select v-model="form.departureId" placeholder="请选择始发地">
<el-option v-for="item in expoerCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in expoerCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="*目的城市"> <el-descriptions-item label="*目的城市" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="objectiveId" required error="目的城市必选"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="objectiveId" required error="目的城市必选">
<el-select v-model="form.objectiveId" placeholder="请选择始发地"> <el-select v-model="form.objectiveId" placeholder="请选择始发地">
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="*请选择线路" :span="2"> <el-descriptions-item label="*请选择线路" :span="2" :labelStyle="labelStyle">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="12"> <el-col :span="12">
<el-input :value="getRouterNameById(form.lineId)" readonly placeholder="请在右侧选择线路"></el-input> <el-input :value="getRouterNameById(form.lineId)" readonly placeholder="请在右侧选择线路"></el-input>
...@@ -222,7 +229,7 @@ ...@@ -222,7 +229,7 @@
全包价:{{row.fee.freight}} {{currentcyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}} 全包价:{{row.fee.freight}} {{currentcyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
</template> </template>
</template> </template>
<template v-else-if="!row.fee.freight && !row.fee.clearanceFee">未报价</template> <template v-else-if="!row.fee || !row.fee.freight && !row.fee.clearanceFee">未报价</template>
<template v-else-if="row.fee"> <template v-else-if="row.fee">
<div> <div>
运费:{{row.fee.freight}} {{currentcyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}} 运费:{{row.fee.freight}} {{currentcyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
...@@ -291,6 +298,63 @@ ...@@ -291,6 +298,63 @@
</el-descriptions-item> --> </el-descriptions-item> -->
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="mt-10">
<div class="card-title" slot="header">预计费用</div>
<el-descriptions :column="5" border>
<el-descriptions-item label="保价费">
{{fee.insuranceFee || 0}} 人民币
</el-descriptions-item>
<el-descriptions-item label="总运费">
<div>{{fee.seaNGN || 0}}奈拉</div>
<div>{{fee.seaRMB || 0}}人民币</div>
<div>{{fee.seaUSD || 0}}美元</div>
</el-descriptions-item>
<!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
<el-descriptions-item label="总清关费">
<div>{{fee.clearanceNGN || 0}}奈拉</div>
<div>{{fee.clearanceRMB || 0}}人民币</div>
<div>{{fee.clearanceUSD || 0}}美元</div>
</el-descriptions-item>
<el-descriptions-item label="其他费用">
<el-input v-model="form.otherFee" placeholder="" style="width:100px"></el-input>
<selector v-model="form.otherFeeCurrencyId" :options="currencyList" label-field="titleZh" value-field="id" defaultable style="width:100px" />
</el-descriptions-item>
<el-descriptions-item label="原价" :span="2">
<!--TODO 缺少字段-->
<div>{{fee.clearanceNGN || 0}}奈拉</div>
<div>{{fee.clearanceRMB || 0}}人民币</div>
<div>{{fee.clearanceUSD || 0}}美元</div>
</el-descriptions-item>
</el-descriptions>
<div class="card-title" style="padding:20px 0;">优惠信息</div>
<!-- <el-row v-for="(item, index) in couponList" :key="item.value" :gutter="10">
<el-col :span="2">{{index+1}}.{{item.label}}</el-col>
<el-col :span="4">
<el-select placeholder="请选择优惠" v-model="selectedCoupons[item.value]" :data-type="item.value" clearable>
<template v-for="(coupon, index) in couponList">
<el-option v-if="coupon.type == +item.value" :key="coupon.couponId + '_' + index" :label="coupon.titleZh" :value="coupon.couponId"></el-option>
</template>
</el-select>
</el-col>
<el-col :span="2" v-if="getCoupon(selectedCoupons[item.value])">
-{{getCoupon(selectedCoupons[item.value]).reduceAmount}}
{{currentcyMap[getCoupon(selectedCoupons[item.value]).reduceCurrencyId]}}
</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="优惠合计">
{{discount}}美元
</el-descriptions-item>
<el-descriptions-item label="预计费用">
// TODO
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="mt-10"> <el-card class="mt-10">
<div class="card-title" slot="header">通用</div> <div class="card-title" slot="header">通用</div>
...@@ -300,13 +364,13 @@ ...@@ -300,13 +364,13 @@
<el-input v-model="form.marks" placeholder=""></el-input> <el-input v-model="form.marks" placeholder=""></el-input>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="报关方式"> <el-descriptions-item label="报关方式">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" /> <dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" defaultable />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="预计结束时间"> <el-descriptions-item label="预计结束时间">
<el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker v-model="form.stopTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="是否控货"> <el-descriptions-item label="是否控货">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.control" form-type="radio" defaultable />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="竞争对手"> <el-descriptions-item label="竞争对手">
<el-input v-model="form.competitor" placeholder=""></el-input> <el-input v-model="form.competitor" placeholder=""></el-input>
...@@ -408,6 +472,8 @@ import {getDictData} from '@/utils/dict' ...@@ -408,6 +472,8 @@ import {getDictData} from '@/utils/dict'
import {getCurrencyList} from '@/api/ecw/currency' import {getCurrencyList} from '@/api/ecw/currency'
import {getUnitList} from '@/api/ecw/unit' import {getUnitList} from '@/api/ecw/unit'
import {calculationPrice} from '@/api/ecw/product' import {calculationPrice} from '@/api/ecw/product'
import {getCustomerAvailableCouponList} from '@/api/ecw/coupon'
export default { export default {
name: "OfferEdit", name: "OfferEdit",
components: { components: {
...@@ -432,10 +498,14 @@ export default { ...@@ -432,10 +498,14 @@ export default {
transportList: [], transportList: [],
currencyList:[], currencyList:[],
unitList:[], unitList:[],
couponList: [],
fee: {}, // 费用 fee: {}, // 费用
// 表单参数 // 表单参数
form: { form: {
sendstatus:0 sendstatus:0,
type: [],
isCargoControl: false,
customsType: 0
}, },
// 表单校验 // 表单校验
rules: { rules: {
...@@ -443,7 +513,8 @@ export default { ...@@ -443,7 +513,8 @@ export default {
consignorId: [{ required: true, message: "客户id,发货人不能为空", trigger: "blur" }], consignorId: [{ required: true, message: "客户id,发货人不能为空", trigger: "blur" }],
consigneeId: [{ required: true, message: "收货人id不能为空", trigger: "blur" }], consigneeId: [{ required: true, message: "收货人id不能为空", trigger: "blur" }],
sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], */ sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], */
} },
labelStyle: 'width:120px',
}; };
}, },
computed:{ computed:{
...@@ -477,7 +548,12 @@ export default { ...@@ -477,7 +548,12 @@ export default {
transport(){ transport(){
return this.transportList.find(item => item.value == this.form.transportId) return this.transportList.find(item => item.value == this.form.transportId)
}, },
currentMap(){ selectedRouter(){
// otherService 1 送货上门,2非控货订单代收货款
if(!this.form.lineId)return null
return this.routerList.find(item => item.id == this.form.lineId)
},
currentcyMap(){
let map = {} let map = {}
this.currencyList.forEach(item => { this.currencyList.forEach(item => {
map[item.id] = item.titleZh map[item.id] = item.titleZh
...@@ -506,6 +582,10 @@ export default { ...@@ -506,6 +582,10 @@ export default {
}) })
return sum return sum
},
// 总有优惠金额
discount(){
return 0
} }
}, },
watch:{ watch:{
...@@ -522,6 +602,15 @@ export default { ...@@ -522,6 +602,15 @@ export default {
}, },
'form.channelId'(){ 'form.channelId'(){
this.getOpenedRouterList() this.getOpenedRouterList()
},
'form.lineId'(lineId){
let router = this.routerList.find(item => item.id == lineId)
this.$set(this.form, 'departureId', router.startCityId)
this.$set(this.form, 'objectiveId', router.destCityId)
// TODO 还需要回填渠道信息,暂时缺少渠道ID
},
fee(){
this.getCoupons()
} }
}, },
created() { created() {
...@@ -530,12 +619,7 @@ export default { ...@@ -530,12 +619,7 @@ export default {
getTradeCityList().then(res => this.tradeCityList = res.data) getTradeCityList().then(res => this.tradeCityList = res.data)
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE).forEach(res => { this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
this.transportList.push({
transportId: +res.value, // 转为整形
label: res.label,
})
})
if(this.$route.query.id){ if(this.$route.query.id){
getOffer(this.$route.query.id).then(res => { getOffer(this.$route.query.id).then(res => {
...@@ -673,6 +757,19 @@ export default { ...@@ -673,6 +757,19 @@ export default {
this.productList.splice(index, 1) this.productList.splice(index, 1)
}) })
}, },
getCoupons(){
console.log('getCoupons')
// if(!this.form.consigneeContactsId || !this.form.consignorContactsId) return false
let data = Object.assign({}, this.form, {
prodConditionParamList: this.productList,
consigneeCustomerContactsId: this.form.consigneeId,
consignorCustomerContactsId: this.form.consignorId
})
getCustomerAvailableCouponList(data)
.then(res => {
this.couponList = res.data
})
},
// 显示更多报价 // 显示更多报价
showMorePrice(index){ showMorePrice(index){
console.log('显示更多报价', index) console.log('显示更多报价', index)
...@@ -745,7 +842,13 @@ export default { ...@@ -745,7 +842,13 @@ export default {
lineId: this.form.lineId, lineId: this.form.lineId,
transportId: this.form.transportId, transportId: this.form.transportId,
channelId: this.form.channelId, channelId: this.form.channelId,
prodConditionParamList: this.productList prodConditionParamList: this.productList,
consigneeCustomerContactsId: this.form.consigneeCustomerContactsId,
consignorCustomerContactsId: this.form.consignorCustomerContactsId,
customsType: this.form.customsType,
isCargoControl: this.form.control,
orderType: this.form.orderType,
}).then(res => { }).then(res => {
this.$set(this, 'fee', res.data.costDto) this.$set(this, 'fee', res.data.costDto)
this.productList.map((item, index) => { this.productList.map((item, index) => {
......
<template> <template>
<el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
width="80%" width="80%"
:before-close="()=>{ :before-close="()=>{
$emit('update:dialogVisible',false) $emit('update:dialogVisible',false)
}"> }">
...@@ -11,31 +11,31 @@ ...@@ -11,31 +11,31 @@
<el-table-column label="订单编号" prop="orderNo"></el-table-column> <el-table-column label="订单编号" prop="orderNo"></el-table-column>
<el-table-column label="唛头" prop="marks"></el-table-column> <el-table-column label="唛头" prop="marks"></el-table-column>
<el-table-column label="已到箱数/总箱数"> <el-table-column label="已到箱数/总箱数">
<template v-slot = {row}> <template v-slot={row}>
{{row.sumQuantity || 0}}/{{row.totalNum}} {{ row.sumQuantity || 0 }}/{{ row.totalNum }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="下单统计"> <el-table-column label="下单统计">
<template v-slot="{row}"> <template v-slot="{row}">
<div v-if="row.costVO"> <div v-if="row.costVO">
箱数:{{row.costVO.totalNum}} 箱数:{{ row.costVO.totalNum }}
{{row.costVO.totalVolume}} {{ row.costVO.totalVolume }}
{{row.costVO.totalWeight}}kg {{ row.costVO.totalWeight }}kg
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="入仓统计" width="150"> <el-table-column label="入仓统计" width="150">
<template v-slot="{row}"> <template v-slot="{row}">
<div>总箱数:{{row.sumNum || 0}}</div> <div>总箱数:{{ row.sumNum || 0 }}</div>
<div>体积:{{row.sumVolume || 0}}CBM</div> <div>体积:{{ row.sumVolume || 0 }}CBM</div>
<div>重量:{{row.sumWeight || 0}}KG</div> <div>重量:{{ row.sumWeight || 0 }}KG</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="入仓时间"> <el-table-column label="入仓时间">
</el-table-column> </el-table-column>
<el-table-column label="运输方式"> <el-table-column label="运输方式">
<template v-slot = {row}> <template v-slot={row}>
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
<div> <div>
<div> <div>
<p> <p>
{{row.consignorName}} {{ row.consignorName }}
</p> </p>
<p> <p>
</p> </p>
...@@ -61,17 +61,17 @@ ...@@ -61,17 +61,17 @@
<template v-slot="{row}"> <template v-slot="{row}">
<div> <div>
<p> <p>
{{row.consigneeName}} {{ row.consigneeName }}
</p> </p>
<p> <p>
{{row.consigneePhone}} {{ row.consigneePhone }}
</p> </p>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column> <el-table-column>
<template v-slot="{row}"> <template v-slot="{row}">
<el-button type="text" v-if="row.inWarehouseState === 10"> <el-button @click="canceLtiaoCang(row)" type="text" v-if="row.inWarehouseState === 10">
取消调仓 取消调仓
</el-button> </el-button>
</template> </template>
...@@ -79,11 +79,12 @@ ...@@ -79,11 +79,12 @@
</el-table> </el-table>
<div style="display: flex;justify-content:center; margin-top: 20px"> <div style="display: flex;justify-content:center; margin-top: 20px">
<div style="width: 200px; margin: 0 10px"> <div style="width: 200px; margin: 0 10px">
{{ list[0] && list[0].startWarehouseName ? list[0].startWarehouseName : '' }} {{ list[0] && list[0].startWarehouseName ? list[0].startWarehouseName : '' }}
</div> </div>
<div style="width: 200px;"> <div style="width: 200px;">
<el-select v-model="params.warehouseInId"> <el-select v-model="params.warehouseInId">
<el-option v-for="(item ,index) in availableWarehouse" :value="item.id" :label="item.titleZh" :key="index"></el-option> <el-option v-for="(item ,index) in availableWarehouse" :value="item.id" :label="item.titleZh"
:key="index"></el-option>
</el-select> </el-select>
</div> </div>
</div> </div>
...@@ -92,11 +93,11 @@ ...@@ -92,11 +93,11 @@
审批流程 审批流程
</h1> </h1>
<div style="padding: 20px"> <div style="padding: 20px">
<work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId" /> <work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId"/>
</div> </div>
<div style="text-align: center"> <div style="text-align: center">
<el-button style="margin-right: 50px" v-if="adjustmentBol" >审核中</el-button> <el-button style="margin-right: 50px" v-if="adjustmentBol">审核中</el-button>
<el-button v-else style="margin-right: 50px" @click="submit" :disabled="isSubmit">提交申请</el-button> <el-button v-else style="margin-right: 50px" @click="submit" :disabled="isSubmit">提交申请</el-button>
<el-button @click="$emit('update:dialogVisible',false)">取消</el-button> <el-button @click="$emit('update:dialogVisible',false)">取消</el-button>
</div> </div>
<!-- <warehouseDetails></warehouseDetails>--> <!-- <warehouseDetails></warehouseDetails>-->
...@@ -107,6 +108,7 @@ ...@@ -107,6 +108,7 @@
<script> <script>
import {DICT_TYPE, getDictDatas} from "@/utils/dict"; import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import { import {
adjustApplyStatus, cancelAdjustApply,
ecwOrderList, ecwOrderList,
orderWarehouseInAdjustApply, orderWarehouseInAdjustApply,
warehouseAdjustmentList, warehouseAdjustmentList,
...@@ -116,87 +118,128 @@ import warehouseDetails from "@/views/ecw/order/components/warehouseDetails"; ...@@ -116,87 +118,128 @@ import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
import {getOrderPage} from "@/api/ecw/order"; import {getOrderPage} from "@/api/ecw/order";
import workFlow from "@/components/WorkFlow"; import workFlow from "@/components/WorkFlow";
import Template from "@/views/cms/template"; import Template from "@/views/cms/template";
export default { export default {
name: "batchSingleApplication", name: "batchSingleApplication",
props:{ props: {
orderList:[String,Number], orderList: [String, Number],
dialogVisible:{ dialogVisible: {
type:Boolean, type: Boolean,
default:false, default: false,
} }
}, },
components:{ components: {
Template, Template,
warehouseDetails, warehouseDetails,
workFlow workFlow
}, },
watch:{ watch: {
dialogVisible(val){ dialogVisible(val) {
if(val){ if (val) {
getOrderPage({orderIdList:this.orderList}).then(r =>{ this.getOrderListFn()
this.list = r.data.list } else {
warehouseAdjustmentList({id:this.list[0].startWarehouseId}).then( r => this.availableWarehouse = r.data) this.params = {
}) orderIds: undefined,
} warehouseInId: undefined,
warehouseOutId: undefined,
copyUserId: [],
}
}
} }
}, },
computed:{ computed: {
isSubmit(){ isSubmit() {
let flag = true; let flag = true;
if(this.list.length === 1 && this.list[0].status === 5){ if (this.list.length === 1 && this.list[0].status === 5) {
flag = false flag = false
}else { } else {
let l = this.list.map(e => e.startWarehouseId) let l = this.list.map(e => e.startWarehouseId)
if(this.list.every(e => e.status === 5) && [...new Set(l)].length === 1) flag = false if (this.list.every(e => e.status === 5) && [...new Set(l)].length === 1) flag = false
} }
return flag; return flag;
}, },
adjustmentBol(){ adjustmentBol() {
return this.list.some(e => e.inWarehouseState === 10) return this.list.some(e => e.inWarehouseState === 10)
} }
}, },
data(){ data() {
return { return {
list:[], list: [],
selectedUsers:[], selectedUsers: [],
availableWarehouse:[], availableWarehouse: [],
DICT_TYPE, DICT_TYPE,
departureWarehouse:undefined, departureWarehouse: undefined,
adjustment:undefined, adjustment: undefined,
params:{ params: {
orderIds:undefined, orderIds: undefined,
warehouseInId:undefined, warehouseInId: undefined,
warehouseOutId: undefined, warehouseOutId: undefined,
copyUserId:[], copyUserId: [],
}, },
} }
}, },
methods:{ methods: {
submit(){ getOrderListFn() {
getOrderPage({orderIdList: this.orderList}).then(r => {
this.list = r.data.list
warehouseAdjustmentList({id: this.list[0].startWarehouseId}).then(r => this.availableWarehouse = r.data)
})
},
submit() {
let p = this.list.map(e => e.orderId).join(','); let p = this.list.map(e => e.orderId).join(',');
this.params.orderIds = p; this.params.orderIds = p;
this.params.warehouseOutId = this.list[0].startWarehouseId; this.params.warehouseOutId = this.list[0].startWarehouseId;
this.params.orderNo = this.list[0].orderNo this.params.orderNo = this.list[0].orderNo
orderWarehouseInAdjustApply(this.params).then( r=>{ orderWarehouseInAdjustApply(this.params).then(r => {
if(r.code === 0){ if (r.code === 0) {
this.$emit('update:dialogVisible',false) this.$emit('update:dialogVisible', false)
this.$message.success('调仓成功'); this.$message.success('调仓成功');
} }
}) })
} },
async canceLtiaoCang(row) {
let res = await adjustApplyStatus({orderId: row.orderId})
if (res.data.isBatch) {
this.$message.warning('批量提提交请耐心等待')
} else {
this.$prompt('请问您是否要取消调仓?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}).then((val) => {
cancelAdjustApply({orderId: row.orderId, reason: val.value}).then(r => {
if (r.code === 0) {
this.$message({
type: 'success',
message: '取消调仓成功!'
});
this.getOrderListFn()
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
}
},
} }
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.batch-single-application{ .batch-single-application {
padding: 20px; padding: 20px;
box-sizing: border-box; box-sizing: border-box;
.title{
font-weight: 600; .title {
text-align: left; font-weight: 600;
} text-align: left;
}
} }
.my-process-designer { .my-process-designer {
height: calc(100vh - 200px); height: calc(100vh - 200px);
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="日期筛选"> <el-form-item label="日期筛选">
<dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" v-model="dateFilterType" style="width: 150px; margin-right: 5px" /> <dict-selector defaultable :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" v-model="dateFilterType" class="w-100 mr-10" />
<el-date-picker v-model="dateFilter" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker v-model="dateFilter" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="始发地" prop="startWarehouseId"> <el-form-item label="始发地" prop="startWarehouseId">
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
<template slot-scope="{row}">{{row.totalNum}}</template> <template slot-scope="{row}">{{row.totalNum}}</template>
</el-table-column> </el-table-column>
<el-table-column label="已放箱数" align="center" prop="sumWeight"> <el-table-column label="已放箱数" align="center" prop="sumWeight">
<template slot-scope="{row}">// TODO</template> <template slot-scope="{row}">{{row.releaseNum}}</template>
</el-table-column> </el-table-column>
<el-table-column label="订单状态" align="center" prop="status"> <el-table-column label="订单状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -95,11 +95,11 @@ ...@@ -95,11 +95,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="放货人" align="center" prop="sumWeight"> <el-table-column label="放货人" align="center" prop="sumWeight">
<template slot-scope="{row}">// TODO</template> <template slot-scope="{row}">{{row.cargoControlName}}</template>
</el-table-column> </el-table-column>
<el-table-column label="控货状态" align="center" prop="transportId"> <el-table-column label="控货状态" align="center" prop="transportId">
<template slot-scope="{row}"> <template slot-scope="{row}">
// TODO <dict-tag :type="DICT_TYPE.CONTROL_GOODS_STATUS" :value="row.cargoControlStatus" />
</template> </template>
</el-table-column> </el-table-column>
...@@ -110,8 +110,8 @@ ...@@ -110,8 +110,8 @@
<el-button type="text" size="mini" @click="showEditOrderId=scope.row.orderId" >修改</el-button> <el-button type="text" size="mini" @click="showEditOrderId=scope.row.orderId" >修改</el-button>
<el-button type="text" size="mini" >取消</el-button> <el-button type="text" size="mini" >取消</el-button>
<el-button type="text" size="mini" @click="review(scope.row)" >放货复核</el-button> <el-button type="text" size="mini" @click="review(scope.row)" >放货复核</el-button>
<el-button type="text" size="mini" @click="$router.push('detail?id=' + scope.row.orderId)" >查看</el-button> <el-button type="text" size="mini" @click="$router.push('cargo_control/detail?id=' + scope.row.orderId)" >查看</el-button>
<el-button type="text" size="mini" >调货</el-button> <el-button type="text" size="mini" @click="showTransferCargoOrderId=scope.row.orderId" >调货</el-button>
<el-button type="text" size="mini" >反复核</el-button> <el-button type="text" size="mini" >反复核</el-button>
<el-button type="text" size="mini" @click="showTransferOrder = scope.row" >控货权转移</el-button> <el-button type="text" size="mini" @click="showTransferOrder = scope.row" >控货权转移</el-button>
</template> </template>
...@@ -124,6 +124,7 @@ ...@@ -124,6 +124,7 @@
<transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" /> <transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" />
<release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" /> <release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" />
<release v-if="showEditOrderId" :order-id="showEditOrderId" @close="showEditOrderId=null" /> <release v-if="showEditOrderId" :order-id="showEditOrderId" @close="showEditOrderId=null" />
<transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" />
</div> </div>
</template> </template>
...@@ -137,12 +138,13 @@ import Transfer from '@/views/ecw/order/components/Transfer' ...@@ -137,12 +138,13 @@ import Transfer from '@/views/ecw/order/components/Transfer'
import Release from './components/Release' import Release from './components/Release'
import CargoControlEdit from './components/CargoControlEdit' import CargoControlEdit from './components/CargoControlEdit'
import { getCargoControlOrderPage } from "@/api/ecw/orderCargoControl" import { getCargoControlOrderPage } from "@/api/ecw/orderCargoControl"
import TransferCargo from '@/views/ecw/order/components/TransferCargo'
export default { export default {
name: "OrderCargonControl", name: "OrderCargonControl",
components: { components: {
CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit CustomerSelector, ProductSelector, Selector, Transfer, Release,CargoControlEdit, TransferCargo
}, },
data() { data() {
return { return {
...@@ -178,6 +180,7 @@ export default { ...@@ -178,6 +180,7 @@ export default {
showTransferOrder: null, // 控制权转移操作订单 showTransferOrder: null, // 控制权转移操作订单
showReleaseOrderId: null, // 放货ID showReleaseOrderId: null, // 放货ID
showEditOrderId: null, // 修改ID showEditOrderId: null, // 修改ID
showTransferCargoOrderId: null, // 调货ID
}; };
}, },
computed: { computed: {
......
<template> <template>
<div class="app-container"> <div class="app-container" v-if="detail">
<div class="page-title">控货订单</div> <div class="page-title">控货订单</div>
<el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" > <el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="订单号" prop="field101"> <el-form-item label="订单号" prop="field101">
111 {{detail.orderNo}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="总控货数" prop="field104"> <el-form-item label="总控货数" prop="field104">
111 {{detail.sumNum}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="体积" prop="field103"> <el-form-item label="体积" prop="field103">
111 {{detail.sumVolume}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="重量" prop="field102"> <el-form-item label="重量" prop="field102">
111 kg {{detail.sumWeight}} kg
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="可放货箱数" prop="field105"> <el-form-item label="可放货箱数" prop="field105">
111 {{detail.sumNum - detail.pickNum}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="已放货箱数" prop="field106"> <el-form-item label="已放货箱数" prop="field106">
111 {{detail.pickNum}}
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -113,14 +113,20 @@ ...@@ -113,14 +113,20 @@
</template> </template>
<script> <script>
import edit from './components/CargoControlEdit.vue' import edit from './components/CargoControlEdit.vue'
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
export default { export default {
components: {edit}, components: {edit},
data(){ data(){
return { return {
showEdit: false, showEdit: false,
formData:{} detail: null,
formData:{},
rules: {}
} }
}, },
created(){
getRleaseInfo(this.$route.query.id).then(res => this.detail = res.data)
},
methods:{ methods:{
review(){ review(){
this.$confirm('已核实放货信息,确认放货?') this.$confirm('已核实放货信息,确认放货?')
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<div v-else> <div v-else>
<release-agreement /> <need-know keyname="control" />
<div style="margin-top:30px"> <div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button> <el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button> <el-button @click="closeDialog">关闭</el-button>
...@@ -59,13 +59,13 @@ ...@@ -59,13 +59,13 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import ReleaseAgreement from "./ReleaseAgreement"
import WorkFlow from '@/components/WorkFlow' import WorkFlow from '@/components/WorkFlow'
import NeedKnow from '@/components/NeedKnow'
export default { export default {
props:{ props:{
orderId: [String, Number] orderId: [String, Number]
}, },
components: {ReleaseAgreement, WorkFlow}, components: {NeedKnow, WorkFlow},
data(){ data(){
return { return {
show: false, show: false,
......
<template> <template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false"> <el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1000px">
<el-form v-if="agreement" ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px" > <el-form v-if="agreement" ref="form" :model="formData" :rules="rules" size="small" label-width="100px" >
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="订单号" prop="field101"> <el-form-item label="订单号">
{{detail.orderNO}} {{detail.orderNo}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="总箱数" prop="field104"> <el-form-item label="总箱数">
{{detail.sumNum}} {{detail.sumNum}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="体积" prop="field103"> <el-form-item label="体积">
{{detail.sumVolume}} {{detail.sumVolume}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="重量" prop="field102"> <el-form-item label="重量">
{{detail.sumWeight}}kg {{detail.sumWeight}}kg
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="总控货箱数" prop="field105"> <el-form-item label="总控货箱数">
// TODO {{detail.sumNum}}
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="剩余放货箱数" prop="field106"> <el-form-item label="剩余放货箱数">
// TODO {{detail.sumNum - detail.releaseNum }}
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<div class="title">请填写放货信息</div> <div class="title">请填写放货信息</div>
<el-row> <div class="flex">
<el-col :span="8"> <el-form-item label="收货人" prop="consigneeName">
<el-form-item label="收货人" prop="field108"> <el-input v-model="formData.consigneeName" placeholder="请输入收货人" clearable class="w-150" ></el-input>
<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>
<el-form-item label="手机验证码" prop="field118"> <el-form-item label="收货人电话" prop="consigneePhone">
<el-input v-model="formData.field118" placeholder="请输入手机验证码" clearable style="width:200px; margin-right:10px" ></el-input> <!-- <el-input v-model="formData.field109" placeholder="区号" clearable class="w-150"></el-input> -->
<el-button type="success">获取验证码</el-button> <area-code-selector v-model="formData.consigneeCountryCode" class="w-150" />
<el-input v-model="formData.consigneePhone" placeholder="请输入收货人电话" clearable class="w-150 ml-10"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="" prop="field117" style="margin-top:20px"> <el-form-item label="收货人邮箱" prop="consigneeEmail">
<el-button type="success">确认放货</el-button> <el-input v-model="formData.consigneeEmail" placeholder="请输入收货人邮箱" clearable class="w-150" ></el-input>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item> </el-form-item>
</div>
<el-table :data="[formData]" border>
<el-table-column label="控货箱数">
{{detail.sumNum}}
</el-table-column>
<el-table-column label="放货箱数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="体积(m³)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="重量(kg)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="备注">
<template slot-scope="{row}">
<el-input v-model="row.remarks" placeholder="" clearable></el-input>
</template>
</el-table-column>
</el-table>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
<el-input :value="detail.phone" readonly placeholder="请输入控货手机号" >
</el-input>
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input v-model="formData.code" placeholder="请输入手机验证码" clearable class="w-150 mr-10"></el-input>
<!-- <el-button type="success">获取验证码</el-button> -->
<send-sms-code :order-id="detail.orderId" scene="5" />
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">确认放货</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form> </el-form>
<div v-else> <div v-else>
<release-agreement /> <!-- <release-agreement /> -->
<need-know ref="needKnow" keyname="control" />
<div style="margin-top:30px"> <div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button> <el-button type="primary" @click="agreement=true">我同意</el-button>
<!-- <el-button type="primary" @click="$refs.needKnow.download()">保存协议</el-button> -->
<el-button @click="closeDialog">关闭</el-button> <el-button @click="closeDialog">关闭</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import ReleaseAgreement from "./ReleaseAgreement"
import {getOrder} from '@/api/ecw/order' import {getOrder} from '@/api/ecw/order'
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
import NeedKnow from '@/components/NeedKnow'
export default { export default {
props:{ props:{
orderId: [String, Number] orderId: [String, Number]
}, },
components: {ReleaseAgreement}, components: {AreaCodeSelector, SendSmsCode, NeedKnow},
data(){ data(){
return { return {
show: false, show: false,
detail: null, detail: null,
formData:{}, formData:{
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
},
rules:{
consigneeName: {required: true, message: '请填写收货人'},
code: {required: true, message: '请填写验证码'}
},
agreement: false, // 是否同意协议 agreement: false, // 是否同意协议
} }
}, },
...@@ -122,13 +142,26 @@ export default { ...@@ -122,13 +142,26 @@ export default {
}, },
methods:{ methods:{
loadData(){ loadData(){
getOrder(this.orderId).then(res => this.detail = res.data) getRleaseInfo(this.orderId).then(res => this.detail = res.data)
}, },
closeDialog(){ closeDialog(){
this.show = false this.show = false
this.$emit('close'); this.$emit('close');
}, },
submit(){
this.$refs.form.validate(valid => {
if(!valid){
return false
}
console.log('submit')
createPick(this.formData).then(res => {
this.$message.success(res.msg || '操作成功')
this.closeDialog()
})
})
}
} }
} }
</script> </script>
......
<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> <template>
<span @click="send">{{text}}</span> <el-button @click="send" :disabled="leftTime > 0 && leftTime < 60">{{text}}</el-button>
</template> </template>
<script> <script>
import {sendSmsCode} from '@/api/ecw/orderCargoControl' import {sendSmsCode} from '@/api/ecw/orderCargoControl'
......
<!--拆单审核中的申请信息部分-->
<template>
<div>拆单审核详情</div>
</template>
<script>
export default {
props:{
id: [String, Number]
},
data(){
return {
}
},
created(){
}
}
</script>
\ No newline at end of file
<template> <template>
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false"> <el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="800px">
<div class="" v-if="agreement"> <div class="" v-if="agreement">
<el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-position="left" label-width="120px">
<el-form-item label="原控货人"> <el-form-item label="原控货人">
...@@ -13,11 +13,8 @@ ...@@ -13,11 +13,8 @@
<el-input v-model="form.name"></el-input> <el-input v-model="form.name"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="新控货手机号" prop="phone"> <el-form-item label="新控货手机号" prop="phone">
<el-input v-model="form.phone" type="tel"> <area-code-selector v-model="form.dialCodeSrc" />
<el-select slot="prepend" v-model="form.dialCode" placeholder="" style="width:200px"> <el-input v-model="form.phone" type="tel" class="ml-10 w-200" />
<el-option v-for="item in countryList" :key="item.id" :label="item.nameZh + item.tel" :value="item.tel.replace('+', '')"></el-option>
</el-select>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="新控货人邮箱" prop="email"> <el-form-item label="新控货人邮箱" prop="email">
<el-input v-model="form.email" type="email"></el-input> <el-input v-model="form.email" type="email"></el-input>
...@@ -33,7 +30,7 @@ ...@@ -33,7 +30,7 @@
</el-form> </el-form>
</div> </div>
<div v-else> <div v-else>
<transfer-agreement /> <need-know ref="needKnow" keyname="controltransfer" />
<div style="margin-top:30px"> <div style="margin-top:30px">
<el-button type="primary" @click="agreement=true">我同意</el-button> <el-button type="primary" @click="agreement=true">我同意</el-button>
<el-button @click="closeDialog">关闭</el-button> <el-button @click="closeDialog">关闭</el-button>
...@@ -42,10 +39,11 @@ ...@@ -42,10 +39,11 @@
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import TransferAgreement from "./TransferAgreement"
import {getCountryListAll} from '@/api/ecw/country' import {getCountryListAll} from '@/api/ecw/country'
import SendSmsCode from './SendSmsCode' import SendSmsCode from './SendSmsCode'
import {create} from '@/api/ecw/orderCargoControl' import {create} from '@/api/ecw/orderCargoControl'
import NeedKnow from '@/components/NeedKnow'
import AreaCodeSelector from '@/components/AreaCodeSelector'
export default { export default {
props:{ props:{
orderId: [String, Number], orderId: [String, Number],
...@@ -53,12 +51,15 @@ export default { ...@@ -53,12 +51,15 @@ export default {
cargoControlPhone: String, cargoControlPhone: String,
orderNo: String orderNo: String
}, },
components: {TransferAgreement, SendSmsCode}, components: {SendSmsCode, NeedKnow, AreaCodeSelector},
data(){ data(){
return { return {
show: false, show: false,
// detail: null, // detail: null,
form:{}, form:{
dialCodeSrc: null,
dialCode: null
},
agreement: false, // 是否同意协议 agreement: false, // 是否同意协议
countryList: [], countryList: [],
rules:{ rules:{
...@@ -75,17 +76,20 @@ export default { ...@@ -75,17 +76,20 @@ export default {
} }
}, },
watch:{ watch:{
countryList(){ 'form.dialCodeSrc'(){
this.form.dialCode = this.form.dialCodeSrc.replace('+', '')
}
/* countryList(){
if(this.countryList.length){ if(this.countryList.length){
this.$set(this.form, 'dialCode', this.countryList[0].tel.replace('+', '')) this.$set(this.form, 'dialCode', this.countryList[0].tel.replace('+', ''))
} }
} } */
}, },
created(){ created(){
this.show = true this.show = true
getCountryListAll().then(res => { /* getCountryListAll().then(res => {
this.countryList = res.data this.countryList = res.data
}) }) */
}, },
methods:{ methods:{
closeDialog(){ closeDialog(){
......
<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>
<el-dialog title="调货" visible :before-close="closeDialog" :close-on-click-modal="false" width="800px">
<!--调货-->
<el-form ref="form" :model="formData" :rules="rules" size="small" label-width="150px" >
<el-row>
<el-col :span="12">
<el-form-item label="收货人">
{{detail.orderNo}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="收货人电话">
{{detail.sumNum}}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="选择控货订单">
<el-select v-model="formData.order" placeholder="请选择控货中的订单" multiple>
<el-option :label="1" :value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-table :data="[formData,formData]" border>
<el-table-column label="订单号">
{{detail.sumNum}}
</el-table-column>
<el-table-column label="目的地">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="总控货数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="放货箱数">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickNum" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="体积(m³)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickVolume" placeholder="" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="重量(kg)">
<template slot-scope="{row}">
<el-input type="number" v-model.number="row.pickWeight" placeholder="" clearable></el-input>
</template>
</el-table-column>
</el-table>
<el-form-item label="备注" prop="remarks" class="mt-10">
<el-input v-model="formData.remarks" clearable></el-input>
</el-form-item>
<el-form-item label="控货手机号" prop="field117" style="margin-top:20px">
{{detail.consigneeCountryCode}} {{detail.phone}}
</el-form-item>
<el-form-item label="手机验证码" prop="code">
<el-input v-model="formData.code" placeholder="请输入手机验证码" clearable class="w-150 mr-10"></el-input>
<send-sms-code :order-id="detail.orderId" scene="5" />
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">提交申请</el-button>
<el-button type="default" @click="closeDialog">关闭</el-button>
</el-form-item>
</el-form>
</el-dialog>
</template>
<script>
import {createPick, getRleaseInfo} from '@/api/ecw/orderCargoControl'
import AreaCodeSelector from '@/components/AreaCodeSelector'
import SendSmsCode from '@/views/ecw/order/components/SendSmsCode'
export default {
props:{
orderId: [String, Number]
},
components: {AreaCodeSelector, SendSmsCode},
data(){
return {
show: false,
detail: null,
formData:{
"pickNum": 0,
"pickQuantity": 0,
"pickVolume": 0,
"pickWeight": 0,
"remarks": "",
},
rules:{
consigneeName: {required: true, message: '请填写收货人'},
code: {required: true, message: '请填写验证码'}
},
}
},
created(){
this.show = true
this.loadData()
},
methods:{
loadData(){
getRleaseInfo(this.orderId).then(res => this.detail = res.data)
},
closeDialog(){
this.show = false
this.$emit('close');
},
submit(){
this.$refs.form.validate(valid => {
if(!valid){
return false
}
console.log('submit')
})
}
}
}
</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
...@@ -4,8 +4,15 @@ ...@@ -4,8 +4,15 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-card> <el-card>
<div slot="header" class="card-title">新建订单</div> <div slot="header" class="card-title">新建订单</div>
<el-form-item label="订单类型" style="margin-bottom: 0">
<el-descriptions :column="3" border> <el-checkbox-group v-model="form.type">
<el-checkbox label="1">集运服务</el-checkbox>
<el-checkbox label="2">海外仓</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-descriptions :column="3" border v-if="form.type.indexOf(1) < 0">
<el-descriptions-item label="*发货人" :labelStyle="labelStyle"> <el-descriptions-item label="*发货人" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consignorContactsId" required error="发货人不能为空"> <el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consignorContactsId" required error="发货人不能为空">
<customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" /> <customer-contact-selector v-model="form.consignorContactsId" @change="consignorContact = $event" />
...@@ -15,7 +22,7 @@ ...@@ -15,7 +22,7 @@
{{consignorContact.phoneNew || ''}} {{consignorContact.phoneNew || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="发货人公司" :labelStyle="labelStyle"> <el-descriptions-item label="发货人公司" :labelStyle="labelStyle">
{{consignorContact.customerName || ''}} {{consignorContact.company || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Email" :labelStyle="labelStyle"> <el-descriptions-item label="Email" :labelStyle="labelStyle">
{{consignorContact.email || ''}} {{consignorContact.email || ''}}
...@@ -31,7 +38,7 @@ ...@@ -31,7 +38,7 @@
{{consigneeContact.phoneNew || ''}} {{consigneeContact.phoneNew || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="收货人公司" :labelStyle="labelStyle"> <el-descriptions-item label="收货人公司" :labelStyle="labelStyle">
{{consigneeContact.customerName || ''}} {{consigneeContact.company || ''}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="Email" :labelStyle="labelStyle"> <el-descriptions-item label="Email" :labelStyle="labelStyle">
{{consigneeContact.email || ''}} {{consigneeContact.email || ''}}
...@@ -90,7 +97,7 @@ ...@@ -90,7 +97,7 @@
<div slot="header" class="card-title"> <div slot="header" class="card-title">
<div class="card-name">商品信息</div> <div class="card-name">商品信息</div>
<el-button type="primary" size="mini" @click="addProduct(null)">添加货物</el-button> <el-button type="primary" size="mini" @click="addProduct(null)">添加货物</el-button>
<el-button type="primary" size="mini">批量添加货物</el-button> <!-- <el-button type="primary" size="mini" @click="showBatchImportDialog=true">批量添加货物</el-button> -->
</div> </div>
<el-table :data="productList" border> <el-table :data="productList" border>
<el-table-column label="序号" width="60px" fixed> <el-table-column label="序号" width="60px" fixed>
...@@ -162,7 +169,7 @@ ...@@ -162,7 +169,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="运费" width="200px"> <!-- <el-table-column label="运费" width="200px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<template v-if="row.fee && row.fee.charging == 1"> <template v-if="row.fee && row.fee.charging == 1">
<template v-if="!row.fee.freight">未报价</template> <template v-if="!row.fee.freight">未报价</template>
...@@ -180,7 +187,7 @@ ...@@ -180,7 +187,7 @@
</div> </div>
</template> </template>
</template> </template>
</el-table-column> </el-table-column> -->
<el-table-column label="是否预付"> <el-table-column label="是否预付">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-tag v-if="row.fee" :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.fee.isPayAdvance" /> <dict-tag v-if="row.fee" :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.fee.isPayAdvance" />
...@@ -196,7 +203,7 @@ ...@@ -196,7 +203,7 @@
</el-card> </el-card>
<el-card class="mt-10"> --> <el-card class="mt-10"> -->
<div class="card-title" style="padding:20px 0;">合计</div> <div class="card-title" style="padding:20px 0;">合计</div>
<el-descriptions :column="4" border> <el-descriptions :column="6" border>
<el-descriptions-item label="总件数"> <el-descriptions-item label="总件数">
{{sum.totalNum || 0}} {{sum.totalNum || 0}}
</el-descriptions-item> </el-descriptions-item>
...@@ -206,16 +213,19 @@ ...@@ -206,16 +213,19 @@
<el-descriptions-item label="总重量"> <el-descriptions-item label="总重量">
{{sum.totalWeight || 0}}kg {{sum.totalWeight || 0}}kg
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="数量"> <el-descriptions-item label="数量">
{{sum.totalWorth || 0}} {{sum.totalWorth || 0}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="总货值(RMB)"> <el-descriptions-item label="总货值(RMB)">
{{sum.totalWorth || 0}}元 {{sum.totalWorth || 0}}元
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="保价费">
{{fee.insuranceFee || 0}} 美元
</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
<el-card class="mt-10"> <el-card class="mt-10" v-if="0">
<div class="card-title" slot="header">预计费用</div> <div class="card-title" slot="header">预计费用</div>
<el-descriptions :column="5" border> <el-descriptions :column="5" border>
...@@ -288,8 +298,8 @@ ...@@ -288,8 +298,8 @@
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCollection" form-type="radio" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" v-model="form.isCollection" form-type="radio" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="代收货款金额" v-if="collectionProxy"> <el-descriptions-item label="代收货款金额" v-if="collectionProxy">
<el-input v-model="form.collectionProxy" placeholder="" style="width:200px"></el-input> <el-input v-model="form.collectionProxy" placeholder="" class="w-200 mr-10"></el-input>
<selector v-model="form.collectionProxyCurrency" :options="currencyList" label-field="titleZh" value-field="id" defaultable style="width:100px" /> <selector v-model="form.collectionProxyCurrency" :options="currencyList" label-field="titleZh" value-field="id" defaultable class="w-100" />
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="单证报关" :span="2"> <el-descriptions-item label="单证报关" :span="2">
...@@ -390,6 +400,35 @@ ...@@ -390,6 +400,35 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-dialog title="批量导入" :visible.sync="showBatchImportDialog" width="1000px" :close-on-click-modal="false">
<el-steps :active="importData.length > 0 ? 1 : 0" finish-status="success" class="w-500" style="margin: 20px auto">
<el-step title="上传集装箱"></el-step>
<el-step title="开始导入"></el-step>
<el-step title="完成"></el-step>
</el-steps>
<div class="mt-20">
<el-input type="file" @input="onFileChoosed" class="w-200 mr-10"></el-input>
<el-button type="info" @click="downloadTpl">装箱单模板</el-button>
</div>
<el-table :data="importData" class="mt-10" height="300">
<el-table-column label="序号"></el-table-column>
<el-table-column label="产品名称"></el-table-column>
<el-table-column label="英文名称"></el-table-column>
<el-table-column label="品牌"></el-table-column>
<el-table-column label="箱数"></el-table-column>
<el-table-column label="重量"></el-table-column>
<el-table-column label="体积"></el-table-column>
<el-table-column label="有无单证"></el-table-column>
<el-table-column label="缺货箱数"></el-table-column>
<el-table-column label="数量"></el-table-column>
<el-table-column label="材质"></el-table-column>
</el-table>
<div class="mt-10 center">
<el-button type="primary">下一步</el-button>
<el-button type="default" @click="showBatchImportDialog=false">取消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -409,6 +448,9 @@ import { getCustomer } from '@/api/ecw/customer'; ...@@ -409,6 +448,9 @@ import { getCustomer } from '@/api/ecw/customer';
import AreaSelector from '@/components/AreaSelector' import AreaSelector from '@/components/AreaSelector'
import {calculationPrice} from '@/api/ecw/product' import {calculationPrice} from '@/api/ecw/product'
import {getCustomerAvailableCouponList} from '@/api/ecw/coupon' import {getCustomerAvailableCouponList} from '@/api/ecw/coupon'
import * as xlsx from 'xlsx'
window.xlsx = xlsx
export default { export default {
name: "OrderEdit", name: "OrderEdit",
components: { components: {
...@@ -441,6 +483,7 @@ export default { ...@@ -441,6 +483,7 @@ export default {
form: { form: {
sendstatus:0, sendstatus:0,
isCargoControl: false, isCargoControl: false,
type:[]
}, },
// 表单校验 // 表单校验
...@@ -448,6 +491,8 @@ export default { ...@@ -448,6 +491,8 @@ export default {
}, },
labelStyle: 'width:120px', labelStyle: 'width:120px',
showBatchImportDialog: false, // 显示批量导入弹窗
importData:[]
}; };
}, },
computed:{ computed:{
...@@ -593,6 +638,7 @@ export default { ...@@ -593,6 +638,7 @@ export default {
item.prodAttrArr = item.prodAttrIds.split(',').filter(item => item != '') item.prodAttrArr = item.prodAttrIds.split(',').filter(item => item != '')
this.addProduct(Object.assign({}, item)) this.addProduct(Object.assign({}, item))
}) })
this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : []
}) })
}else this.addProduct() }else this.addProduct()
...@@ -611,6 +657,24 @@ export default { ...@@ -611,6 +657,24 @@ export default {
}) })
}, },
methods: { methods: {
downloadTpl(){
window.open('http://v4.groupage.cn/Download/%E8%A3%85%E7%AE%B1%E5%8D%95%E6%A8%A1%E6%9D%BF.xls')
},
onFileChoosed(e){
window.choosed = e
console.log('onFileChoosed', e)
const reader = new FileReader();
reader.readAsBinaryString(e.target.files[0]);
reader.onload = function(e) {
const data = e.target.result;
const zzexcel = xlsx.read(data, {
type: 'binary'
})
window.zzexcel = zzexcel
window.tableJson = xlsx.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[0]])
}
},
onProductChange(row, product){ onProductChange(row, product){
console.log(product) console.log(product)
row.goodsType = product ? product.typeId : null row.goodsType = product ? product.typeId : null
...@@ -734,6 +798,7 @@ export default { ...@@ -734,6 +798,7 @@ export default {
orderItemVOList: this.productList, orderItemVOList: this.productList,
couponIds: coupons.join(",") couponIds: coupons.join(",")
}) })
data.type = data.type.join(',')
updateOrder(data).then(response => { updateOrder(data).then(response => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.$router.back() this.$router.back()
...@@ -751,6 +816,7 @@ export default { ...@@ -751,6 +816,7 @@ export default {
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled), // transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
orderItemVOList: this.productList orderItemVOList: this.productList
}) })
data.type = data.type.join(',')
// 添加的提交 // 添加的提交
createOrder(data).then(response => { createOrder(data).then(response => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
...@@ -770,7 +836,7 @@ export default { ...@@ -770,7 +836,7 @@ export default {
flex: 1; flex: 1;
} }
} }
.mt-10{ /* .mt-10{
margin-top: 10px; margin-top: 10px;
} } */
</style> </style>
\ No newline at end of file
...@@ -177,6 +177,8 @@ ...@@ -177,6 +177,8 @@
v-hasPermi="['ecw:order:update']">特价</el-button> v-hasPermi="['ecw:order:update']">特价</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/release?orderId=${scope.row.orderId}`)">确认放货</el-button> <el-button type="text" size="mini" @click="$router.push(`/order/release?orderId=${scope.row.orderId}`)">确认放货</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/singleApply?orderNo=${scope.row.orderNo}`)">合单申请</el-button>
<el-button type="text" size="mini" @click="$router.push(`/order/splitApply?orderId=${scope.row.orderId}`)">拆单申请</el-button>
</div> </div>
</el-popover> </el-popover>
......
...@@ -185,11 +185,9 @@ export default { ...@@ -185,11 +185,9 @@ export default {
}, },
created() { created() {
if (this.$route.query.orderNo) { if (this.$route.query.orderNo) {
this.queryParams.mergedOrderNo =this.$route.query.orderNo this.queryParams.mergedOrderNo = this.$route.query.orderNo
} }
this.getList() this.getList()
getTradeCityList().then(res => this.tradeCityList = res.data) getTradeCityList().then(res => this.tradeCityList = res.data)
}, },
methods: { methods: {
......
...@@ -28,9 +28,10 @@ ...@@ -28,9 +28,10 @@
</div> </div>
<el-dialog title="查看须知" :visible.sync="showNotice" width="700px"> <el-dialog title="查看须知" :visible.sync="showNotice" width="700px">
<img :src="noticeUrl" id="noticeImg" /> <!-- <img :src="noticeUrl" id="noticeImg" /> -->
<need-know keyname="control" ref="needKnow" />
<div style="text-align:center"> <div style="text-align:center">
<el-button type="primary" @click="download">下载</el-button> <el-button type="primary" @click="$refs.needKnow.download()">下载</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
...@@ -39,12 +40,15 @@ ...@@ -39,12 +40,15 @@
import {getOrder} from '@/api/ecw/order' import {getOrder} from '@/api/ecw/order'
import FileSaver from 'file-saver' import FileSaver from 'file-saver'
import {dataURLtoBlob} from '@/utils/index' import {dataURLtoBlob} from '@/utils/index'
import NeedKnow from '@/components/NeedKnow'
export default { export default {
components: {NeedKnow},
data(){ data(){
return { return {
order: null, order: null,
showNotice: false, showNotice: false,
noticeUrl: 'http://v4.groupage.cn/Public/images/notice.png' // noticeUrl: 'http://v4.groupage.cn/Public/images/notice.png'
} }
}, },
created(){ created(){
...@@ -57,7 +61,7 @@ export default { ...@@ -57,7 +61,7 @@ export default {
this.order = res.data this.order = res.data
}) })
}, },
download(){ /* download(){
let el = document.getElementById('noticeImg') let el = document.getElementById('noticeImg')
this.downloadIamge(this.noticeUrl, 'ce') this.downloadIamge(this.noticeUrl, 'ce')
}, },
...@@ -80,7 +84,7 @@ export default { ...@@ -80,7 +84,7 @@ export default {
} }
image.src = imgsrc image.src = imgsrc
} } */
} }
} }
</script> </script>
......
...@@ -75,11 +75,11 @@ ...@@ -75,11 +75,11 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-descriptions style="margin-top: 20px" :column="4" border> <el-descriptions style="margin-top: 20px" :column="4" border>
<el-descriptions-item label="集运仓库">{{ warehouseDetails.warehouseOutName }}</el-descriptions-item> <el-descriptions-item label="集运仓库">{{ warehouseDetails && warehouseDetails.warehouseOutName ? warehouseDetails.warehouseOutName : '' }}</el-descriptions-item>
<el-descriptions-item label="储位"> <el-descriptions-item label="储位">
<div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName}}</div><div>{{item.regionName}} 区</div></div> <div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName ? item.warehouseName : ''}}</div><div>{{item.warehouseName ? item.regionName :''}} 区</div></div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInName }}</el-descriptions-item> <el-descriptions-item label="调拨目标仓">{{ warehouseDetails && warehouseDetails.warehouseInName ? warehouseDetails.warehouseInName : '' }}</el-descriptions-item>
<el-descriptions-item label="物流公司"> <el-descriptions-item label="物流公司">
<el-select v-model="params.logisticsCompany" > <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-option v-for="(item,index) in expressList " :key="index" :value="item.id" :label="item.companyZh"></el-option>
...@@ -208,7 +208,7 @@ export default { ...@@ -208,7 +208,7 @@ export default {
}) })
} }
}) })
this.params.phone = this.warehouseDetails.phone; this.params.phone = this.warehouseDetails.phone || '';
this.params.logisticsNo = this.warehouseDetails.logisticsNo; this.params.logisticsNo = this.warehouseDetails.logisticsNo;
this.params.id = this.warehouseDetails.id; this.params.id = this.warehouseDetails.id;
this.params.deliveryDate = this.warehouseDetails.deliveryDate this.params.deliveryDate = this.warehouseDetails.deliveryDate
......
...@@ -25,7 +25,11 @@ ...@@ -25,7 +25,11 @@
</el-select> </el-select>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="是否备案">{{ isBeian }}</el-descriptions-item> <el-descriptions-item label="是否备案">{{ isBeian }}</el-descriptions-item>
<el-descriptions-item label="填单参数"></el-descriptions-item> <el-descriptions-item label="填单参数">
箱数:{{ warehousing.num }}<br>
体积:{{ warehousing.volume }}<br>
重量:{{ warehousing.weight }}Kg
</el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-form ref="form" :model="form" label-width="80px" style="margin-top: 20px"> <el-form ref="form" :model="form" label-width="80px" style="margin-top: 20px">
<el-form-item label="材质"> <el-form-item label="材质">
...@@ -88,7 +92,7 @@ ...@@ -88,7 +92,7 @@
<el-input v-else v-model.number="tableData[$index].weight" placeholder=""></el-input> <el-input v-else v-model.number="tableData[$index].weight" placeholder=""></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量"> <el-table-column label="数量" width="130px">
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<span v-if="tableData[$index].id">{{ tableData[$index].quantityAll }}</span> <span v-if="tableData[$index].id">{{ tableData[$index].quantityAll }}</span>
<el-input v-else v-model.number="tableData[$index].quantityAll" placeholder=""> <el-input v-else v-model.number="tableData[$index].quantityAll" placeholder="">
...@@ -105,6 +109,13 @@ ...@@ -105,6 +109,13 @@
</el-table> </el-table>
</el-card> </el-card>
<div v-if="edit">
<h2>审批流程</h2>
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
<!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div>
<span slot="footer"> <span slot="footer">
<el-button @click="opened = false">关 闭</el-button> <el-button @click="opened = false">关 闭</el-button>
<el-button type="primary" @click="handleSubmit()">提 交</el-button> <el-button type="primary" @click="handleSubmit()">提 交</el-button>
...@@ -116,15 +127,17 @@ ...@@ -116,15 +127,17 @@
<script> <script>
import dictSelector from "@/components/DictSelector" import dictSelector from "@/components/DictSelector"
import {DICT_TYPE, getDictDataLabel} from "@/utils/dict" import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
import warehousing from "@/views/ecw/order/warehousing" import { orderWarehouseIn, orderWarehouseInUpdateApply } from '@/api/ecw/order'
import {orderWarehouseIn} from "@/api/ecw/order"
import {getProductBrankPage} from "@/api/ecw/productBrank" import {getProductBrankPage} from "@/api/ecw/productBrank"
import WorkFlow from "@/components/WorkFlow"
import elSelect from '@/components/render/slots/el-select'
export default { export default {
name: 'editDialog', name: 'editDialog',
components: { components: {
dictSelector dictSelector,
WorkFlow
}, },
props: { props: {
...@@ -132,6 +145,11 @@ export default { ...@@ -132,6 +145,11 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
// 入仓修改
edit: {
type: Boolean,
default: false
},
warehousing: { warehousing: {
type: Object, type: Object,
default: () => { default: () => {
...@@ -146,18 +164,25 @@ export default { ...@@ -146,18 +164,25 @@ export default {
mounted() { mounted() {
getProductBrankPage({pageSize: 100000}).then(r => { getProductBrankPage({pageSize: 100000}).then(r => {
this.brandList = r.data.list.map(e => { this.brandList = [
if(e.id){ {
e.id = e.id.toString() "titleZh":"",
} "titleEn":"",
const boxGauge = e.boxGauge "id":'0'
if (boxGauge && boxGauge.length > 0) { },
const boxGaugeList = boxGauge.split('*') ...r.data.list.map(e => {
const [boxGauge1, boxGauge2, boxGauge3] = boxGaugeList if(e.id){
return {...e, boxGauge1, boxGauge2, boxGauge3} e.id = e.id.toString()
} }
return e const boxGauge = e.boxGauge
}) if (boxGauge && boxGauge.length > 0) {
const boxGaugeList = boxGauge.split('*')
const [boxGauge1, boxGauge2, boxGauge3] = boxGaugeList
return {...e, boxGauge1, boxGauge2, boxGauge3}
}
return e
})
]
}) })
}, },
...@@ -183,7 +208,9 @@ export default { ...@@ -183,7 +208,9 @@ export default {
"prodType": 0, "prodType": 0,
"type": 0 "type": 0
}, },
// orderItem: {} // orderItem: {},
selectedUsers: undefined
}; };
}, },
...@@ -218,27 +245,48 @@ export default { ...@@ -218,27 +245,48 @@ export default {
} }
}, },
handleSubmit() { handleSubmit() {
const orderWarehouseInItemDoList = this.form.orderWarehouseInItemDoList.map(e => { const orderWarehouseInItemDoList = [
return { ...this.warehousing.orderWarehouseInBackItemDoList,
...e, ...this.form.orderWarehouseInItemDoList.map(e => {
boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3 return {
} ...e,
}) boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3
return orderWarehouseIn({ }
...this.form, })
brandType: this.form.brand ? 1 : 0, ]
orderId: this.warehousing.orderId, if (this.edit)
orderItemId: this.warehousing.orderItemId, return orderWarehouseInUpdateApply({
orderNo: this.warehousing.orderNo, ...this.form,
orderWarehouseInItemDoList brandType: this.form.brand ? 1 : 0,
}).then(r => { orderId: this.warehousing.orderId,
if (r.data){ orderItemId: this.warehousing.orderItemId,
this.$message.success('入仓成功') orderNo: this.warehousing.orderNo,
this.handleClose() "orderWarehouseInUpdateItemDoList": orderWarehouseInItemDoList,
}else { copyUserId: this.selectedUsers
this.$message.success('入仓失败') }).then(r => {
} if (r.data){
}) this.$message.success('入仓修改发起成功')
this.handleClose()
}else {
this.$message.success('入仓修改发起失败')
}
})
else
return orderWarehouseIn({
...this.form,
brandType: this.form.brand ? 1 : 0,
orderId: this.warehousing.orderId,
orderItemId: this.warehousing.orderItemId,
orderNo: this.warehousing.orderNo,
orderWarehouseInItemDoList
}).then(r => {
if (r.data){
this.$message.success('入仓成功')
this.handleClose()
}else {
this.$message.success('入仓失败')
}
})
}, },
handleClose() { handleClose() {
this.form.orderWarehouseInItemDoList = [] this.form.orderWarehouseInItemDoList = []
......
...@@ -63,10 +63,13 @@ ...@@ -63,10 +63,13 @@
prop="address" prop="address"
label="操作"> label="操作">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<el-button v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0" size="mini" type="text" @click="handleWarehousing($index)">追加</el-button>
<el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
<el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button> <el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button>
<template v-else>
<el-button v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0" size="mini" type="text" @click="handleWarehousing($index)">追加</el-button>
<el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
</template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -86,7 +89,16 @@ ...@@ -86,7 +89,16 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<div style="text-align: center;margin-top: 15px"> <el-card style="margin-top: 15px;">
<div slot="header" class="clearfix">
<span style="font-size: 18px">入仓影像</span>
</div>
<div>
<image-and-video-upload :fileSize="50" :isShowTip="true" v-model="form.urls" ></image-and-video-upload>
</div>
</el-card>
<div style="text-align: center;margin-top: 15px" v-if="order.status !== 5">
<el-button @click="escapeBol = true;" type="primary">转异</el-button> <el-button @click="escapeBol = true;" type="primary">转异</el-button>
<el-button type="primary" @click="finishVisible = true">完成入仓</el-button> <el-button type="primary" @click="finishVisible = true">完成入仓</el-button>
</div> </div>
...@@ -94,7 +106,7 @@ ...@@ -94,7 +106,7 @@
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList" :order-id="orderId"></warehouse-area-dialog> <warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList" :order-id="orderId"></warehouse-area-dialog>
<edit-dialog :visible.sync="warehousingVisible" :warehousing="warehousing"></edit-dialog> <edit-dialog :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="order.status === 5"></edit-dialog>
<!-- 完成入仓 --> <!-- 完成入仓 -->
<el-dialog <el-dialog
...@@ -110,7 +122,7 @@ ...@@ -110,7 +122,7 @@
<el-button type="primary" @click="handleSubmit()">确 定</el-button> <el-button type="primary" @click="handleSubmit()">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :title="order.orderNo + '转异常单'" center :visible.sync="escapeBol"> <el-dialog :title="order.orderNo + '订单转异'" center :visible.sync="escapeBol">
<el-form label-position="top" label-width="200"> <el-form label-position="top" label-width="200">
<el-form-item label="原因类型"> <el-form-item label="原因类型">
<dict-selector v-model="form.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector> <dict-selector v-model="form.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector>
...@@ -123,10 +135,24 @@ ...@@ -123,10 +135,24 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSubmit">完成并入仓</el-button> <el-button type="primary" @click="handleSubmit">完成并入仓</el-button>
<el-button @click="escapeBol = false">取消</el-button> <el-button @click="escapeBol = false">取消</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- <el-dialog-->
<!-- title="转异常单"-->
<!-- :visible.sync="dialogVisible"-->
<!-- width="30%"-->
<!-- :before-close="handleClose(done)"-->
<!-- >-->
<!-- <span>这是一段信息</span>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="dialogVisible = false">确认并完成入仓</el-button>-->
<!-- <el-button @click="dialogVisible = false">取 消</el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag> <print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag>
<print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" /> <print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" />
...@@ -150,6 +176,7 @@ import PrintTag from "@/views/ecw/order/components/PrintTag" ...@@ -150,6 +176,7 @@ import PrintTag from "@/views/ecw/order/components/PrintTag"
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt" import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt"
import imageUpload from "@/components/ImageUpload"; import imageUpload from "@/components/ImageUpload";
import {parseTime} from "@/utils/ruoyi" import {parseTime} from "@/utils/ruoyi"
import ImageAndVideoUpload from '@/components/ImageAndVideoUpload'
export default { export default {
name: "Warehousing", name: "Warehousing",
...@@ -159,7 +186,8 @@ export default { ...@@ -159,7 +186,8 @@ export default {
editDialog, editDialog,
PrintTag, PrintTag,
PrintWarehouseReceipt, PrintWarehouseReceipt,
imageUpload imageUpload,
ImageAndVideoUpload,
}, },
mounted() { mounted() {
...@@ -186,6 +214,7 @@ export default { ...@@ -186,6 +214,7 @@ export default {
exceptionUrls:[], exceptionUrls:[],
descZh:'', descZh:'',
manualExceptionType:'', manualExceptionType:'',
urls: []
}, },
currencyList:[], currencyList:[],
order: {}, order: {},
...@@ -204,7 +233,8 @@ export default { ...@@ -204,7 +233,8 @@ export default {
let p = { let p = {
orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList, orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList,
"orderLocationCreateReqVOList": this.form.orderLocationCreateReqVOList, "orderLocationCreateReqVOList": this.form.orderLocationCreateReqVOList,
"orderId": this.order.orderId "orderId": this.order.orderId,
urls: this.form.urls
} }
if(this.escapeBol){ if(this.escapeBol){
p.exceptionUrls = this.form.exceptionUrls.split(','); p.exceptionUrls = this.form.exceptionUrls.split(',');
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<!--全部路线吗没有新增入口,指定商品的路线价格才有添加路线--> <!--全部路线吗没有新增入口,指定商品的路线价格才有添加路线-->
<el-col :span="1.5" v-if="$route.query.product_id"> <el-col :span="1.5" v-if="$route.query.product_id">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">添加路线</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['ecw:product-price:create']">新建价格</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="handleBatchEdit" :disabled="multiple">设置已选路线价格</el-button> <el-button v-if="!$route.query.product_id" type="primary" plain icon="el-icon-setting" size="mini" @click="handleBatchEdit" :disabled="multiple">设置已选路线价格</el-button>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="关键字" prop="nickname"> <el-form-item label="关键字" prop="nickname">
<el-input v-model="queryParams.nickname" placeholder="搜索昵称、姓名、手机、Email" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.searchKey" placeholder="搜索昵称、姓名、手机、Email" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="成交" prop="mobile"> <el-form-item label="成交" prop="mobile">
<el-select v-model="queryParams.isDeal"> <el-select v-model="queryParams.isDeal">
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
@pagination="getList"/> @pagination="getList"/>
<el-dialog <el-dialog
title="保函/证书" title="保函/证书"
...@@ -287,8 +287,8 @@ export default { ...@@ -287,8 +287,8 @@ export default {
dateRangeCreateTime: [], dateRangeCreateTime: [],
// 查询参数 // 查询参数
queryParams: { queryParams: {
pageNo: 1, page: 1,
pageSize: 10, rows: 10,
isDeal:undefined,// 是否成交 isDeal:undefined,// 是否成交
searchKey:undefined,//关键字 searchKey:undefined,//关键字
auditStatus:undefined,//审核状态 auditStatus:undefined,//审核状态
......
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