Commit 6653bd1e authored by 我在何方's avatar 我在何方
parents 18982c34 7b5bdacb
......@@ -50,23 +50,35 @@ export default {
padding: 50px;
text-align: center;
}
$sizes: 10,20,30,50,100,150,200,500,800,1000;
$sizes: 0, 10,20,30,50,100,150,200,500,800,1000;
@for $i from 1 through length($sizes){
$item: nth($sizes, $i);
.ml-#{$item}{
margin-left: #{$item}px;
margin-left: #{$item}px !important;
}
.mr-#{$item}{
margin-right: #{$item}px;
margin-right: #{$item}px !important;
}
.mb-#{$item}{
margin-bottom: #{$item}px;
margin-bottom: #{$item}px !important;
}
.mt-#{$item}{
margin-top: #{$item}px;
margin-top: #{$item}px !important;
}
.pl-#{$item}{
margin-left: #{$item}px !important;
}
.pr-#{$item}{
margin-right: #{$item}px !important;
}
.pb-#{$item}{
margin-bottom: #{$item}px !important;
}
.pt-#{$item}{
margin-top: #{$item}px !important;
}
.w-#{$item}{
width: #{$item}px;
width: #{$item}px !important;
}
}
</style>
......@@ -73,3 +73,19 @@ export function cancelAdjustApply(data){
data
})
}
//调仓审核
export function warehouseApprovalCancel(params,reason){
return request({
url: `/order/order-warehouse-approval/cancel/${params}`,
method:'get',
params:{reason}
})
}
// 调仓-查看最近的调仓纪录和审核状态
export function adjustLastWithStatus(params){
return request({
url:'/order/order-warehouse-in/adjust-last-with-status',
method:'get',
params,
})
}
......@@ -163,3 +163,19 @@ export function getBrankByCustomer(data){
data,
})
}
//
export function levelLogPage(params){
return request({
url:'/customer/level-log/page',
method:'get',
params
})
}
//获取信用等级日志列表
export function customerCreditLogPage(params){
return request({
url:'/customer/credit-log/page',
method:'get',
params
})
}
......@@ -103,12 +103,12 @@ export function feeApplicationListByOrderId(query){
})
}
// 创建特殊
// 批量更新特需
export function specialNeedCreate(data){
return request({
url:'ecw/order-special-need/create',
method:'post',
data:data,
url:'ecw/order-special-need/updateBatch',
method:'put',
data,
})
}
// 创建特殊
......@@ -377,6 +377,24 @@ export function getOrderSpecialByApproveId(approveId) {
})
}
// 订单号检索功能
export function getOrderNoSearch(params) {
return request({
url: '/ecw/order/orderNoSearch',
method: 'get',
params
})
}
// 提单号检索功能
export function getBillNoSearch(params) {
return request({
url: '/ecw/order/billNoSearch',
method: 'get',
params
})
}
// 根据合并订单编号获得已合单的订单动态
export function getMergeLogByMergedOrderNo(params){
return request({
......@@ -403,3 +421,11 @@ export function exportPackingList(){
responseType: 'blob'
})
}
//获得特需
export function orderSpecialNeedGet(params){
return request({
url:'/ecw/order-special-need/get',
method:'get',
params
})
}
......@@ -34,6 +34,15 @@ export function getZhongPao(id) {
})
}
// 获得客户最优惠的重泡货配置
export function getZhongPaoBest(query) {
return request({
url: '/ecw/zhong-pao/get-customer-best-zhong-pao',
method: 'get',
params: query
})
}
// 获得重泡货配置分页
export function getZhongPaoPage(query) {
return request({
......
......@@ -27,6 +27,8 @@
</div>
</div>
</div>
<pagination v-show="total > 0" :total="total" :page.sync="form.pageNo" :limit.sync="form.pageSize"
@pagination="loadList" />
</el-dialog>
</template>
<script>
......@@ -39,11 +41,12 @@ export default {
return {
show: true,
form:{
/* pageNo: 1,
pageSize: 20, */
pageNo: 1,
pageSize: 10,
searchKey: ''
},
list:[]
list:[],
total: 0
}
},
created(){
......@@ -57,7 +60,8 @@ export default {
},
loadList(){
getCustomerContactsSelect(this.form).then(res => {
this.list = res.data
this.list = res.data.list
this.total = res.data.total
})
},
closeDialog(){
......
......@@ -124,7 +124,7 @@ export default {
this.$modal.msgSuccess("新增成功");
return getCustomerContactsSelect({customerId: res.data})
}).then(res => {
this.$emit('success', res.data[0])
this.$emit('success', res.data.list[0])
})
});
},
......
......@@ -100,7 +100,7 @@ export default {
f.selected = false
if(f.positionList) f.positionList.forEach(g => {
// 位置
g.children.forEach(k => {
g.children?.forEach(k => {
// 子位置
k.selected = false
})
......@@ -135,7 +135,7 @@ export default {
// 区域被选,清空该区域下的位置
if(warehouse.positionList) warehouse.positionList.forEach(g => {
g.children.forEach(k => {
g.children?.forEach(k => {
k.selected = false
})
})
......@@ -152,7 +152,7 @@ export default {
let hasSelected = false
parentAre.positionList.forEach(g => {
// 位置
g.children.forEach(k => {
g.children?.forEach(k => {
// 子位置
if (k.selected) hasSelected = true
})
......@@ -187,7 +187,7 @@ export default {
else if(f.positionList) f.positionList.forEach(g => {
// 位置
if (g.selected) result.push(k.code)
g.children.forEach(k => {
g.children?.forEach(k => {
// 子位置
if (k.selected) result.push(k.code)
})
......
......@@ -29,10 +29,7 @@
<el-input v-model="form.content" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="处理状态" prop="status">
<el-select v-model="form.status" placeholder="请选择处理状态">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_COMPLAINT_STATUS)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
<span>{{ getDictDataLabel(DICT_TYPE.CUSTOMER_COMPLAINT_STATUS, 1) }}</span>
</el-form-item>
</el-form>
......@@ -90,7 +87,7 @@
import { createCustomerComplaint, updateCustomerComplaint, deleteCustomerComplaint, getCustomerComplaint, getCustomerComplaintPage, exportCustomerComplaintExcel } from "@/api/ecw/customerComplaint";
import {getCustomerSelect} from '@/api/ecw/customer'
import DictSelector from '@/components/DictSelector'
import { DICT_TYPE } from '@/utils/dict'
import { DICT_TYPE, getDictDatas, getDictDataLabel } from '@/utils/dict'
export default {
name: "customerComplaints",
......@@ -107,6 +104,8 @@ export default {
data() {
return {
DICT_TYPE,
getDictDatas,
getDictDataLabel,
// 遮罩层
loading: true,
// 导出遮罩层
......@@ -172,7 +171,7 @@ export default {
orderId: undefined,
ladingbillId: undefined,
content: undefined,
status: undefined,
status: 1,
ascertainReason: undefined,
plan: undefined,
result: undefined,
......
......@@ -8,7 +8,7 @@
<div class="right-menu">
<template v-if="device!=='mobile'">
<el-badge :value="matterNum !== 0 ? matterNum : '' " class="right-menu-item badge">
<div @click="$router.push('/bpm/task/todo')" style="font-size: 28px; color: #cccccc;cursor: pointer;" class="el-icon-postcard"></div>
<div @click="$router.push('/task/todo')" style="font-size: 28px; color: #cccccc;cursor: pointer;" class="el-icon-postcard"></div>
</el-badge>
<el-badge :value="notMessage !== 0 ? notMessage : '' " class="right-menu-item badge">
......@@ -216,7 +216,7 @@ export default {
font-size: 18px;
color: #5a5e66;
vertical-align: text-bottom;
margin-right: 6px;
margin-right: 15px;
&.hover-effect {
cursor: pointer;
transition: background .3s;
......
......@@ -94,14 +94,18 @@
</template>
</el-table-column>
<el-table-column label="方数(预装/已装)" align="center" prop="squareNumber" />
<el-table-column label="重量(预装/已装)" align="center" prop="weight" />
<el-table-column label="状态" align="center" prop="boxStatus">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPMENT_STATUS" :value="scope.row.boxStatus" />
<el-table-column label="方数(预装/已装)" align="center" prop="">
<template slot-scope="{row}">
{{row.boxStatistics.volume}}/{{row.boxStatistics.loadVolume}}
</template>
</el-table-column>
<el-table-column label="重量(预装/已装)" align="center" prop="weight">
<template slot-scope="{row}">
{{row.boxStatistics.weight}}/{{row.boxStatistics.loadWeight}}
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="shipmentStatusText" />
<el-table-column label="日期" align="center" prop="createTime" width="180">
<template slot-scope="scope">
......
......@@ -71,8 +71,8 @@
</el-form>
<el-row class="operate-button" v-if="inReview">
<el-button type="primary" @click="jumpReviewDetail">{{cusDeclarationObj.dcCheckStatus === '1' ? '部分退场审核中' : '全部退场审核中'}}</el-button>
<el-button type="primary" plain @click="canclAudit">{{cusDeclarationObj.dcCheckStatus === '1' ? '取消部分退场审核' : '取消全部退场审核'}}</el-button>
<el-button type="primary" @click="jumpReviewDetail">{{cusDeclarationObj.dcCheckStatus === '1' ? '全部退场审核中' : '部分退场审核中'}}</el-button>
<el-button type="primary" plain @click="canclAudit">{{cusDeclarationObj.dcCheckStatus === '1' ? '取消全部退场审核' : '取消部分退场审核'}}</el-button>
</el-row>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
......
......@@ -74,7 +74,6 @@ export default {
};
},
created() {
this.getBoxInfo();
// 仓库
getWarehouseList().then((r) => {
this.warehouseList = r.data;
......@@ -100,6 +99,9 @@ export default {
this.allUsers = data.list ?? [];
});
},
activated() {
this.getBoxInfo();
},
methods: {
/* 获取仓库 */
importCityName(id) {
......
This diff is collapsed.
......@@ -68,11 +68,7 @@
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
</template>
</el-table-column>
<el-table-column label="国家" align="center" prop="country">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.COUNTRY" :value="scope.row.country" />
</template>
</el-table-column>
<el-table-column label="国家" align="center" prop="country" :formatter="countryFormatter"></el-table-column>
<el-table-column label="客户经理" align="center" prop="customerService" :formatter="customerServiceFn">
</el-table-column>
<el-table-column label="客户状态" align="center" prop="status">
......@@ -470,6 +466,7 @@ import {getNodeList} from "@/api/ecw/node"
import CustomerFollowList from "@/components/CustomerFollowList"
import customerComplaints from "@/components/customerComplaints"
import {listServiceUser} from "@/api/system/user";
import { getCountryListAll } from '@/api/ecw/country'
export default {
name: "Customer",
......@@ -527,7 +524,9 @@ export default {
nodeList: [],
showLine: false,
customerId:undefined,
customerServiceList:[]
customerServiceList:[],
countryList: []
};
},
created() {
......@@ -539,8 +538,15 @@ export default {
console.log(r,'客服');
this.customerServiceList = r.data;
})
getCountryListAll().then(r => {
this.countryList = r.data
})
},
methods: {
countryFormatter(row, column, cellValue) {
const country = this.countryList.find((e) => e.id === cellValue)
return country?.nameZh
},
customerServiceFn(val){
if(this.customerServiceList.length > 0){
let index =this.customerServiceList.findIndex(item => item.id === val.customerService);
......
......@@ -97,7 +97,7 @@
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="客户名称" prop="customerId">
<el-select v-model="form.customerId" placeholder="请选择客户名称" :disabled="!!customerId">
<el-select v-model="form.customerId" placeholder="请选择客户名称" :disabled="!!customerId" filterable>
<el-option
v-for="item in customerSelect"
:key="item.id"
......@@ -112,16 +112,45 @@
</el-select>
</el-form-item>
<el-form-item label="订单号" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入订单号" />
<el-select
v-model="form.orderId"
filterable
remote
reserve-keyword
placeholder="请输入订单号"
:remote-method="getOrderList"
:loading="loading">
<el-option
v-for="item in orderList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="提单号" prop="ladingbillId">
<el-input v-model="form.ladingbillId" placeholder="请输入提单号" />
<el-select
v-model="form.ladingbillId"
filterable
remote
reserve-keyword
placeholder="请输入提单号"
:remote-method="getBillList"
:loading="loading">
<el-option
v-for="item in billList"
:key="item.value"
:label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="投诉内容" prop="content">
<el-input v-model="form.content" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="处理状态" prop="status">
<el-select v-model="form.status" placeholder="请选择处理状态">
<span v-if="!form.id">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_COMPLAINT_STATUS, 1) }}</span>
<el-select v-else v-model="form.status" placeholder="请选择处理状态">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_COMPLAINT_STATUS)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
......@@ -168,7 +197,7 @@
</el-input>
</el-form-item>
<el-form-item v-show="form.status == '3'" label="处理时间" required>
<el-date-picker type="datetime" v-model="form.handleAt"></el-date-picker>
<el-date-picker type="datetime" v-model="form.handleAt" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
......@@ -184,7 +213,8 @@ import { createCustomerComplaint, updateCustomerComplaint, deleteCustomerComplai
import {getCustomerSelect} from '@/api/ecw/customer'
import CustomerFollow from "../../../components/CustomerFollow"
import DictSelector from '@/components/DictSelector'
import { DICT_TYPE } from '@/utils/dict'
import { DICT_TYPE, getDictDataLabel, getDictDatas } from '@/utils/dict'
import { getBillNoSearch, getOrderNoSearch } from '@/api/ecw/order'
export default {
name: "CustomerComplaint",
......@@ -202,6 +232,8 @@ export default {
data() {
return {
DICT_TYPE,
getDictDatas,
getDictDataLabel,
// 遮罩层
loading: true,
// 导出遮罩层
......@@ -234,6 +266,8 @@ export default {
// 表单校验
rules: {
customerId: [{ required: true, message: "客户名称不能为空", trigger: "change" }],
type: [{ required: true, message: "投诉类型不能为空", trigger: "change" }],
content: [{ required: true, message: "投诉内容不能为空", trigger: "blur" }],
},
myFollowCustomerList: [],
......@@ -243,7 +277,10 @@ export default {
// 处理
handle: {
dialogVisible: false
}
},
billList: [],
orderList: []
};
},
created() {
......@@ -254,6 +291,22 @@ export default {
})
},
methods: {
getBillList(key){
getBillNoSearch({key, pageNo: 1, pageSize: 20}).then(r => {
if (r.code === 0){
this.billList = r.data.list
}
})
},
getOrderList(key){
getOrderNoSearch({key, pageNo: 1, pageSize: 20}).then(r => {
if (r.code === 0){
this.orderList = r.data.list
}
})
},
/** 查询列表 */
getList() {
this.loading = true;
......@@ -308,6 +361,8 @@ export default {
this.reset();
this.open = true;
this.title = "添加客户投诉";
// 新增客诉默认状态为待处理
this.form.status = 1;
},
/** 修改按钮操作 */
handleUpdate(row) {
......
This diff is collapsed.
......@@ -44,6 +44,8 @@
</el-table-column>
<!-- <el-table-column label="始发仓" prop="startWarehouseName"></el-table-column>-->
<el-table-column label="目的地" prop="objectiveName"></el-table-column>
<el-table-column label="始发仓" prop="startWarehouseName">
</el-table-column>
<el-table-column label="发货人">
<template v-slot="{row}">
<div>
......@@ -52,6 +54,7 @@
{{ row.consignorName }}
</p>
<p>
{{row.consignorPhone}}
</p>
</div>
</div>
......@@ -64,28 +67,34 @@
{{ row.consigneeName }}
</p>
<p>
{{ row.consigneePhone }}
{{ row.consigneePhone}}
</p>
</div>
</template>
</el-table-column>
<el-table-column>
<template v-slot="{row}">
<el-button @click="canceLtiaoCang(row)" type="text" v-if="row.inWarehouseState === 10">
取消调仓
</el-button>
</template>
</el-table-column>
</el-table>
<el-row style="margin-top: 30px">
<el-col :span="8">
<div style="text-align: right;">
{{ list[0] && list[0].adjustToStartWarehouseName ? list[0].adjustToStartWarehouseName : list[0] && list[0].startWarehouseName ? list[0].startWarehouseName : '' }}
</div>
</el-col>
<el-col :span="3"><div style="text-align:center">
调至
</div></el-col>
<el-col :span="8"><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-select></el-col>
</el-row>
<div style="display: flex;justify-content:center; margin-top: 20px">
<div style="width: 200px; margin: 0 10px">
{{ list[0] && list[0].startWarehouseName ? list[0].startWarehouseName : '' }}
</div>
<div>
</div>
<div style="width: 200px;">
<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-select>
</div>
</div>
<el-divider></el-divider>
......@@ -95,12 +104,17 @@
<div style="padding: 20px">
<work-flow xmlkey="warehouse_transfer" v-model="params.copyUserId"/>
</div>
<div style="text-align: center">
<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>
<div style="text-align: center" v-if="!adjustmentBol">
<el-button style="margin-right: 50px" @click="submit">提交申请</el-button>
<el-button @click="$emit('update:dialogVisible',false)">取消</el-button>
</div>
<!-- <warehouseDetails></warehouseDetails>-->
<div style="text-align: center" v-else>
<el-button @click="()=>{
$router.push({path:'/bpm/process-instance/detail',query:{id:this.applyStatus.orderWarehouseApprovalBackVO.formId}})
}">审核中</el-button>
<el-button @click="cancellationOfOrder" >取消审核</el-button>
<el-button @click="$emit('update:dialogVisible',false)" >取消</el-button>
</div>
</div>
</el-dialog>
</template>
......@@ -108,10 +122,10 @@
<script>
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {
adjustApplyStatus, cancelAdjustApply,
adjustApplyStatus, adjustLastWithStatus, cancelAdjustApply,
ecwOrderList,
orderWarehouseInAdjustApply,
warehouseAdjustmentList,
warehouseAdjustmentList, warehouseApprovalCancel,
} from "@/api/ecw/batchSingleApplication";
import {getProcessDefinitionBpmnXMLByKey} from "@/api/bpm/definition";
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
......@@ -148,18 +162,8 @@ export default {
}
},
computed: {
isSubmit() {
let flag = true;
if (this.list.length === 1 && this.list[0].status === 5) {
flag = false
} else {
let l = this.list.map(e => e.startWarehouseId)
if (this.list.every(e => e.status === 5) && [...new Set(l)].length === 1) flag = false
}
return flag;
},
adjustmentBol() {
return this.list.some(e => e.inWarehouseState === 10)
return this.applyStatus?.orderWarehouseAdjustBackVO?.status === 1
}
},
data() {
......@@ -176,6 +180,8 @@ export default {
warehouseOutId: undefined,
copyUserId: [],
},
applyStatus:{}//调仓-查看状态
}
},
methods: {
......@@ -183,12 +189,18 @@ export default {
getOrderPage({orderIdList: this.orderList}).then(r => {
this.list = r.data.list
warehouseAdjustmentList({id: this.list[0].startWarehouseId}).then(r => this.availableWarehouse = r.data)
adjustLastWithStatus({orderId:this.list[0].orderId,lang:0}).then(r =>{
this.applyStatus = r.data
if(r.data?.orderWarehouseAdjustBackVO?.status === 1){
this.params.warehouseInId = r.data.orderWarehouseAdjustBackVO?.warehouseInId
}
})
})
},
submit() {
let p = this.list.map(e => e.orderId).join(',');
this.params.orderIds = p;
this.params.warehouseOutId = this.list[0].startWarehouseId;
this.params.warehouseOutId = this.list[0].adjustToStartWarehouseId ? this.list[0].adjustToStartWarehouseId : this.list[0].startWarehouseId;
this.params.orderNo = this.list[0].orderNo
orderWarehouseInAdjustApply(this.params).then(r => {
if (r.code === 0) {
......@@ -197,34 +209,25 @@ export default {
}
})
},
async canceLtiaoCang(row) {
let res = await adjustApplyStatus({orderId: row.orderId})
if (res.data.isBatch) {
this.$message.warning('批量提提交请耐心等待')
} else {
this.$prompt('请问您是否要取消调仓?', '提示', {
cancellationOfOrder(){
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()
}).then(({ value }) => {
warehouseApprovalCancel(this.applyStatus.orderWarehouseApprovalBackVO.id,value) .then(r => {
if(r.data){
this.$message.success('取消调仓成功')
this.$emit('update:dialogVisible',false)
}
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
message: '取消成功'
});
});
}
},
}
}
</script>
......
......@@ -74,7 +74,7 @@
<el-table-column :label="$t('订单编号')" width="120px" align="center" prop="orderNo" >
<template slot-scope="scope">
<span>{{ scope.row.orderNo }}</span>
<router-link :to="`detail?orderId=` + scope.row.orderId">{{ scope.row.orderNo }}</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('唛头')" align="center" prop="marks" />
......
<template>
<el-dialog :title="$t('批量提货')" visible :before-close="closeDialog" :close-on-click-modal="false">
<el-form :model="form">
<el-form ref="form" :model="form" :rules="rules">
<el-tabs v-model="current" type="card">
<el-tab-pane :label="$t('全部提货')" name="createOrderPickupBatch">
<el-form-item :label="$t('订单号') + '/' + this.$t('提单号')" required>
<el-form-item :label="$t('订单号') + '/' + this.$t('提单号')" prop="orderId">
<el-input v-model="form.orderId" :placeholder="$t('例:NA2200001L')"></el-input>
<div>{{$t('注:单号之间使用逗号或空格隔开')}}</div>
</el-form-item>
<el-form-item :label="$t('提货时间')">
<el-form-item :label="$t('提货时间')" prop="pickTime">
<el-date-picker v-model="form.pickTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-tab-pane>
......@@ -36,6 +36,10 @@ export default {
pickTime: '',
pickType: 1
},
rules:{
orderId: [{required: true, message: this.$t('请填写单号')}],
pickTime: [{required: true, message: this.$t('请选择时间')}]
}
}
},
computed:{
......@@ -46,6 +50,7 @@ export default {
},
methods:{
submit(){
this.$refs.form.validate().then(() => {
if(this.form.orderId == '' || this.form.pickTime==''){
return this.$message.error(this.$t('请填写订单号和提货时间'))
}
......@@ -61,7 +66,8 @@ export default {
({createOrderPickupBatch, createOrderPickupSplitBatch}[this.current])(data).then(res => {
this.$message.success(this.$t("操作成功"));
this.form.orderId = ''
this.$emit('success')
})
})
},
closeDialog(){
......
......@@ -6,7 +6,7 @@
<el-input v-model="cargoControlName" disabled></el-input>
</el-form-item>
<el-form-item :label="$t('原控货手机号')">
<el-input :value="cargoControlPhone" disabled></el-input>
<el-input :value="consigneeCountryCode + ' ' + cargoControlPhone" disabled></el-input>
</el-form-item>
<el-form-item :label="$t('新控货人')" prop="name">
......@@ -49,6 +49,7 @@ export default {
orderId: [String, Number],
cargoControlName: String,
cargoControlPhone: String,
consigneeCountryCode: String,
orderNo: String,
},
......
......@@ -6,7 +6,7 @@
<el-form label-width="180px" label-position="left">
<el-form-item label="特殊要求">
<el-checkbox-group v-model="advanceType">
<el-checkbox v-for="(item) in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)" :disabled="advanceTypeList.includes(item.value)" :label="item.value" >{{item.label}}</el-checkbox>
<el-checkbox v-for="(item) in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)" :label="item.value" >{{item.label}}</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊要求备注"><el-input type="textarea" style="width: 300px;" v-model="todoDetail"></el-input></el-form-item>
......@@ -33,7 +33,7 @@
<script>
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import {specialNeedCreate} from "@/api/ecw/order";
import {specialNeedCreate,getSpecialListByOrderId} from "@/api/ecw/order";
export default {
name: "specialNeeds",
props:{
......@@ -41,12 +41,9 @@ export default {
type:[String,Number],
},
show:Boolean,
advanceTypes:String,
},
computed:{
advanceTypeList(){
return !!this.advanceTypes ? this.advanceTypes.split(',') : []
}
},
data(){
return{
......@@ -62,7 +59,6 @@ export default {
submit(){
this.specialNeedsList.forEach(i => {
i.todoDetail = this.todoDetail
})
let p = this.specialNeedsList.filter(i => this.advanceType.indexOf(i.advanceType) > -1)
specialNeedCreate(p).then(r=>{
......@@ -86,6 +82,20 @@ export default {
payType:''
})
})
//特需回显
getSpecialListByOrderId(this.orderId).then(r => {
r.data.forEach(i => {
this.advanceType.push(i.advanceType)
let index = this.specialNeedsList.findIndex(item => i.advanceType == item.advanceType)
this.specialNeedsList.splice(index,1, { advanceType:i.advanceType,
orderId:this.orderId,
id:i.id,
transFee:i.transFee,//预计金额
transCurrency:i.transCurrency,//运输费币种
payType:i.payType})
})
})
}else {
this.specialNeedsList = []
this.advanceType = []
......
......@@ -38,6 +38,9 @@
</el-table-column>
<el-table-column
label="入仓时间">
<template v-slot="{row}">
{{parseTime(row.rucangTime)}}
</template>
</el-table-column>
<el-table-column
label="运输方式">
......@@ -54,10 +57,22 @@
<el-table-column
label="发货人">
<template v-slot="{row}">
<div></div>
<p>
{{row.consignorName}}
</p>
<p>
{{row.consignorPhone}}
</p>
</template>
</el-table-column>
<
<el-table-column
header-align="center"
align="center"
prop="columnProp"
label="columnLabel"
>
</el-table-column>
label="收货人">
<template v-slot="{row}">
<p>
......@@ -211,7 +226,7 @@ export default {
warehouseApprovalGetByFormId({formId:this.processInstanceID}).then( r => {
this.FeeDetails = r.data
this.FeeDetails.details = JSON.parse(r.data.details)
getOrderPage({orderIdList:r.data.orderIds}).then(res=>{
getOrderPage({orderIdList:r.data.adjustActualOrderIds}).then(res=>{
this.list = res.data.list
})
......
<template>
<div>
<el-dialog
title="选择储位"
:visible.sync="opened"
width="600px"
:before-close="handleClose()"
v-bind="$attrs"
>
<el-tabs v-model="activeName" type="card" @tab-click="activeWarehouse = {}">
<el-tab-pane v-if="item.warehouseId === warehouseId" :label="item.name" :name="'' + index" v-for="(item, index) in area" :key="index">
<div>
<div style="text-align: center">区域</div>
<div style="background-color: #efefef;padding: 10px 10px 0;border: #dcdcdc solid 1px;border-radius: 2px">
<el-row :gutter="20">
<el-col :span="12" v-for="(warehouse, i) in item.children" :key="i">
<div
class="warehouse-block"
:class="{'warehouse-block-selected': warehouse.selected, 'warehouse-block-active': warehouse.id === activeWarehouse.id}"
@click="handleSelectWarehouse(warehouse)"
>
{{ warehouse.name }}
</div>
</el-col>
</el-row>
</div>
</div>
<div>
<div style="text-align: center">仓位</div>
<div class="position-group">
<div class="position" v-for="position in activeWarehouse.positionList" :key="item.id">
<div
class="position-item"
v-for="item in position.children"
@click="handleSelectPosition(item)"
:class="{'position-item-active': item.selected}">
{{ item.code }}
</div>
</div>
</div>
</div>
<el-divider></el-divider>
已选择:{{ selected.join(', ') }}
<el-divider></el-divider>
</el-tab-pane>
</el-tabs>
<span slot="footer">
<el-button @click="opened = false">关 闭</el-button>
<el-button type="primary" @click="handleSubmit()">提 交</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { getByWarehouseId } from '@/api/ecw/warehouseArea'
export default {
name: 'warehouseLocation',
props: {
visible: {
type: Boolean,
default: false
},
value: Array,
orderId: Number,
cityId: {
type: Number,
default: undefined
},
warehouseId: {
type: Number,
default: undefined
},
},
data() {
return {
opened: false,
area: [],
activeName: '0',
selectedWarehouse: [],
selectedPosition: [],
activeWarehouse: {}
};
},
watch: {
visible(val) {
if (val) {
this.opened = true
getByWarehouseId({cityId: this.cityId,}).then(r => {
const area = r.data
area.forEach(e => {
// 仓库
e.children.forEach(f => {
// 区域
f.selected = false
if(f.positionList) f.positionList.forEach(g => {
// 位置
if(g.children)g.children.forEach(k => {
// 子位置
k.selected = false
})
})
})
})
this.area = area
})
} else {
}
},
opened(val) {
if (val) {
} else {
this.$emit('update:visible', false)
}
}
},
methods: {
handleSubmit() {
this.$emit('input', this.inputValue)
this.opened = false
},
handleClose() {},
handleSelectWarehouse(warehouse) {
this.activeWarehouse = warehouse
if (!!warehouse.selected) {
warehouse.selected = false
} else {
warehouse.selected = true
// 区域被选,清空该区域下的位置
if(warehouse.positionList) warehouse.positionList.forEach(g => {
if(g.children)g.children.forEach(k => {
k.selected = false
})
})
}
},
handleSelectPosition(position) {
if (!!position.selected) {
position.selected = false
// 反选位置时,检查父区域下是否所有位置被反选,若是,选父区域
const parentAre = this.area.find(e => e.id === position.domainId).children.find(f => f.id === position.areaId)
if (!parentAre.selected) {
// 检查父区域下是否所有位置被反选
let hasSelected = false
parentAre.positionList.forEach(g => {
// 位置
g.children.forEach(k => {
// 子位置
if (k.selected) hasSelected = true
})
})
// 所有子位置被反选,选父区域
if (!hasSelected) parentAre.selected = true
}
} else {
position.selected = true
// 选位置时,父区域反选
this.area.find(e => e.id === position.domainId).children.find(f => f.id === position.areaId).selected = false
}
}
},
mounted() {
console.log('area dialog mounted')
},
computed: {
// code array
selected() {
const result = []
this.area.forEach(e => {
// 仓库
e.children.forEach(f => {
// 区域
if (f.selected) result.push(f.code)
else if(f.positionList) f.positionList.forEach(g => {
// 位置
if (g.selected) result.push(k.code)
if(g.children)g.children.forEach(k => {
// 子位置
if (k.selected) result.push(k.code)
})
})
})
})
return result
},
inputValue(){
const result = []
this.area.forEach(e => {
// 仓库
e.children.forEach(f => {
// 区域
if (f.selected) result.push({
orderId: this.orderId,
wareId: f.pid,
areaId: f.id
})
else if(f.positionList) f.positionList.forEach(g => {
// 位置
if (g.selected) result.push({
orderId: this.orderId,
wareId: g.domainId,
areaId: g.areaId,
locationId: g.id
})
else if(g.children)g.children.forEach(k => {
// 子位置
if (k.selected) result.push({
orderId: this.orderId,
wareId: k.domainId,
areaId: k.areaId,
locationId: k.id
})
})
})
})
})
return result
}
}
}
</script>
<style scoped>
.warehouse-block{
background-color: white;
border-radius: 5px;
height: 42px;
line-height: 42px;
text-align: center;
margin-bottom: 15px;
cursor: pointer;
transition: 0.5s;
box-shadow: #bfbfbf 3px 3px 14px 0;
user-select: none;
}
.warehouse-block:hover{
opacity: 0.9;
transition: 0.5s;
transform: scale(1.02);
box-shadow: #8f8f8f 7px 5px 14px 0;
}
.warehouse-block-active{
box-shadow: #7e9dbd 7px 5px 14px 0;
transform: scale(1.04);
}
.warehouse-block-selected{
color: #ffffff;
background-color: #4085e3;
}
.position-group{
display: flex;
background-color: #EFEFEF;
border: 1px #EFEFEF solid;
gap: 1px;
min-height: 64px;
}
.position{
width: 20%;
height: 64px;
display: flex;
flex-direction: column;
gap: 1px;
user-select: none;
}
.position-item{
width: 100%;
background-color: #FFFFFF;
flex: 1;
cursor: pointer;
text-align: center;
display: flex;
justify-content: center;
align-items: center;
}
.position-item:hover{
background-color: #d7dbe3;
}
.position-item-active{
background-color: #4085e3;
color: white;
}
.position-item-active:hover{
background-color: #4085e3;
opacity: 0.8;
}
</style>
......@@ -121,9 +121,12 @@
</el-table-column>
<el-table-column prop="" :label="$t('成交单价')" width="220px">
<template slot-scope="{row}">
<template v-if="row.charging ==1">
{{$t('全包价')}} {{row.seaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
<template v-if="!row.seaFreight">未报价</template>
<template>{{$t('全包价')}} {{row.seaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</template>
</template>
<template v-else-if="!row.seaFreight && !row.clearanceFreight">未报价</template>
<template v-else>
<div>
{{$t('运费')}}{{row.seaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
......
This diff is collapsed.
......@@ -241,7 +241,7 @@
<print-tag v-if="printTagOrderId !== null" :order-id="printTagOrderId" @close="printTagOrderId=null" />
<print-warehouse-receipt v-if="printWarehouseReceiptOrderId !== null" :order-id="printWarehouseReceiptOrderId" @close="printWarehouseReceiptOrderId=null" />
<print-lading-bill v-if="printLadingBillInfo !== null" v-bind="printLadingBillInfo" @close="printLadingBillInfo=null" />
<batch-pickup v-if="showBatchPickup" @close="onBatchClose"/>
<batch-pickup v-if="showBatchPickup" @close="onBatchClose" @success="onBatchClose"/>
<withdrawal v-if="show" :dialog-visible="show" :orderId="orderId" ></withdrawal>
<batch-single-application :order-list="orderId" :dialog-visible.sync="warehouseBol"></batch-single-application>
<fee-application :order-id="orderId" :dialog-visible.sync="feeApplicationBol"></fee-application>
......
......@@ -24,7 +24,7 @@
<div class="actions">
<el-button type="primary" @click="$router.replace('detail?orderId=' + order.orderId)">{{$t('查看订单')}}</el-button>
<el-button type="warning" @click="showNotice = true">{{$t('入仓须知')}}</el-button>
<el-button type="info" @click="$router.replace('edit')">{{$t('再来一单')}}</el-button>
<el-button type="info" @click="$router.replace('create')">{{$t('再来一单')}}</el-button>
</div>
<el-dialog :title="$t('查看须知')" :visible.sync="showNotice" width="700px">
......
This diff is collapsed.
......@@ -131,7 +131,7 @@
<el-form-item label="原因类型">
<dict-selector v-model="form.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector>
</el-form-item>
<el-form-item label="附件">
<el-form-item required label="附件">
<image-upload v-model="form.exceptionUrls"></image-upload>
</el-form-item>
<el-form-item label="详细信息">
......@@ -139,7 +139,7 @@
</el-form-item>
</el-form>
<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>
</span>
</el-dialog>
......
<template>
<div class="app-container">
<el-form ref="elForm" :model="formData" :rules="rules" size="small" label-width="100px"
<el-form ref="elForm" :model="formData" :rules="rules" inline size="small" label-width="100px"
label-position="left">
<div>
<el-form-item :label="$t('公司全称')" prop="companyZh">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司全称')" show-word-limit clearable></el-input>
</el-form-item>
<el-form-item :label="$t('英文名称')" prop="companyEn">
<el-input v-model="formData.companyZh" :placeholder="$t('请输入公司英文名')" show-word-limit clearable></el-input>
<el-input v-model="formData.companyEn" :placeholder="$t('请输入公司英文名')" show-word-limit clearable></el-input>
</el-form-item>
<!-- <el-form-item :label="$t('代理名称')" prop="agentName">
<el-input v-model="formData.agentName" :placeholder="$t('请输入代理名称')" clearable :style="{width: '100%'}">
</el-input>
</el-form-item> -->
</div>
<div>
<el-form-item :label="$t('合作开始时间')" prop="cooperationDateStart">
<el-date-picker v-model="formData.cooperationDateStart" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker>
</el-form-item>
<el-form-item :label="$t('合作结束时间')" prop="cooperationDateEnd">
<el-date-picker v-model="formData.cooperationDateEnd" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司电话')" prop="tell">
<el-input v-model="formData.tell" :placeholder="$t('请输入公司电话')" clearable></el-input>
</el-form-item>
<el-form-item :label="$t('邮件地址')" prop="email">
<el-input v-model="formData.email" :placeholder="$t('请输入邮箱地址')" clearable></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('公司地址')" prop="address">
<!-- <el-select v-model="formData.country">
<el-option v-for="(item, index) in treeList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select>
<el-select v-model="formData.province">
<el-option v-for="(item, index) in provinceList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select>
<el-select v-model="formData.city">
<el-option v-for="(item, index) in cityList" :value="item.id" :label="item.titleZh" :key="item.id" />
</el-select> -->
<area-selector
:country="formData.country"
:province="formData.province"
......@@ -38,65 +37,71 @@
@cityChange="onAreaChange('city', $event)"
/>
<el-input v-model="formData.address" :placeholder="$t('请输入详细地址')" class="mt-10"></el-input>
<!-- <el-select v-model="selectedRegionIndex">
<el-option v-for="(item, index) in regionList" :value="index" :label="item.titleZh" :key="item.id" />
</el-select> -->
<!-- <el-select v-model="formData.address" placeholder="请选择下拉选择公司地址" clearable :style="{width: '100%'}">
</el-select> -->
</el-form-item>
</div>
<div>
<el-form-item :label="$t('备注')" prop="remark">
<el-input v-model="formData.remark" type="textarea" :placeholder="$t('请输入备注')"
:autosize="{minRows: 4, maxRows: 4}" :style="{width: '100%'}"></el-input>
</el-form-item>
<el-form-item label-width="0" prop="field110">
<table-form :title="$t('联系人')" :fields="[
{ label: this.$t('部门'), field: 'department'},
{ label: this.$t('职位'), field: 'position'},
{ label: this.$t('名称') + '*', field: 'name', required: true},
{ label: this.$t('电话') + '*', field: 'phone', required: true},
]" v-model="formData.contactList">
</table-form>
:autosize="{minRows: 4, maxRows: 4}" class="w-500"></el-input>
</el-form-item>
</div>
<div>
<el-form-item :label="$t('供应商类别')" prop="companyType">
<!-- <el-checkbox-group v-model="formData.companyType" size="medium">
<el-checkbox v-for="(item, index) in companyTypeOptions" :key="index" :label="item.value"
:disabled="item.disabled">{{item.label}}</el-checkbox>
</el-checkbox-group> -->
<dict-selector v-model="formData.companyType" type="company_type" multiple />
</el-form-item>
<el-form-item :label="$t('合作类型')" prop="cooperationType">
<dict-selector v-model="formData.cooperationType" type="cooperation_type" />
</el-form-item>
</div>
<div>
<el-form-item :label="$t('营业执照')" prop="license">
<upload v-model="formData.license" />
<!-- <el-upload ref="license" :file-list="licensefileList" :action="licenseAction"
:before-upload="licenseBeforeUpload">
<el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
</el-upload> -->
</el-form-item>
<el-form-item :label="$t('合同')" prop="contract">
<upload v-model="formData.contract" />
<!-- <el-upload ref="contract" :file-list="contractfileList" :action="contractAction"
:before-upload="contractBeforeUpload">
<el-button size="small" type="primary" icon="el-icon-upload">点击上传</el-button>
</el-upload> -->
</el-form-item>
</div>
<div>
<el-form-item :label="$t('统一信用代码')" prop="licenseNumber">
<el-input v-model="formData.licenseNumber" :placeholder="$t('请输入统一社会信用代码')" clearable
:style="{width: '100%'}"></el-input>
</el-form-item>
</div>
<div>
<el-form-item label-width="0">
<table-form :title="$t('联系人')" :fields="[
{ label: this.$t('部门'), field: 'department'},
{ label: this.$t('职位'), field: 'position'},
{ label: this.$t('名称'), field: 'name', required: true},
{ label: this.$t('电话'), field: 'phone', required: true},
]" v-model="formData.contactList" class="w-1000">
</table-form>
</el-form-item>
</div>
<div>
<el-form-item label-width="0" prop="field110">
<table-form :title="$t('银行信息')" :fields="[
{ label: this.$t('账户名称') + '*', field: 'accountName', required: true},
{ label: this.$t('币别') + '*', field: 'currency', required: true},
{ label: this.$t('银行名称*'), field: 'bankName', required: true},
{ label: this.$t('银行账户') + '*', field: 'bankAccount', required: true},
{ label: this.$t('账户名称'), field: 'accountName', required: true},
{ label: this.$t('币别') , field: 'currency', tag: 'selector', attr: currentcyAttr, required: true},
{ label: this.$t('银行名称'), field: 'bankName', required: true},
{ label: this.$t('银行账户'), field: 'bankAccount', required: true},
{ label: this.$t('银行代码'), field: 'bankCode'},
{ label: this.$t('账户类型'), field: 'accountType'},
{ label: this.$t('银行地址'), field: 'bankAddress'},
]" v-model="formData.bankList">
{ label: this.$t('状态'), field: 'status', tag:'el-switch', attrs: bankStatusAttr},
{label: this.$t('操作'), buttons: [
{
type: 'danger',
text: '删除',
hander: delBank
}
]}
]" v-model="formData.bankList" class="w-1000">
</table-form>
</el-form-item>
</div>
<el-form-item size="large">
<el-button type="primary" @click="submitForm">{{$t('提交')}}</el-button>
<el-button @click="resetForm">{{$t('重置')}}</el-button>
......@@ -153,7 +158,12 @@ export default {
},
treeList:[],
provinceList:[],
cityList:[]
cityList:[],
bankStatusAttr:{
"active-value":1,
"inactive-value": 0
},
currentcyAttr: []
}
},
computed: {
......@@ -192,6 +202,9 @@ export default {
},
mounted() {},
methods: {
delBank(){
console.log('删除银行卡')
},
onAreaChange(type, val){
this.$set(this.formData, type, val)
},
......@@ -214,7 +227,7 @@ export default {
// 添加的提交
createSupplier(data).then(response => {
this.$modal.msgSuccess(this.$t("新增成功"));
this.$router.back()
this.$router.replace('supplier')
});
});
},
......
......@@ -7,7 +7,7 @@
<line-chart :chart-data="lineChartData" />
</el-row>
<el-row>
<!-- <el-row>
<el-col :span="12">
<ueditor v-model="html" />
</el-col>
......@@ -25,7 +25,7 @@
<el-row>
<my-process-viewer key="designer" v-model="bpmnXML" v-bind="bpmnControlForm" />
</el-row>
</el-row> -->
<el-row :gutter="32">
<el-col :xs="24" :sm="24" :lg="8">
......
......@@ -78,11 +78,16 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="24" v-if="form.type == 2">
<el-col :span="12" v-if="form.type == 2">
<el-form-item label="显示菜单" prop="isShowInMenuBar">
<dict-selector v-model="form.isShowInMenuBar" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" form-type="radio" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="form.type == 2">
<el-form-item label="保活" prop="keepalive">
<dict-selector v-model="form.keepalive" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" form-type="radio" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item v-if="form.type != '3'" label="菜单图标">
<el-popover placement="bottom-start" width="460" trigger="click" @show="$refs['iconSelect'].reset()">
......@@ -259,6 +264,7 @@ export default {
isShowInMenuBar: undefined,
type: SystemMenuTypeEnum.DIR,
sort: undefined,
keepalive: false,
status: CommonStatusEnum.ENABLE
};
this.resetForm("form");
......
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