Commit f0e4a1a4 authored by Administrator's avatar Administrator

Merge branch 'pre-release' into 'jd_dev'

Pre release最新代码合并到jd_dev20241108

See merge request !96
parents dea494a4 94746a9e
......@@ -291,6 +291,14 @@ export function infoListOrderPage(params){
params
})
}
//客户详情订单统计
export function infoListStatisticsOrder(params){
return request({
url:'/ecw/order/customer-statistics-order',
method:'get',
params
})
}
//客户详情 --- 报价
export function infoListOfferPage(params){
return request({
......@@ -544,10 +552,20 @@ export function addCompetitor(data){
})
}
export function competitorListAll(){
// 获得客户
export function getCompetitor(id) {
return request({
url: '/customer/competitor/get?id=' + id,
method: 'get'
})
}
export function competitorListAll(params){
return request({
url:'customer/competitor/listAll',
method:'get'
method:'get',
params
})
}
......@@ -557,4 +575,4 @@ export function customerMergeCus(params){
method:'get',
params
})
}
\ No newline at end of file
}
......@@ -91,6 +91,13 @@ export function editCustomerFollow(data) {
data
})
}
export function updateCustomerFollowupStatus(data) {
return request({
url: "/customer/followup/update-status",
method: "put",
data
})
}
export function exportCustomerFollow(params) {
return request({
......
......@@ -359,6 +359,13 @@ export function feeApplicationGet(params) {
params
})
}
export function approvalFeeApplicationGet(params) {
return request({
url: "/order/fee-application/approval/get",
method: "get",
params
})
}
//获得调仓明细
export function orderWarehouseInGetAdjustInfo(params) {
......@@ -1081,8 +1088,9 @@ export function copyOrder(orderId) {
// 强制到仓
export function order_warehouse_check_force(data) {
return request({
url: "/order/order-warehouse-check/force/" + data.orderId,
method: "post"
url: "/order/order-warehouse-check/force",
method: "post",
data
})
}
......
<template>
<el-select
v-model="valueSync"
filterable
:clearable="clearable"
:multiple="multiple"
remote
reserve-keyword
:placeholder="$t('请输入关键词')"
@change="(val) => $emit('change', val)"
:remote-method="remoteMethod"
@focus="onFocus"
@clear="onClear"
:loading="loading">
<el-option
v-for="(item, index) in list"
:key="item.id"
:label="`${item.name}`"
:value="index">
</el-option>
</el-select>
</template>
<script>
import {competitorListAll, getCompetitor} from '@/api/ecw/customer'
export default {
props: {
value: [String, Number, Array, Boolean],
multiple: Boolean,
clearable: Boolean,
placeholder: String,
},
data() {
return {
list: [],
loading: false,
valueSync: this.value
}
},
watch: {
index(val) {
let id = null
if (val){
let data = this.list[val]
console.log('选中的竞争对手', data)
id = data.id
}
// let id = val !== '' && val !== null ? this.list[val].id : null
this.$emit('input', id)
},
value(val) {
// console.log('初始化内容', val)
this.init()
},
},
created() {
this.init()
},
methods: {
init() {
if (!this.value) {
this.index = null
return
}
let index = this.list.findIndex(item => item.id == this.value)
if (index < 0) {
getCompetitor(this.value).then(res => {
this.list.unshift(res.data)
this.$nextTick(() => {
this.index = 0
})
})
} else this.index = index
},
onFocus() {
this.$emit('focus')
if (!this.list.length) {
this.remoteMethod()
}
},
onClear() {
this.list = []
},
remoteMethod(keyword) {
let params = {}
params.searchKey = keyword
this.loading = true
competitorListAll(params)
.then(res => {
console.log('初始化内容', res),
this.list = res.data
})
.finally(() => this.loading = false)
}
}
}
</script>
......@@ -96,6 +96,7 @@ import '@/icons'
import axios from 'axios'
Vue.prototype.$axios = axios
import '@/styles/index.scss'
import '@/styles/custom.scss'
/**
* If you don't want to use mock-server
......
.search-z {
.el-form-item--small.el-form-item {
width: 360px;
}
}
.search-time {
.el-form-item--small.el-form-item {
width: 520px;
}
}
.flex-c-c {
display: flex;
justify-content: center;
align-items: center;
}
$editorTabsborderColor: #121315;
body, html{
body,
html {
margin: 0;
padding: 0;
background: #fff;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;
}
input, textarea{
font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;
input,
textarea {
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;
}
.editor-tabs{
.editor-tabs {
background: $editorTabsborderColor;
.el-tabs__header{
.el-tabs__header {
margin: 0;
border-bottom-color: $editorTabsborderColor;
.el-tabs__nav{
.el-tabs__nav {
border-color: $editorTabsborderColor;
}
}
.el-tabs__item{
.el-tabs__item {
height: 32px;
line-height: 32px;
color: #888a8e;
border-left: 1px solid $editorTabsborderColor!important;
border-left: 1px solid $editorTabsborderColor !important;
background: #363636;
margin-right: 5px;
user-select: none;
}
.el-tabs__item.is-active{
.el-tabs__item.is-active {
background: #1e1e1e;
border-bottom-color: #1e1e1e!important;
border-bottom-color: #1e1e1e !important;
color: #fff;
}
.el-icon-edit{
.el-icon-edit {
color: #f1fa8c;
}
.el-icon-document{
.el-icon-document {
color: #a95812;
}
:focus.is-active.is-focus:not(:active) {
box-shadow: none;
border-radius: 0;
......@@ -54,29 +64,35 @@ input, textarea{
padding: 12px 18px 15px 15px;
}
}
.el-scrollbar__wrap {
box-sizing: border-box;
overflow-x: hidden !important;
margin-bottom: 0 !important;
}
.center-tabs{
.el-tabs__header{
margin-bottom: 0!important;
.center-tabs {
.el-tabs__header {
margin-bottom: 0 !important;
}
.el-tabs__item{
.el-tabs__item {
width: 50%;
text-align: center;
}
.el-tabs__nav{
.el-tabs__nav {
width: 100%;
}
}
.reg-item{
.reg-item {
padding: 12px 6px;
background: #f8f8f8;
position: relative;
border-radius: 4px;
.close-btn{
.close-btn {
position: absolute;
right: -6px;
top: -6px;
......@@ -91,18 +107,22 @@ input, textarea{
z-index: 1;
cursor: pointer;
font-size: 12px;
&:hover{
background: rgba(210, 23, 23, 0.5)
&:hover {
background: rgba(210, 23, 23, 0.5);
}
}
& + .reg-item{
&+.reg-item {
margin-top: 18px;
}
}
.action-bar{
.action-bar {
& .el-button+.el-button {
margin-left: 15px;
}
& i {
font-size: 20px;
vertical-align: middle;
......@@ -111,31 +131,32 @@ input, textarea{
}
}
.custom-tree-node{
.custom-tree-node {
width: 100%;
font-size: 14px;
.node-operation{
.node-operation {
float: right;
}
i[class*="el-icon"] + i[class*="el-icon"]{
i[class*="el-icon"]+i[class*="el-icon"] {
margin-left: 6px;
}
.el-icon-plus{
color: #409EFF;
.el-icon-plus {
color: #409eff;
}
.el-icon-delete{
.el-icon-delete {
color: #157a0c;
}
}
.el-scrollbar__view{
/*overflow-x: hidden;*/
}
.el-rate{
.el-rate {
display: inline-block;
vertical-align: text-top;
}
.el-upload__tip{
.el-upload__tip {
line-height: 1.2;
}
\ No newline at end of file
}
......@@ -33,8 +33,8 @@
</el-select>
</el-form-item>
<el-form-item :label="$t('状态')" prop="shipmentStatusAir">
<el-select v-model="queryParams.shipmentStatusAir" :placeholder="$t('请选择状态')" clearable size="small">
<el-form-item :label="$t('状态')" prop="shipmentStatusAirList">
<el-select v-model="queryParams.shipmentStatusAirList" :placeholder="$t('请选择状态')" clearable size="small" multiple collapse-tags>
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BOX_AIR_SHIPMENT_STATE)" :key="dict.value" :label="$l(dict, 'label')" :value="dict.value" />
</el-select>
</el-form-item>
......@@ -66,7 +66,7 @@
</el-select>
</el-form-item>
<el-form-item :label="$t('发货方式')" prop="deliveryType" v-show="showSearch">
<el-select v-model="queryParams.deliveryType" :placeholder="$t('请选择发货方式')" clearable size="small">
<el-select v-model="queryParams.deliveryType" :placeholder="$t('请选择发货方式')" clearable size="small" multiple collapse-tags>
<el-option v-for="item in deliveryTypeData" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
......@@ -750,6 +750,26 @@ export default {
}
});
},
formatQuery() {
let obj = {}
//始发仓
// if (this.startWarehouseId != null && this.startWarehouseId != "") {
// obj.startWarehouseIds = this.startWarehouseId
// }
//目的国
if (this.countryIdList != null && this.countryIdList != "") {
obj.countryIdLists = this.countryIdList
}
//目的城市
if (this.destCityIdList != null && this.destCityIdList != "") {
obj.destCityIdLists = this.destCityIdList
}
//目的仓
if (this.destWarehouseIdList != null && this.destWarehouseIdList != "") {
obj.destWarehouseIdList = this.destWarehouseIdList
}
return obj
},
/** 查询列表 */
getList() {
this.loading = true
......@@ -760,7 +780,7 @@ export default {
this.addBeginAndEndTimeNew(params, params.flyBeginTime, 'fly');// 预计起飞时间
this.addBeginAndEndTimeNew(params, params.dcPassBeginTime, 'dcPass');// 放行时间
// 执行查询
getboxPage(params).then((response) => {
getboxPage({...params, ...this.formatQuery()}).then((response) => {
this.list = response.data.list
this.total = response.data.total
// var lineParams = []
......@@ -795,6 +815,9 @@ export default {
destWarehouseIdList: undefined,
transportType: undefined
}
this.countryIdList = null;
this.destCityIdList = null;
this.destWarehouseIdList = null;
this.resetForm('form')
},
/** 搜索按钮操作 */
......@@ -863,7 +886,7 @@ export default {
.confirm(this.$t('是否确认导出所有出货数据项?'))
.then(() => {
this.exportLoading = true
return exportboxExcel(params)
return exportboxExcel({...params, ...this.formatQuery()})
})
.then((response) => {
this.$download.excel(response, this.$t("空运管理") + ".xls");
......
......@@ -108,9 +108,9 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('状态')" prop="boxStatusList">
<el-form-item :label="$t('状态')" prop="shipmentStatusList">
<el-select
v-model="queryParams.boxStatusList"
v-model="queryParams.shipmentStatusList"
:placeholder="$t('请选择状态')"
clearable
multiple
......@@ -147,7 +147,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="" prop="dateRangeCreateTime">
<el-date-picker
v-model="queryParams.dateRangeCreateTime"
......@@ -961,6 +961,26 @@ export default {
this.countryList = response.data;
});
},
formatQuery() {
let obj = {}
//始发仓
// if (this.startWarehouseId != null && this.startWarehouseId != "") {
// obj.startWarehouseIds = this.startWarehouseId
// }
//目的国
if (this.countryIdList != null && this.countryIdList != "") {
obj.countryIdLists = this.countryIdList
}
//目的城市
if (this.destCityIdList != null && this.destCityIdList != "") {
obj.destCityIdLists = this.destCityIdList
}
//目的仓
if (this.destWarehouseIdList != null && this.destWarehouseIdList != "") {
obj.destWarehouseIdList = this.destWarehouseIdList
}
return obj
},
/** 查询列表 */
getList() {
this.loading = true;
......@@ -978,7 +998,7 @@ export default {
this.addBeginAndEndTimeNew(params, params.estBeginTime, 'est');// 预计到港时间
this.addBeginAndEndTimeNew(params, params.dcPassBeginTime, 'dcPass');// 放行时间
// 执行查询
getboxPage(params).then((response) => {
getboxPage({...params, ...this.formatQuery()}).then((response) => {
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
......@@ -993,6 +1013,9 @@ export default {
resetQuery() {
this.queryParams = {};
this.dateRangeCreateTime = [];
this.countryIdList = null;
this.destCityIdList = null;
this.destWarehouseIdList = null;
this.resetForm("queryForm");
this.handleQuery();
},
......@@ -1058,7 +1081,7 @@ export default {
.confirm(this.$t("是否确认导出所有出货数据项?"))
.then(() => {
this.exportLoading = true;
return exportboxExcel(params);
return exportboxExcel({...params, ...this.formatQuery()});
})
.then((response) => {
this.$download.excel(response, this.$t("海运管理") + ".xls");
......
......@@ -74,6 +74,24 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$t('品牌')" align="center">
<template v-if="scope.row.brandName && scope.row.brandName!=='无' && scope.row.brandName!=='无牌'" slot-scope="scope">
<template v-if="scope.row.brandName">{{scope.row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brand" />
</template>
</el-table-column>
<el-table-column :label="$t('包装类型')" align="center" prop="">
<template slot-scope="scope">
<span v-for="(unit,index) in scope.row.units.split(',')" :key="index">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="unit" /><span v-if="index<scope.row.units.split(',').length-1">, </span>
</span>
</template>
</el-table-column>
<el-table-column :label="$t('特性')" align="center" prop="warehouseInAttrNameList" width="120">
<template slot-scope="scope">
{{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
</template>
</el-table-column>
<el-table-column :label="$t('计划/已理')" align="center" prop="warehouseInInfo.cartonsNum">
<template slot-scope="scope">
<el-link type="primary" @click.native="orderClick(scope.row)">
......
......@@ -118,6 +118,9 @@
<el-table-column :label="$t('清关状态')" align="center" prop="">
<template slot-scope="scope">{{ clearStatus(scope.row) }}</template>
</el-table-column>
<el-table-column :label="$t('卸柜/到仓时间')" align="center" prop="">
<template slot-scope="scope">{{ scope.row.unloadTime }}</template>
</el-table-column>
<el-table-column :label="$t('始发仓')" align="center" prop="startWarehouseName" />
<el-table-column :label="$t('目的仓')" align="center" prop="destWarehouseName" />
<el-table-column :label="$t('体积')" align="center" prop="volume" />
......@@ -143,7 +146,7 @@
<el-button type="danger" size="small" @click="openError(scope.row)">{{ $t("异常") }}</el-button>
<el-button v-if="pageData.boxCustomsBackVO && pageData.boxCustomsBackVO.overMachineStatus == 2 && pageData.boxCustomsBackVO.overMachineAbnormalStatus == 2" plain type="primary" size="small" @click="$router.push('/order/warehousing-update?id=' + scope.row.orderId)">{{ $t("入仓修改 ") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_revoke(scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("撤销到仓") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button>
<el-button type="primary" size="small" @click="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button>
</div>
</template>
......@@ -305,10 +308,23 @@ export default {
})
},
order_warehouse_check_force(orderId) {
if (!this.ulWarehouseTime) {
this.$message.error(this.$t("请选择到仓时间"))
return
}
this.$confirm(this.$t("确定要强制到仓么?")).then(async () => {
let r = await order_warehouse_check_force({ orderId })
this.getLoadGoodsList()
let params = {}
params.orderId = orderId
params.unloadTime = this.ulWarehouseTime
await order_warehouse_check_force(params).then((res) => {
if (res.data){
this.$router.push('/order/warehousingTo-update?id=' + orderId)
}
})
})
},
getTotlContent,
getOrders(id) {
......
......@@ -62,6 +62,24 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$t('品牌')" align="center">
<template v-if="scope.row.brandName && scope.row.brandName!=='无' && scope.row.brandName!=='无牌'" slot-scope="scope">
<template v-if="scope.row.brandName">{{scope.row.brandName}}</template>
<dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brand" />
</template>
</el-table-column>
<el-table-column :label="$t('包装类型')" align="center" prop="">
<template slot-scope="scope">
<span v-for="(unit,index) in scope.row.units.split(',')" :key="index">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="unit" /><span v-if="index<scope.row.units.split(',').length-1">, </span>
</span>
</template>
</el-table-column>
<el-table-column :label="$t('特性')" align="center" prop="warehouseInAttrNameList" width="120">
<template slot-scope="scope">
{{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
</template>
</el-table-column>
<el-table-column :label="$t('箱数')" align="center" prop="warehouseInInfo.cartonsNum">
<template slot-scope="scope">
<el-link type="primary" @click.native="showWarehouseLogs(scope.row)">
......
......@@ -109,6 +109,9 @@
<el-table-column :label="$t('清关状态')" align="center" prop="">
<template slot-scope="scope">{{ clearStatus(scope.row) }}</template>
</el-table-column>
<el-table-column :label="$t('卸柜/到仓时间')" align="center" prop="">
<template slot-scope="scope">{{ scope.row.unloadTime }}</template>
</el-table-column>
<el-table-column :label="$t('始发仓')" align="center" prop="startWarehouseName" />
<el-table-column :label="$t('目的仓')" align="center" prop="destWarehouseName" />
<el-table-column :label="$t('体积')" align="center" prop="volume" />
......@@ -133,7 +136,7 @@
<div class="btns">
<el-button type="danger" size="small" @click="openError(scope.row)">{{ $t("异常") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_revoke(scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("撤销到仓") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button>
<el-button type="primary" size="small" @click="order_warehouse_check_force(scope.row.orderId)" v-if="scope.row.inWarehouseState == 0 && scope.row.unloadNum > 0 && scope.row.installNum > scope.row.unloadNum">{{ $t("强制到仓") }}</el-button>
<el-button type="primary" size="small" @click="$router.push('/order/warehousingTo-update?id=' + scope.row.orderId)" v-if="scope.row.inWarehouseState == 218">{{ $t("到仓修改") }}</el-button>
</div>
</template>
......@@ -287,9 +290,19 @@ export default {
})
},
order_warehouse_check_force(orderId) {
if (!this.ulWarehouseTime) {
this.$message.error(this.$t("请选择到仓时间"))
return
}
this.$confirm(this.$t("确定要强制到仓么?")).then(async () => {
let r = await order_warehouse_check_force({ orderId })
this.getLoadGoodsList()
let params = {}
params.orderId = orderId
params.unloadTime = this.ulWarehouseTime
await order_warehouse_check_force(params).then((res) => {
if (res.data){
this.$router.push('/order/warehousingTo-update?id=' + orderId)
}
})
})
},
getTotlContent,
......
......@@ -22,7 +22,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('跟进类型')" required>
<el-select v-model="form.followType" clearable :placeholder="$t('请选择')" @change="handleFollowType" :disabled="isView">
<el-select v-model="form.followType" clearable :placeholder="$t('请选择')" @change="handleFollowType" :disabled="isView || !!offerId">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_TYPE)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
......@@ -42,7 +42,7 @@
<el-col :span="12" v-else>
<el-form-item :label="$t('联系人')" required>
<div class="contact">
<el-input :value="form.contactName" placeholder="" disabled />
<el-input v-model="form.contactName" :value="form.customerContactsId" placeholder="" disabled />
<img src="@/assets/svg/contacts.svg" class="phonebook" @click="ChooseContactDialog = true" />
</div>
</el-form-item>
......@@ -88,13 +88,6 @@
<el-input rows="3" class="text_style" type="textarea" v-model="form.feedback" maxlength="500" show-word-limit :disabled="isView" />
</el-form-item>
</el-col>
<el-col :span="20" v-if="isView">
<el-form-item>
<div style="text-align: right">
<el-button size="mini" icon="el-icon-collection" type="primary" @click="$emit('handleCustomerFollowAdd', form)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>
</div>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item :label="$t('附件')" prop="attatchment">
<FileUpload :limit="5" :isShowTip="true" v-model="form.attatchment" :fileType="fileType" :disabled="isView" />
......@@ -110,6 +103,14 @@
<el-input type="textarea" :rows="3" v-model="form.nextPlan" :placeholder="$t('请输入下一步计划')" maxlength="500" show-word-limit :disabled="isView" />
</el-form-item>
</el-col>
<el-col :span="20" v-if="isView">
<el-form-item>
<div style="text-align: right">
<!-- <el-button size="mini" icon="el-icon-collection" type="primary" @click="$emit('handleCustomerFollowAdd', form)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>-->
<el-button size="mini" type="text" icon="el-icon-collection" @click="handleUpdate(form, true)" v-has-permi="['ecw:customer:follow-add-plan']">{{ $t("增加计划") }} </el-button>
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('创建人')" prop="founder">
<el-select v-model="form.creatorName" disabled :placeholder="$t('请选择')">
......@@ -146,6 +147,7 @@
</div>
</el-dialog>
<choose-contact-dialog v-if="ChooseContactDialog" :type="2" @choose="changeAllContactUser" @close="ChooseContactDialog = false" />
<CustomerFollowSelectOffer v-if="CustomerFollowSelectOffer" :customer-id="customerId" ref="customerFollowSelectOffer" @select="selectOffer" @close="CustomerFollowSelectOffer = false" />
</div>
</template>
<style lang="scss" scoped>
......@@ -172,6 +174,7 @@ import { parseTime } from "@/utils/ruoyi"
import FileUpload from "@/components/FileUpload/fileUpload"
import { formatDate } from "@/utils/index"
import ChooseContactDialog from "@/components/ChooseContactDialog"
import CustomerFollowSelectOffer from "./customerFollowSelectOffer"
export default {
/**
* 客户跟进
......@@ -182,16 +185,19 @@ export default {
/**
* 如果是客户投诉跟进,则id为客户投诉id;如果是客户跟进,则id为客户id
*/
offerId: Number,
customerId: Number,
customerNumber: String,
customerService: Number
},
components: {
ChooseContactDialog,
CustomerFollowSelectOffer,
FileUpload
},
data() {
return {
CustomerFollowSelectOffer: false,
ChooseContactDialog: false,
fileType: ["doc", "xls", "ppt", "txt", "pdf", "png", "jpg", "jpeg"],
DICT_TYPE,
......@@ -203,7 +209,7 @@ export default {
customerFollow: {
dialogVisible: false,
form: {
followType: "3"
followType: 3
}
},
offerDialogVisible: true,
......@@ -242,6 +248,9 @@ export default {
})
},
methods: {
selectOffer(offerId) {
this.form.offerId = offerId
},
init() {
if (this.form.customerId) {
getCustomerContactsListByCustomer({
......@@ -268,12 +277,14 @@ export default {
console.log(item)
if (item) {
this.form.contactId = item.customerContactsId
this.form.contactName = item.contactsName
this.form.customerId = item.customerId
this.form.contactPhone = "+" + item.areaCode + item.phoneNew
if (item.customerService) this.form.followUserId = item.customerService
if (item.customerNumber) this.form.customerNumber = item.customerNumber
} else {
this.form.contactId = null
this.form.contactName = null
this.form.contactPhone = null
}
......@@ -283,6 +294,7 @@ export default {
if (val) {
for (const item of this.customerContactsList) {
if (item.id == val) {
this.form.contactId = item.id
this.form.contactName = item.name
this.form.customerId = item.customerId
this.form.contactPhone = "+" + item.areaCode + item.phoneNew
......@@ -304,8 +316,8 @@ export default {
},
handleFollowType(val) {
console.log(val)
if (val == "2") {
this.$refs["customerFollowSelectOffer"].offerDialogVisible = true
if (val == 2) {
this.CustomerFollowSelectOffer = true
} else {
this.form.offerId = undefined
}
......@@ -321,12 +333,12 @@ export default {
feedback: undefined,
followMethod: undefined,
followTime: new Date().getTime(),
followType: undefined,
followType: this.offerId ? 2 : undefined,
followUserId: this.customerService,
nextPlan: undefined,
nextTime: undefined,
number: undefined,
offerId: undefined,
offerId: this.offerId,
parentId: undefined,
parentNumber: undefined,
purpose: undefined,
......@@ -412,10 +424,11 @@ export default {
},
customerFollowClose() {
this.customerFollow.dialogVisible = false
this.$emit("close")
},
handleView(row) {
this.isView = true
this.form = row
this.isView = this.form.status === 1
this.customerFollow.dialogVisible = true
},
async handleAdd() {
......
<template>
<el-dialog append-to-body :title="$t('报价单')" :visible.sync="offerDialogVisible" :close-on-click-modal="false" width="80%">
<el-dialog append-to-body :title="$t('报价单')" :visible.sync="offerDialogVisible" :close-on-click-modal="false" width="80%" @close="$emit('close')">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
<el-form-item :label="$t('编号')" prop="searchNumber">
<el-input v-model="queryParams.searchNumber" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model="queryParams.searchNumber" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item :label="$t('客户')" prop="searchCustomer">
<el-input v-model="queryParams.searchCustomer" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery"/>
<el-input v-model="queryParams.searchCustomer" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="followUpSalesmanId">
<user-selector v-model="queryParams.followUpSalesmanId" clearable />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t("搜索") }}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{ $t("重置") }}</el-button>
</el-form-item>
</el-form>
<el-table :data="offerList" border size="mini">
<el-table-column align="center" width="80">
<template slot-scope="{row}">
<template slot-scope="{ row }">
<el-radio v-model="offerId" :label="row.offerId">&nbsp;</el-radio>
</template>
</el-table-column>
<el-table-column :label="$t('报价单号')" min-width="160px">
<template slot-scope="{row}">
<el-link type="primary" @click.native="$router.push('/offer/detail?offerId=' + row.offerId)">{{row.number}}</el-link>
<template slot-scope="{ row }">
<el-link type="primary" @click.native="$router.push('/offer/detail?offerId=' + row.offerId)">{{ row.number }}</el-link>
</template>
</el-table-column>
<el-table-column :label="$t('销售阶段')" min-width="120">
<template slot-scope="{row}">
<template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="row.status" />
</template>
</el-table-column>
<el-table-column :label="$t('订单编号')" min-width="150px">
<template slot-scope="{row}">
<el-link type="primary" @click.native="$router.push('/order/detail?orderId=' + row.orderId)">{{row.orderNo}}</el-link>
<template slot-scope="{ row }">
<el-link type="primary" @click.native="$router.push('/order/detail?orderId=' + row.orderId)">{{ row.orderNo }}</el-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户编号')" align="center" min-width="100">
<template slot-scope="{row}">
<el-link type="primary" @click.native="$router.push('/customer/query/' + row.relationId)">{{row.customerNumber}}</el-link>
<template slot-scope="{ row }">
<el-link type="primary" @click.native="$router.push('/customer/query/' + row.relationId)">{{ row.customerNumber }}</el-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="relationName" min-width="100" />
<el-table-column :label="$t('联系方式')">
<template slot-scope="scope">
+{{ scope.row.relationAreaCode }}{{ scope.row.relationPhone }}
</template>
<template slot-scope="scope"> +{{ scope.row.relationAreaCode }}{{ scope.row.relationPhone }} </template>
</el-table-column>
<el-table-column :label="$t('运输方式')">
<template slot-scope="scope" >
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportId" />
</template>
</el-table-column>
<el-table-column :label="$t('渠道')" align="center" min-width="120" prop="channelName">
</el-table-column>
<el-table-column :label="$t('始发地')" align="center" min-width="120" prop="departureName">
</el-table-column>
<el-table-column :label="$t('渠道')" align="center" min-width="120" prop="channelName"> </el-table-column>
<el-table-column :label="$t('始发地')" align="center" min-width="120" prop="departureName"> </el-table-column>
<el-table-column :label="$t('目的地')" align="center" prop="objectiveName" min-width="120" />
<el-table-column :label="$t('预计销售额')" min-width="160">
<template slot-scope="{row}">
<template slot-scope="{ row }">
<div class="" v-for="(item, feeIndex) in row.estCostVO.feeDtoList" :key="feeIndex">
<dict-tag :type="DICT_TYPE.ECW_COST_FEE_TYPE" :value="item.feeType" />
{{item.amount}} {{currencyMap[item.currencyId]}}
{{ item.amount }} {{ currencyMap[item.currencyId] }}
</div>
</template>
</el-table-column>
......@@ -73,18 +69,17 @@
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="offerTotal > 0" :total="offerTotal" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination="getOfferList"/>
<pagination v-show="offerTotal > 0" :total="offerTotal" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getOfferList" />
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirm">{{$t('确 定')}}</el-button>
<el-button type="primary" @click="confirm">{{ $t("确 定") }}</el-button>
</div>
</el-dialog>
</template>
<script>
import { getCurrencyList } from '@/api/ecw/currency';
import { getCurrencyList } from "@/api/ecw/currency"
import { getOfferPage } from "@/api/ecw/offer"
import UserSelector from '@/components/UserSelector'
import UserSelector from "@/components/UserSelector"
export default {
name: "CustomerFollowSelectOffer",
......@@ -104,35 +99,36 @@ export default {
},
offerList: [],
offerTotal: 0,
currencyList: [],
currencyList: []
}
},
created() {
getCurrencyList().then(res => {
getCurrencyList().then((res) => {
this.currencyList = res.data
})
this.getOfferList()
this.offerDialogVisible = true
},
computed:{
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
computed: {
currencyMap() {
let map = {}
this.currencyList.forEach((item) => {
map[item.id] = this.$l(item, "title")
})
return map
},
exportCityList() {
return this.tradeCityList.filter(item => item.type == 2)
return this.tradeCityList.filter((item) => item.type == 2)
},
importCityList() {
return this.tradeCityList.filter(item => item.type == 1)
},
return this.tradeCityList.filter((item) => item.type == 1)
}
},
methods: {
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.queryParams.pageNo = 1
this.getOfferList()
},
/** 重置按钮操作 */
......@@ -141,20 +137,20 @@ export default {
pageNo: 1,
pageSize: 10
}
this.handleQuery();
this.handleQuery()
},
getOfferList() {
getOfferPage({
...this.queryParams,
customerId: this.customerId
}).then(response => {
this.offerList = response.data.list;
this.offerTotal = response.data.total;
});
}).then((response) => {
this.offerList = response.data.list
this.offerTotal = response.data.total
})
},
confirm() {
if (this.offerId) {
this.$emit('select', this.offerId)
this.$emit("select", this.offerId)
this.offerDialogVisible = false
} else {
this.$message.error(this.$t("请选择报价单"))
......@@ -162,4 +158,4 @@ export default {
}
}
}
</script>
\ No newline at end of file
</script>
<template>
<el-dialog
center
:title="$t('修改跟进状态')"
:visible="show"
@close="customerFollowUpdateStatusClose"
width="30%">
<div style="width: 100%;min-height: 60px;text-align: center">
<el-form label-width="120px">
<el-col :span="20">
<el-form-item :label="$t('跟进状态')">
<el-select v-model="status" :placeholder="$t('请选择')" size="small">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)" :key="dict.value"
:label="isChinese ? dict.label : dict.labelEn" :value="parseInt(dict.value)"/>
</el-select>
</el-form-item>
</el-col>
</el-form>
<!-- <el-select clearable v-model="status" :placeholder="$t('请选择')" size="small" >-->
<!-- <el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_FOLLOWUP_STATUS)" :key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value" />-->
<!-- </el-select>-->
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="$emit('update:show',false)">{{ $t('取 消') }}</el-button>
<el-button type="primary" @click="submit">{{ $t('确 定') }}</el-button>
</span>
</el-dialog>
</template>
<script>
import {DICT_TYPE, getDictDatas, getDictDatas2} from "@/utils/dict";
import {getCustomerFollowList, updateCustomerFollowupStatus} from "@/api/ecw/customerFollow";
export default {
name: "customerFollowUpdateStatus",
props: {
show: {
type: Boolean,
default: false
},
followupIds: [Array, String],
tableName: String
},
computed: {
isChinese() {
return this.$i18n.locale === "zh_CN"
},
getFollowupIds() {
console.log(this.followupIds, 'this.followupIds')
if (this.followupIds instanceof Array) return this.followupIds
else return this.followupIds.split(',')
}
},
data() {
return {
getDictDatas,
getDictDatas2,
DICT_TYPE,
status: null
}
},
methods: {
submit() {
if (!this.status) {
return this.$message.warning(this.$t('请选择修改的状态!'));
}
console.log(this.followupIds, 'this.followupIds')
updateCustomerFollowupStatus({
ids: this.getFollowupIds,
status: this.status
}).then(r => {
if (r.code === 0) {
this.$message.success(this.$t('修改成功!'))
this.$emit("refresh")
this.customerFollowUpdateStatusClose()
}
})
},
getCustomerFollowList() {
this.loading = true
getCustomerFollowList({
...this.followForm,
...this.formatQuery()
}).then((r) => {
this.customerFollowList = r.data.list
this.customerFollowTotal = r.data.total
this.loading = false
})
},
customerFollowUpdateStatusClose() {
this.status = null;
this.$emit('update:show', false)
},
}
}
</script>
<style scoped>
</style>
......@@ -234,9 +234,9 @@
<el-input-number v-model="form.weightYearly" :min="1" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="12">
<el-form-item :label="$t('主要竞争对手')" prop="competitorIds">
<el-select clearable v-model="form.competitorIds" :placeholder="$t('请选择')" @change="changeCompetitor">
<el-select filterable clearable v-model="form.competitorIds" :placeholder="$t('请选择')" @change="changeCompetitor">
<el-option v-for="item in competitorList" :key="item.id" :label="item.name" :value="item.id" />
<el-option :label="$t('其他')" :value="0" />
</el-select>
......@@ -1005,7 +1005,6 @@ export default {
this.$refs.bankForm.validate((valid3, err3) => {
console.log(valid3, "valid3", err3)
if (!valid1 || !valid2 || !valid3) {
console.log(333)
this.$showFormValidateErrors({ ...err1, ...err2, ...err3 })
this.showBaseFlag = true
......
This diff is collapsed.
......@@ -21,10 +21,7 @@
:key="dict.value" :label="isChinese ? dict.label : dict.labelEn" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
<el-form-item :label="$t('市场获客')" prop="department">
<dict-selector clearable :type="DICT_TYPE.ECW_CUSTOMER_RESOURCE_TYPE" v-model="queryParams.marketType" formatter="number" @change="handleQuery"></dict-selector>
</el-form-item>
......@@ -58,6 +55,10 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker clearable v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -411,7 +411,7 @@
</div>
<div class="form-section">
<el-form-item :label="$t('竞争对手')" prop="competitor">
<el-select clearable v-model="form.competitor" :placeholder="$t('请选择')" class="w-200" @change="changeCompetitor">
<el-select filterable clearable v-model="form.competitor" :placeholder="$t('请选择')" class="w-200" @change="changeCompetitor">
<el-option v-for="item in competitorList" :key="item.id" :label="item.name" :value="item.name" />
<el-option :label="$t('其他')" :value="0" />
</el-select>
......@@ -1185,6 +1185,8 @@ export default {
formData.stopTime = ""
}
formData.channelId = formData.channelId || null
this.$set(this, "form", formData)
// 接口只返回了发货人和收货人ID,还需要调用接口获取详细信息回显
getCustomerContactsSelect({
......
......@@ -52,10 +52,6 @@
</el-select>
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker v-model="queryTmp.createTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item :label="$t('运输方式')" prop="transportId" v-show="showSearch">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" multiple formatter="number" clearable @change="handleQuery" />
</el-form-item>
......@@ -82,11 +78,14 @@
<el-form-item :label="$t('客户来源')" prop="sourceIds" v-show="showSearch">
<dict-selector :type="DICT_TYPE.CUSTOMER_SOURCE" multiple v-model="queryParams.sourceIds" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('创建时间')">
<el-date-picker v-model="queryTmp.createTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item :label="$t('有效期开始')" v-show="showSearch">
<el-date-picker v-model="queryTmp.startTime" type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd" @change="handleQuery"> </el-date-picker>
<el-date-picker v-model="queryTmp.startTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item :label="$t('有效期结束')" v-show="showSearch">
<el-date-picker v-model="queryTmp.endTime" type="daterange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd" @change="handleQuery"> </el-date-picker>
<el-date-picker v-model="queryTmp.endTime" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item :label="$t('预计结束时间')" v-show="showSearch">
......@@ -180,7 +179,7 @@
<el-dropdown-item @click.native="$router.push('detail?offerId=' + scope.row.offerId)" v-hasPermi="['ecw:offer:show']">{{ $t("详情") }}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('edit?id=' + scope.row.offerId)" v-if="[1, 2, 3, 7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{ $t("编辑") }}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('create?copyId=' + scope.row.offerId)" v-if="[1, 2, 3, 7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{ $t("复制") }}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`logList?offerId=${scope.row.offerId}&customerId=${scope.row.customerId}`)" v-if="[1, 3, 7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:loglist']">{{ $t("跟进") }}</el-dropdown-item>
<el-dropdown-item @click.native="handleAddOffer(scope.row)" v-if="[1, 3, 7].indexOf(scope.row.status) > -1">{{ $t("跟进") }}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)" v-if="[3, 7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:result']">{{ $t("结果") }}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('/offer/special?offerId=' + scope.row.offerId)" v-if="[1, 3, 7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:discount', 'ecw:offer:commission']">{{ $t("特价") }}</el-dropdown-item>
<el-dropdown-item @click.native="cancel(scope.row.offerId)" v-if="[1, 3, 7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:cancel']">{{ $t("取消") }}</el-dropdown-item>
......@@ -193,6 +192,7 @@
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="getList" />
<CustomerFollow ref="customerFollow" @refresh="handleQuery" v-if="customerFollowVisible" @close="customerFollowVisible = false" :customer-id="curData.relationId" :customerService="curData.salesmanId" :customerNumber="curData.customerNumber" :offerId="curData.offerId" />
</div>
</template>
......@@ -205,16 +205,19 @@ import { getTradeCityList } from "@/api/ecw/region"
import { getWarehouseList } from "@/api/ecw/warehouse"
import UserSelector from "@/components/UserSelector"
import Selector from "@/components/Selector"
import Template from "@/views/cms/template/index.vue";
import Template from "@/views/cms/template/index.vue"
import CustomerFollow from "@/views/ecw/customer/components/customerFollow"
export default {
name: "EcwOfferIndex",
components: {
Template,
Selector,
UserSelector
UserSelector,
CustomerFollow
},
data() {
return {
customerFollowVisible: false,
// 遮罩层
loading: true,
// 导出遮罩层
......@@ -259,6 +262,7 @@ export default {
cityList: [],
//目的仓
destWarehouseList: [],
curData: {},
dept: false // 是否部门订单
}
},
......@@ -440,6 +444,14 @@ export default {
}
},
methods: {
handleAddOffer(row) {
console.log(row)
this.curData = row
this.customerFollowVisible = true
this.$nextTick(() => {
this.$refs["customerFollow"].handleAdd()
})
},
init() {
//加载时发起请求获取所有省份值
getRegionList(1, 1)
......
This diff is collapsed.
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="140px">
<el-form-item :label="$t('编号')" prop="orderNo">
<el-input v-model.trim="noParam.value" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(noParam, 'value')">
<template slot="prepend">
......@@ -9,9 +9,14 @@
</template>
</el-input>
</el-form-item>
<el-form-item :label="$t('日期筛选')">
<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="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"></el-date-picker>
<el-form-item :label="$t('发货人')" prop="consignorKey">
<el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consignorKey')" />
</el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consigneeKey')" />
</el-form-item>
<el-form-item :label="$t('控货状态')" prop="isCargoControl">
<dict-selector v-model="queryParams.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" />
</el-form-item>
<div>
<el-form-item :label="$t('始发仓')" prop="startWarehouseIds">
......@@ -54,21 +59,14 @@
</template>
</el-input>
</el-form-item>
<el-form-item :label="$t('控货状态')" prop="isCargoControl">
<dict-selector v-model="queryParams.cargoControlStatusList" multiple :type="DICT_TYPE.CONTROL_GOODS_STATUS" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('订单状态')" prop="statusList" v-show="showSearch">
<dict-selector :type="DICT_TYPE.ORDER_STATUS" multiple v-model="queryParams.statusList" @keyup.enter.native="handleQuery" clearable @change="handleQuery" />
</el-form-item>
<!--<el-form-item :label="$t('提单号')" prop="tidanNo">
<el-input v-model.trim="queryParams.tidanNo" :placeholder="$t('提单号')" clearable @keyup.enter.native="handleQuery" />
</el-form-item>-->
<el-form-item :label="$t('发货人')" prop="consignorKey">
<el-input v-model.trim="queryParams.consignorKey" :placeholder="$t('发货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consignorKey')" />
</el-form-item>
<el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consigneeKey')" />
</el-form-item>
<el-form-item :label="$t('报关方式')" prop="customsTypes">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" multiple v-model="queryParams.customsTypes" clearable @change="handleQuery" />
......@@ -116,12 +114,6 @@
</template>
</el-input>
</el-form-item>
<el-form-item :label="$t('订单限制修改收货人')" prop="isLimitUpdateConsignee">
<el-select v-model="queryParams.isLimitUpdateConsignee" :placeholder="$t('请选择')" clearable @change="handleQuery">
<el-option :label="$t('是')" :value="1"></el-option>
<el-option :label="$t('否')" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('特需')" prop="packageTypeArr" v-show="showSearch">
<el-select v-model="queryParams.packageTypeArr" multiple :placeholder="$t('请选择')" clearable>
<template v-for="item in getDictDatas(DICT_TYPE.ORDER_SPECIAL_NEEDS)">
......@@ -129,6 +121,17 @@
</template>
</el-select>
</el-form-item>
<el-form-item :label="$t('订单限制修改收货人')" prop="isLimitUpdateConsignee">
<el-select v-model="queryParams.isLimitUpdateConsignee" :placeholder="$t('请选择')" clearable @change="handleQuery">
<el-option :label="$t('是')" :value="1"></el-option>
<el-option :label="$t('否')" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('日期筛选')">
<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="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"></el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t("搜索") }}</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading" v-hasPermi="['ecw:cargo:export:search']">{{ $t("导出") }}</el-button>
......
......@@ -165,7 +165,7 @@ import {
warehouseAreaPositionList
} from "@/api/ecw/batchSingleApplication";
import {
applicationGetOrderByProcessId,
applicationGetOrderByProcessId, approvalFeeApplicationGet,
feeApplicationGet,
getOrder,
getOrderPage,
......@@ -229,10 +229,12 @@ export default {
getChannelList().then(r => this.channelList = r.data);
warehouseAreaPositionList().then(r => this.warehouseList = r.data)
if(this.type === 2){
feeApplicationGet({id:this.processId}).then(r => {
// feeApplicationGet({id:this.processId}).then(r => {
approvalFeeApplicationGet({id:this.processId}).then(r => {
if(r.code === 0){
this.processInstanceID = r.data.bpmProcessId;
this.getDetails()
// this.processInstanceID = r.data.bpmProcessId;
// this.getDetails()
this.FeeDetails = r.data
}
})
}else {
......@@ -268,13 +270,13 @@ export default {
});
break;
case 2:
// 费用申请
applicationGetOrderByProcessId({processId:this.processInstanceID}).then(r => {
this.FeeDetails = r.data
console.log(this.FeeDetails,'FeeDetails')
})
break;
// case 2:
// // 费用申请
// applicationGetOrderByProcessId({processId:this.processInstanceID}).then(r => {
// this.FeeDetails = r.data
// console.log(this.FeeDetails,'FeeDetails')
// })
// break;
case 3:
//退仓
warehouseApprovalGetByFormId({formId:this.processInstanceID}).then( res => {
......
This diff is collapsed.
This diff is collapsed.
......@@ -133,7 +133,7 @@
>
<el-button
type="text"
v-if="scope.row.id && scope.row.applicationFee === 0"
v-if="scope.row.id && scope.row.applicationFee === 0 && scope.row.status === 2 && !scope.row.editMode"
@click="deleteByFeeIsZero(scope.row.id)"
>删除
</el-button
......
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
<el-form-item :label="$t('编号')" prop="orderNo">
<el-input v-model.trim="noParam.value" :placeholder="$t('请输入订单号、唛头、提单号')" clearable @input="replaceSpace(noParam, 'value')" @keyup.enter.native="handleQuery">
<template slot="prepend">
......@@ -18,11 +18,10 @@
<el-form-item :label="$t('收货人')" prop="consigneeKey">
<el-input v-model.trim="queryParams.consigneeKey" :placeholder="$t('收货人')" clearable @keyup.enter.native="handleQuery" @input="replaceSpace(queryParams, 'consigneeKey')" />
</el-form-item>
<el-form-item label="">
<dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" :filter="(item) => item.value != 'PickTime'" v-model="dateFilterType" defaultable style="width: 150px; margin-right: 5px" />
<el-date-picker v-model="dateFilter" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable @change="handleQuery" />
</el-form-item>
<div>
<el-form-item :label="$t('始发仓')" prop="startWarehouseIds">
<el-select v-model="queryParams.startWarehouseIds" multiple :placeholder="$t('请选择始发仓')" clearable @change="handleQuery">
......@@ -71,9 +70,6 @@
</el-input>
</el-form-item>
<el-form-item :label="$t('控货')" prop="isCargoControl" v-show="showSearch">
<dict-selector v-model="queryParams.isCargoControl" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" clearable @change="handleQuery" />
</el-form-item>
<el-form-item :label="$t('入仓类型')" prop="warehouseType" v-show="showSearch">
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehouseTypes" multiple clearable @change="handleQuery" />
</el-form-item>
......@@ -151,6 +147,11 @@
</template>
</el-input>
</el-form-item>
<el-form-item label="">
<dict-selector :type="DICT_TYPE.ECW_BEGINTIME_TYPE_ENDTIME" :filter="(item) => item.value != 'PickTime'" v-model="dateFilterType" defaultable style="width: 150px; margin-right: 5px" />
<el-date-picker v-model="dateFilter" type="datetimerange" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" value-format="yyyy-MM-dd HH:mm:ss" @change="handleQuery"> </el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery" :loading="loading">{{ $t("搜索") }}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{ $t("重置") }}</el-button>
......
This diff is collapsed.
This diff is collapsed.
......@@ -234,7 +234,7 @@ import WarehouseAreaSelect from "@/components/WarehouseAreaSelect"
import { getFeeTypeByOrderProduct, getProductBrankPage } from "@/api/ecw/productBrank"
import { cancelProcessInstance } from "@/api/bpm/processInstance"
import { DICT_TYPE, getDictDataLabel, getDictDatas } from "@/utils/dict"
import { orderWarehouseIn, orderWarehouseInUpdateApply, warehousePictureDelete, warehousePictureList, order_warehouse_check_update } from "@/api/ecw/order"
import { orderWarehouseIn, orderWarehouseInUpdateApply, warehousePictureDelete, warehousePictureList, order_warehouse_check_update, order_warehouse_check_query } from "@/api/ecw/order"
import { getProductAttrList } from "@/api/ecw/productAttr"
import { getProductTypeList } from "@/api/ecw/productType"
import { addProduct } from "@/api/ecw/product"
......@@ -446,7 +446,7 @@ export default {
},
methods: {
init() {
async init() {
this.form.brandType = this.warehousing.brandType
this.form.orderId = this.warehousing.orderId
this.form.orderItemId = this.warehousing.orderNo
......@@ -474,13 +474,29 @@ export default {
if (this.form.usageIds.length > 0 && this.form.usageIds[0] === "") {
this.usageIds.splice(0, 1)
}
this.warehousing.orderWarehouseInBackItemDoList.forEach((e) => {
// this.warehousing.orderWarehouseInBackItemDoList.forEach((e) => {
// let bg = {}
// if (e.boxGauge) {
// const boxGauge = e.boxGauge.split("*")
// // e.boxGauge1 = boxGauge[0]
// // e.boxGauge2 = boxGauge[1]
// // e.boxGauge3 = boxGauge[2]
// bg = {
// boxGauge1: boxGauge[0],
// boxGauge2: boxGauge[1],
// boxGauge3: boxGauge[2]
// }
// }
// this.form.table.push({ ...e, ...bg })
// })
let r = await order_warehouse_check_query(this.warehousing.orderItemId)
console.log(r)
r.data.forEach((e) => {
let bg = {}
if (e.boxGauge) {
const boxGauge = e.boxGauge.split("*")
// e.boxGauge1 = boxGauge[0]
// e.boxGauge2 = boxGauge[1]
// e.boxGauge3 = boxGauge[2]
bg = {
boxGauge1: boxGauge[0],
boxGauge2: boxGauge[1],
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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