Commit 5a884623 authored by dragondean@qq.com's avatar dragondean@qq.com

完善bug和预订舱计划,报价单特价申请等

parent a64ed272
...@@ -52,3 +52,28 @@ export function exportFutureBoxExcel(query) { ...@@ -52,3 +52,28 @@ export function exportFutureBoxExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 根据运输方式ID得到已封柜方数
export function getBoxedVolume(params){
return request({
url: '/ecw/future-box/getBoxedVolume',
method: 'get',
params
})
}
// 根据运输方式ID得到待入仓方数
export function getToBeWareHousedVolume(params){
return request({
url: '/ecw/future-box/getToBeWareHousedVolume',
method: 'get',
params
})
}
// 根据运输方式ID得到已入仓方数
export function getWareHousedVolume(params){
return request({
url: '/ecw/future-box/getWareHousedVolume',
method: 'get',
params
})
}
\ No newline at end of file
...@@ -106,3 +106,21 @@ export function getOfferSpecialByApproveId(approveId) { ...@@ -106,3 +106,21 @@ export function getOfferSpecialByApproveId(approveId) {
}) })
} }
// 取消报价管理
export function cancel(id) {
return request({
url: '/ecw/offer/cancel',
method: 'delete',
params: {id}
})
}
// 恢复取消的报价管理
export function recovery(id) {
return request({
url: '/ecw/offer/recovery',
method: 'delete',
params: {id}
})
}
\ No newline at end of file
...@@ -55,7 +55,7 @@ export default { ...@@ -55,7 +55,7 @@ export default {
}, },
methods:{ methods:{
handleQuery(){ handleQuery(){
// this.form.pageNo = 1 this.form.pageNo = 1
this.loadList() this.loadList()
}, },
loadList(){ loadList(){
......
...@@ -57,7 +57,8 @@ export default { ...@@ -57,7 +57,8 @@ export default {
}, },
remoteMethod(keyword){ remoteMethod(keyword){
let params = { let params = {
pageSize: 100 pageSize: 500,
companyType: this.companyType
} }
params.keyword = keyword params.keyword = keyword
this.loading = true this.loading = true
......
...@@ -12,10 +12,20 @@ const i18n = new VueI18n({ ...@@ -12,10 +12,20 @@ const i18n = new VueI18n({
} }
}) })
console.log({i18n}) console.log({i18n})
/*
用法
$l('title') => titleZh
$l(item, 'title') => item.titleZh
$l(null, 'title') => titleZh
$l() => Zh
*/
Vue.prototype.$l = (object, field = '') => { Vue.prototype.$l = (object, field = '') => {
let prefix = i18n.locale.split('_')[0] let prefix = i18n.locale.split('_')[0]
let append = prefix.charAt(0).toUpperCase() + prefix.toLowerCase().substr(1) let append = prefix.charAt(0).toUpperCase() + prefix.toLowerCase().substr(1)
// 如果object是null则返回字段名 if(typeof object == 'string'){
return object + append
}
// 如果object是null或者字符串则返回字段名
if(!object) return field + append if(!object) return field + append
return object[field + append] || object[field] return object[field + append] || object[field]
......
...@@ -17,7 +17,7 @@ const store = new Vuex.Store({ ...@@ -17,7 +17,7 @@ const store = new Vuex.Store({
tagsView, tagsView,
permission, permission,
settings, settings,
dict dict,
}, },
getters getters
}) })
......
import store from '../store'
export default {
getChannels(){
if(!store.state.cache.channelList){
store.dispatch('cache/getChannelList')
}
return store.state.cache.channelList
}
}
\ No newline at end of file
...@@ -110,6 +110,7 @@ export const DICT_TYPE = { ...@@ -110,6 +110,7 @@ export const DICT_TYPE = {
ECW_RELEASE_STATUS: 'release_status', // 放货状态 ECW_RELEASE_STATUS: 'release_status', // 放货状态
ECW_PICK_RECURRENT_NUCLEAR_TYPE: 'PICK_RECURRENT_NUCLEAR_TYPE', // 放货反复核类型 ECW_PICK_RECURRENT_NUCLEAR_TYPE: 'PICK_RECURRENT_NUCLEAR_TYPE', // 放货反复核类型
ECW_COST_FEE_TYPE: 'cost_fee_type', // 清单费用类型 ECW_COST_FEE_TYPE: 'cost_fee_type', // 清单费用类型
ECW_PRICE_AUDIT_STATUS: 'price_audit_status', // 路线价格审核状态
//--------ecw--------- //--------ecw---------
CUSTOMER_STATUS: 'customer_status', CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source', CUSTOMER_SOURCE: 'customer_source',
......
...@@ -131,7 +131,7 @@ import {approveTask, getTaskListByProcessInstanceId, rejectTask, updateTaskAssig ...@@ -131,7 +131,7 @@ import {approveTask, getTaskListByProcessInstanceId, rejectTask, updateTaskAssig
import {getDate} from "@/utils/dateUtils"; import {getDate} from "@/utils/dateUtils";
import {listSimpleUsers} from "@/api/system/user"; import {listSimpleUsers} from "@/api/system/user";
import {getActivityList} from "@/api/bpm/activity"; import {getActivityList} from "@/api/bpm/activity";
import specialDetail from "@/views/ecw/offer/components/specialDetail" import SpecialDetail from "@/views/ecw/offer/components/SpecialDetail"
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails"; import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
import shippingDetail from '@/views/ecw/box/shippingDetail' import shippingDetail from '@/views/ecw/box/shippingDetail'
import SplitDetail from '@/views/ecw/order/components/SplitDetail' import SplitDetail from '@/views/ecw/order/components/SplitDetail'
...@@ -142,7 +142,7 @@ export default { ...@@ -142,7 +142,7 @@ export default {
name: "ProcessInstanceDetail", name: "ProcessInstanceDetail",
components: { components: {
Parser, Parser,
specialDetail, SpecialDetail,
warehouseDetails, warehouseDetails,
shippingDetail, shippingDetail,
SplitDetail, SplitDetail,
......
This diff is collapsed.
...@@ -194,6 +194,9 @@ export default { ...@@ -194,6 +194,9 @@ export default {
}, },
}, },
created() { created() {
if(this.$route.query.customerId){
this.queryParams.customerId = this.$route.query.customerId
}
this.getList(); this.getList();
getTradeCityList().then(res => { getTradeCityList().then(res => {
this.tradeCityList = res.data this.tradeCityList = res.data
......
<template>
<el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('佣金规则申请')">
<el-form ref="form" :model="form" label-width="80px" :rules="rules">
<el-form-item :label="$t('商品类型')">
<span>{{ getProductAttrNameById(form.productType) }}</span>
</el-form-item>
<el-form-item :label="$t('商品名称')">
<span>{{ form.prodTitleZh }}</span>
</el-form-item>
<el-form-item :label="$t('英文名称')">
<span>{{ form.prodTitleEn }}</span>
</el-form-item>
<el-form-item :label="$t('线路')">
{{ `【${getDictDataLabel(DICT_TYPE.TRANSPORT_TYPE, form.transportId)}】${ getChannelNameById(form.channelId) }从【${form.departureName}】发往【${form.objectiveName}】`}}
</el-form-item>
<el-row v-if="!form.charging">
<el-col :span="12">
<el-form-item :label="$t('运费')">
{{form.orgSeaFreight}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('清关费')">
{{form.orgClearanceFreight}} {{ currentMap[form.orgClearanceFreightCurrency] }} / {{ unitMap[form.orgClearanceFreightVolume] }}
</el-form-item>
</el-col>
</el-row>
<el-form-item :label="$t('全包价')" v-if="form.charging">
{{form.orgSeaFreight}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
</el-form-item>
<el-form-item :label="$t('佣金类型')" prop="commissionType">
<dict-selector :type="DICT_TYPE.COMMISSION_TYPE" v-model="form.commissionType" form-type="radio" />
</el-form-item>
<!-- 明佣或者明佣+暗佣才显示 -->
<el-form-item label="明佣佣金" v-if="form.commissionType == 1 || form.commissionType == 3">
<el-input v-model.number="form.lightCommissionAmount" placeholder="" class="w-100"></el-input>
{{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
</el-form-item>
<!-- 明佣+暗佣才显示 -->
<el-form-item label="暗佣佣金" v-if="form.commissionType == 3">
<el-input v-model.number="form.shadeCommissionAmount" placeholder="" class="w-100"></el-input>
{{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
</el-form-item>
<!-- 无佣金不显示 -->
<div class="pl-50" v-if="form.commissionType != 0">
<div>{{$l(form, 'prodTitle')}}</div>
<!-- 明佣+暗佣显示 -->
<div v-if="form.commissionType == 3">成本价:{{form.orgSeaFreight}} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
<!-- 暗佣显示 -->
<div v-if="form.commissionType == 2">
暗佣:// TODO {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}
<el-link type="primary" @click.native="$router.push('/customer/customerCommission?customerId=' + customerId)">去设置</el-link>
</div>
<div v-if="form.commissionType == 1 || form.commissionType == 3">销售价:{{form.orgSeaFreight + form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
<div v-if="form.commissionType == 3">实际佣金返点:{{form.shadeCommissionAmount + form.lightCommissionAmount }} {{ currentMap[form.orgSeaFreightCurrency] }} / {{ unitMap[form.orgSeaFreightVolume] }}</div>
</div>
</el-form>
<div class="page-title">审批流程</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
<div v-if="!form.applyStatus">
<el-button type="primary" @click="handleSubmit">提交</el-button>
</div>
<div v-else>
<el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + form.formId)">
<dict-tag :type="DICT_TYPE.APPLY_STATUS" :value="form.applyStatus" />
</el-button>
</div>
</el-dialog>
</template>
<script>
import {createOfferSpecial, getOfferSpecial, getOfferSpecialByApproveId} from "@/api/ecw/offer"
import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
import DictSelector from "@/components/DictSelector"
import {getUnitList} from "@/api/ecw/unit"
import {getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency'
import { getProductAttrList } from '@/api/ecw/productAttr'
import WorkFlow from '@/components/WorkFlow'
export default {
name: "Commossion",
props: {
offerProdId: Number,
customerId: Number
},
components: {
DictSelector, WorkFlow
},
created() {
// 查看详情,列表进来的
if(this.offerProdId){
this.getOfferSpecial()
}
getUnitList().then(res => this.unitList = res.data)
getChannelList().then(res => this.channelList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
getProductAttrList().then(res => this.productAttrList = res.data)
},
data() {
return {
getDictDataLabel,
DICT_TYPE,
unitList:[],
channelList:[],
currencyList:[],
productAttrList:[],
ccIdArr: [],
form: {
type: 2
},
rules:{
commissionType : {required: true, message: '请选择佣金类型'},
}
}
},
computed: {
// 根据渠道id显示渠道名
getChannelNameById(){
return channelId => {
const s = this.channelList.find(item => item.channelId == channelId) ?. nameZh
return s ? '' + s + '' : ''
}
},
currentMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
},
unitMap(){
let map = {}
this.unitList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
},
},
watch:{
ccIdArr(){
this.$set(this.form, 'ccIds', this.ccIdArr.join(','))
},
'form.commissionType'(val){
this.$set(this.form, 'lightCommissionAmount', 0)
this.$set(this.form, 'shadeCommissionAmount', 0)
}
},
methods: {
handleSubmit(){
this.$refs.form.validate().then(res => {
// 接口运费不能为空,所以这里提交了运费字段
createOfferSpecial(Object.assign({
clearanceFreight: this.form.orgClearanceFreight,
seaFreight: this.form.orgSeaFreight
}, this.form, {type: 2})).then(res => {
this.$message.success(this.$t('提交成功'))
this.$emit('success')
})
})
},
getOfferSpecial(){
getOfferSpecial(this.offerProdId, {type: 2}).then(r => {
this.form = r.data
})
},
getProductAttrNameById(id){
return this.productAttrList.find(e => e.id === id)?.attrName || ''
},
closeDialog(){
this.$emit('close')
}
}
}
</script>
...@@ -55,9 +55,14 @@ ...@@ -55,9 +55,14 @@
</el-form> </el-form>
<div class="page-title">审批流程</div> <div class="page-title">审批流程</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" /> <work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
<div> <div v-if="!form.applyStatus">
<el-button type="primary" @click="handleSubmit">提交</el-button> <el-button type="primary" @click="handleSubmit">提交</el-button>
</div> </div>
<div v-else>
<el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + form.formId)">
<dict-tag :type="DICT_TYPE.APPLY_STATUS" :value="form.applyStatus" />
</el-button>
</div>
</el-dialog> </el-dialog>
</template> </template>
...@@ -116,10 +121,9 @@ export default { ...@@ -116,10 +121,9 @@ export default {
methods: { methods: {
handleSubmit(){ handleSubmit(){
this.$refs.form.validate().then(res => { this.$refs.form.validate().then(res => {
console.log(this.form.type)
createOfferSpecial(Object.assign({}, this.form, {type: 1})).then(res => { createOfferSpecial(Object.assign({}, this.form, {type: 1})).then(res => {
this.$message.success(this.$t('提交成功')) this.$message.success(this.$t('提交成功'))
this.$emit('success')
}) })
}) })
}, },
......
...@@ -3,14 +3,12 @@ ...@@ -3,14 +3,12 @@
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item :label="$t('编号')" prop="number"> <el-form-item :label="$t('编号')" prop="searchNumber">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.searchNumber" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户')" prop="orderNo"> <el-form-item :label="$t('客户')" prop="searchCustomer">
<el-input v-model="queryParams.orderNo" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.searchCustomer" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
</el-form-item> </el-form-item>
<el-form-item :label="$t('创建时间')" prop="orderNo"> <el-form-item :label="$t('创建时间')" prop="orderNo">
...@@ -30,19 +28,17 @@ ...@@ -30,19 +28,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('运输方式')" prop="orderNo"> <el-form-item :label="$t('运输方式')" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" /> <dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="queryParams.transportId" formatter="number" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('商品')" prop="orderNo"> <el-form-item :label="$t('商品')" prop="prodTitle">
<el-input v-model="queryParams.product" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/> <el-input v-model="queryParams.prodTitle" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
</el-form-item> </el-form-item>
<el-form-item :label="$t('控货')" prop="control"> <el-form-item :label="$t('控货')" prop="control">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.control" /> <dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.control" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('客户经理')" prop="orderNo"> <el-form-item :label="$t('客户经理')" prop="followUpSalesmanId">
<user-selector v-model="queryParams.salesman" /> <user-selector v-model="queryParams.followUpSalesmanId" />
<!--// TODO -->
</el-form-item> </el-form-item>
<el-form-item :label="$t('销售阶段')" prop="status"> <el-form-item :label="$t('销售阶段')" prop="status">
<dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" v-model="queryParams.status" /> <dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" v-model="queryParams.status" />
...@@ -130,9 +126,9 @@ ...@@ -130,9 +126,9 @@
<el-dropdown-item @click.native="$router.push('logList?offerId=' + scope.row.offerId)" v-if="[1,3].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)" v-if="[1,3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('跟进')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)" v-if="[3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push(`result?offerId=${scope.row.offerId}&number=${scope.row.number}`)" v-if="[3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('结果')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('/offer/special?offerId=' + scope.row.offerId)" v-if="[3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-dropdown-item> <el-dropdown-item @click.native="$router.push('/offer/special?offerId=' + scope.row.offerId)" v-if="[3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('特价')}}</el-dropdown-item>
<el-dropdown-item @click.native="$alert('// TODO')" v-if="[1,3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-dropdown-item> <el-dropdown-item @click.native="cancel(scope.row.offerId)" v-if="[1,3].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('取消')}}</el-dropdown-item>
<el-dropdown-item @click.native="$alert('// TODO')" v-if="[0].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-dropdown-item> <el-dropdown-item @click.native="recovery(scope.row.offerId)" v-if="[0].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:update']">{{$t('恢复')}}</el-dropdown-item>
<el-dropdown-item @click.native="$alert('// TODO')" v-if="[1,2,3,4,5,6].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-dropdown-item> <el-dropdown-item @click.native="deleteOffer(scope.row.offerId)" v-if="[1,2,3,4,5,6].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
...@@ -184,7 +180,7 @@ ...@@ -184,7 +180,7 @@
</template> </template>
<script> <script>
import { deleteOffer, getOfferPage, exportOfferExcel } from "@/api/ecw/offer"; import { deleteOffer, getOfferPage, exportOfferExcel,cancel, recovery } from "@/api/ecw/offer";
import { getCurrencyList } from '@/api/ecw/currency'; import { getCurrencyList } from '@/api/ecw/currency';
import {getTradeCityList} from '@/api/ecw/region' import {getTradeCityList} from '@/api/ecw/region'
import UserSelector from '@/components/UserSelector' import UserSelector from '@/components/UserSelector'
...@@ -342,6 +338,24 @@ export default { ...@@ -342,6 +338,24 @@ export default {
this.$download.excel(response, '${table.classComment}.xls'); this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
},
cancel(id){
this.doAction('确定要取消此报价单么?', cancel, id);
},
recovery(id){
this.doAction('确定要恢复此报价单么?', recovery, id);
},
deleteOffer(id){
this.doAction('确定要删除此报价单么?', deleteOffer, id);
},
doAction(tips, action, id){
this.$confirm(tips).then(res => {
return action(id)
})
.then(() => {
this.$message.success('操作成功')
this.handleQuery()
})
} }
} }
}; };
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
:label="$t('操作')"> :label="$t('操作')">
<template v-slot="{row}"> <template v-slot="{row}">
<el-button size="mini" type="text" @click="showOfferProdId=row.offerProdId">{{$t('优惠申请')}}</el-button> <el-button size="mini" type="text" @click="showOfferProdId=row.offerProdId">{{$t('优惠申请')}}</el-button>
<el-button size="mini" type="text" @click="$alert('// TODO')">{{$t('佣金规则')}}</el-button> <el-button size="mini" type="text" @click="showCommissionProdId=row.offerProdId">{{$t('佣金规则')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
...@@ -83,7 +83,8 @@ ...@@ -83,7 +83,8 @@
<el-button type="primary">申请泡货优惠</el-button> <el-button type="primary">申请泡货优惠</el-button>
<el-button type="primary">关闭窗口</el-button> <el-button type="primary">关闭窗口</el-button>
</div> --> </div> -->
<special-discount v-if="showOfferProdId" :offerProdId="showOfferProdId" @close="showOfferProdId=null" @success="onSuccess" /> <special-discount v-if="showOfferProdId" :offerProdId="showOfferProdId" @close="showOfferProdId=null" @success="onSuccess" />
<commossion v-if="showCommissionProdId" :offerProdId="showCommissionProdId" :customer-id="offer.relationId" @close="showCommissionProdId=null" @success="onSuccess" />
</el-card> </el-card>
</div> </div>
</template> </template>
...@@ -97,11 +98,13 @@ import {getProductAttrList} from "@/api/ecw/productAttr" ...@@ -97,11 +98,13 @@ import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi' import { parseTime } from '@/utils/ruoyi'
import {listByIds} from '@/api/ecw/region' import {listByIds} from '@/api/ecw/region'
import {getChannel} from '@/api/ecw/channel' import {getChannel} from '@/api/ecw/channel'
import specialDiscount from '@/views/ecw/offer/components/specialDiscount' import SpecialDiscount from '@/views/ecw/offer/components/SpecialDiscount'
import Commossion from '@/views/ecw/offer/components/Commossion'
export default { export default {
name: "OfferSpecial", name: "OfferSpecial",
components: { components: {
specialDiscount SpecialDiscount, Commossion
}, },
props: { props: {
offerId: String offerId: String
...@@ -133,7 +136,8 @@ export default { ...@@ -133,7 +136,8 @@ export default {
objective: null, objective: null,
departure: null, departure: null,
channel: null, // 渠道信息 channel: null, // 渠道信息
showOfferProdId: null // 显示申请优惠的产品id showOfferProdId: null, // 显示申请优惠的产品id
showCommissionProdId: null, // 修改佣金规则的产品ID
}; };
}, },
watch:{ watch:{
......
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
<transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" /> <transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" />
<release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" @success="onReleaseSuccess" /> <release v-if="showReleaseOrderId" :order-id="showReleaseOrderId" @close="showReleaseOrderId=null" @success="onReleaseSuccess" />
<transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" @success="onReansferCargoSuccess" /> <transfer-cargo v-if="showTransferCargoOrderId" :order-id="showTransferCargoOrderId" @close="showTransferCargoOrderId=null" @success="onTransferCargoSuccess" />
<fallback v-if="showFallbackOrder !== null" :order="showFallbackOrder" @close="showFallbackOrder=null" @success="onFallbackSuccess" :index="null" /> <fallback v-if="showFallbackOrder !== null" :order="showFallbackOrder" @close="showFallbackOrder=null" @success="onFallbackSuccess" :index="null" />
</div> </div>
</template> </template>
...@@ -296,7 +296,7 @@ export default { ...@@ -296,7 +296,7 @@ export default {
this.showFallbackOrder = null this.showFallbackOrder = null
this.handleQuery() this.handleQuery()
}, },
onReansferCargoSuccess(){ onTransferCargoSuccess(){
this.showTransferCargoOrderId = null this.showTransferCargoOrderId = null
this.handleQuery() this.handleQuery()
} }
......
...@@ -142,7 +142,13 @@ export default { ...@@ -142,7 +142,13 @@ export default {
}, },
methods:{ methods:{
loadData(){ loadData(){
getRleaseInfo(this.orderId).then(res => this.detail = res.data) getRleaseInfo(this.orderId).then(res => {
this.detail = res.data
this.$set(this.formData, 'consigneeName', res.data.consigneeName)
this.$set(this.formData, 'consigneeCountryCode', '+' + res.data.consigneeCountryCode)
this.$set(this.formData, 'consigneePhone', res.data.consigneePhone)
this.$set(this.formData, 'consigneeEmail', res.data.consigneeEmail)
})
}, },
closeDialog(){ closeDialog(){
this.show = false this.show = false
......
...@@ -24,7 +24,9 @@ ...@@ -24,7 +24,9 @@
<el-table :data="selectedOrders" border> <el-table :data="selectedOrders" border>
<el-table-column :label="$t('订单号')"> <el-table-column :label="$t('订单号')">
{{detail.orderNo}} <template slot-scope="{row}">
{{row.orderNo}}
</template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('目的地')"> <el-table-column :label="$t('目的地')">
<template slot-scope="{row}"> <template slot-scope="{row}">
......
...@@ -128,15 +128,15 @@ ...@@ -128,15 +128,15 @@
<template v-if="row.charging ==1"> <template v-if="row.charging ==1">
<template v-if="!row.seaFreight">未报价</template> <template v-if="!row.seaFreight">未报价</template>
<template>{{$t('全包价')}} {{row.seaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</template> <template>{{$t('全包价')}} {{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</template>
</template> </template>
<template v-else-if="!row.seaFreight && !row.clearanceFreight">未报价</template> <template v-else-if="!row.seaFreight && !row.clearanceFreight">未报价</template>
<template v-else> <template v-else>
<div> <div>
{{$t('运费')}}{{row.seaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}} {{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</div> </div>
<div> <div>
{{$t('清关费')}}{{row.clearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}} {{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</div> </div>
</template> </template>
</template> </template>
......
...@@ -93,8 +93,8 @@ ...@@ -93,8 +93,8 @@
<el-card class="mt-10"> <el-card class="mt-10">
<div slot="header" class="card-title"> <div slot="header" class="card-title">
<div class="card-name">{{$t('商品信息')}}</div> <div class="card-name">{{$t('商品信息')}}</div>
<el-button type="primary" size="mini" @click="addProduct(null)" :disabled="!form.lineId">{{$t('添加货物')}}</el-button> <el-button type="primary" size="mini" @click="addProduct(null)" :disabled="!canAddProduct">{{$t('添加货物')}}</el-button>
<el-button type="primary" size="mini" @click="showBatchImportDialog=true" :disabled="!form.lineId">{{$t('批量添加货物')}}</el-button> <el-button type="primary" size="mini" @click="showBatchImportDialog=true" :disabled="!canAddProduct">{{$t('批量添加货物')}}</el-button>
</div> </div>
<el-table :data="form.orderItemVOList" border class="product-list"> <el-table :data="form.orderItemVOList" border class="product-list">
<el-table-column :label="$t('序号')" width="60px" fixed> <el-table-column :label="$t('序号')" width="60px" fixed>
...@@ -111,13 +111,13 @@ ...@@ -111,13 +111,13 @@
}" }"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<product-selector v-model="scope.row.prodId" @change="onProductChange(scope.row, $event)" :disabled="!form.lineId || !productEditable" /> <product-selector v-model="scope.row.prodId" @change="onProductChange(scope.row, $event)" :disabled="!canAddProduct || !productEditable" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('英文品名')" width="160px"> <el-table-column :label="$t('英文品名')" width="160px">
<template slot-scope="scope"> <template slot-scope="scope">
<product-selector lang="En" v-model="scope.row.prodId" @change="onProductChange(scope.row, $event)" :disabled="!form.lineId || !productEditable" /> <product-selector lang="En" v-model="scope.row.prodId" @change="onProductChange(scope.row, $event)" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column label="商品类型" width="160px"> <!-- <el-table-column label="商品类型" width="160px">
...@@ -135,33 +135,33 @@ ...@@ -135,33 +135,33 @@
}" }"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<dict-selector v-model="scope.row.brandType" :type="DICT_TYPE.ECW_IS_BRAND" defaultable :disabled="!form.lineId || !productEditable" /> <dict-selector v-model="scope.row.brandType" :type="DICT_TYPE.ECW_IS_BRAND" defaultable :disabled="!canAddProduct || !productEditable" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('件数')" width="90px"> <el-table-column :label="$t('件数')" width="90px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model.number="row.num" :disabled="!form.lineId || !productEditable" /> <el-input v-model.number="row.num" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('包装单位')"> <el-table-column :label="$t('包装单位')">
<template slot-scope="{row}"> <template slot-scope="{row}">
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" defaultable :disabled="!form.lineId || !productEditable" /> <dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" defaultable :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('数量') + '(个)'" width="120px"> <el-table-column :label="$t('数量') + '(个)'" width="120px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.quantity" type="number" :disabled="!form.lineId || !productEditable" /> <el-input v-model="row.quantity" type="number" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总体积') + '(m³)'" width="100px"> <el-table-column :label="$t('总体积') + '(m³)'" width="100px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.volume" :disabled="!form.lineId || !productEditable" /> <el-input v-model="row.volume" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总重量') + '(kg)'" width="100px"> <el-table-column :label="$t('总重量') + '(kg)'" width="100px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model="row.weight" :disabled="!form.lineId || !productEditable" /> <el-input v-model="row.weight" :disabled="!canAddProduct || !productEditable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('总货值') + '(RMB)'" width="100px"> <el-table-column :label="$t('总货值') + '(RMB)'" width="100px">
...@@ -173,13 +173,13 @@ ...@@ -173,13 +173,13 @@
}" }"
class="mb-0 mr-0" class="mb-0 mr-0"
> >
<el-input v-model="scope.row.worth" :disabled="!form.lineId" @input="calculationPrice" /> <el-input v-model="scope.row.worth" :disabled="!canAddProduct" @input="calculationPrice" />
</el-form-item> </el-form-item>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('商品特性')" width="250px"> <el-table-column :label="$t('商品特性')" width="250px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-checkbox-group v-model="row.prodAttrArr" @change="onProductAttrChange(row, $event)" :disabled="!form.lineId || !productEditable"> <el-checkbox-group v-model="row.prodAttrArr" @change="onProductAttrChange(row, $event)" :disabled="!canAddProduct || !productEditable">
<el-checkbox v-for="item in productAttrList" :label="item.id" :key="item.id">{{$l(item, 'attrName')}}</el-checkbox> <el-checkbox v-for="item in productAttrList" :label="item.id" :key="item.id">{{$l(item, 'attrName')}}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</template> </template>
...@@ -415,15 +415,12 @@ ...@@ -415,15 +415,12 @@
<div v-if="[3,4].indexOf(+form.transportId) > -1"> <div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')"> <el-form-item :label="$t('航空公司')">
<!--待查询备选数据--> <supplier-selector v-model="form.airlineCompany" company-type="10" />
<el-select placeholder="" v-model="form.airlineCompany">
</el-select>
</el-form-item> </el-form-item>
</div> </div>
<div v-if="[2].indexOf(+form.transportId) > -1"> <div v-if="[2].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('船公司')"> <el-form-item :label="$t('船公司')">
<el-select placeholder="" v-model="form.shippingCompany"> <supplier-selector v-model="form.shippingCompany" company-type="9" />
</el-select>
</el-form-item> </el-form-item>
</div> </div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1"> <div v-if="[2,3,4].indexOf(+form.transportId) > -1">
...@@ -520,14 +517,14 @@ import AreaCodeSelector from '@/components/AreaCodeSelector' ...@@ -520,14 +517,14 @@ import AreaCodeSelector from '@/components/AreaCodeSelector'
import ChooseContactDialog from '@/components/ChooseContactDialog' import ChooseContactDialog from '@/components/ChooseContactDialog'
import QuickCreateCustomer from '@/components/QuickCreateCustomer' import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {calculationPrice} from '@/api/ecw/product' import {calculationPrice} from '@/api/ecw/product'
import SupplierSelector from '@/components/SupplierSelector'
// 缓存默认的表单数据 // 缓存默认的表单数据
let defaultFormData = null let defaultFormData = null
export default { export default {
name: "EcwOrderEdit", name: "EcwOrderEdit",
components: { components: {
ProductSelector, Selector, CustomerContactSelector, AreaSelector, FileUpload, AreaCodeSelector, ChooseContactDialog, QuickCreateCustomer ProductSelector, Selector, CustomerContactSelector, AreaSelector, FileUpload, AreaCodeSelector, ChooseContactDialog, QuickCreateCustomer, SupplierSelector
}, },
data() { data() {
return { return {
...@@ -689,6 +686,17 @@ export default { ...@@ -689,6 +686,17 @@ export default {
routeOtherServices(){ routeOtherServices(){
if(!this.selectedRouter || !this.selectedRouter.otherService) return [] if(!this.selectedRouter || !this.selectedRouter.otherService) return []
return this.selectedRouter.otherService.split(',') return this.selectedRouter.otherService.split(',')
},
// 是否可以添加商品
canAddProduct(){
if(!this.form.lineId){
return false
}
// 如果是海空联运或者空运专线则必须选择渠道
if(this.transport && this.transport.cssClass == 'channel' && !this.form.channelId ){
return false
}
return true
} }
}, },
watch:{ watch:{
...@@ -797,8 +805,13 @@ export default { ...@@ -797,8 +805,13 @@ export default {
let form = new FormData() let form = new FormData()
form.append('file', e.file) form.append('file', e.file)
orderImport(form).then(res => { orderImport(form).then(res => {
if(!this.importList.length){
return this.$message.error('无有效数据')
}
this.importList = res.data.list this.importList = res.data.list
this.$set(this.form, 'packingListUrl', res.data.packingListUrl) this.$set(this.form, 'packingListUrl', res.data.packingListUrl)
}) })
}, },
addToProductList(){ addToProductList(){
...@@ -831,7 +844,7 @@ export default { ...@@ -831,7 +844,7 @@ export default {
this.$set(row, 'link', value) this.$set(row, 'link', value)
}) })
}, },
onFileChoosed(e){ /* onFileChoosed(e){
window.choosed = e window.choosed = e
console.log('onFileChoosed', e) console.log('onFileChoosed', e)
...@@ -845,7 +858,7 @@ export default { ...@@ -845,7 +858,7 @@ export default {
window.zzexcel = zzexcel window.zzexcel = zzexcel
window.tableJson = xlsx.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[0]]) window.tableJson = xlsx.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[0]])
} }
}, }, */
onProductChange(row, product){ onProductChange(row, product){
console.log(product) console.log(product)
// row.goodsType = product ? product.typeId : null // row.goodsType = product ? product.typeId : null
......
...@@ -48,7 +48,8 @@ ...@@ -48,7 +48,8 @@
</div> </div>
</template> </template>
<script> <script>
import {getOrder, createOrderPickup} from '@/api/ecw/order' import {getOrder} from '@/api/ecw/order'
import {create} from '@/api/ecw/orderPickup'
import ImageUpload from '@/components/ImageUpload' import ImageUpload from '@/components/ImageUpload'
export default { export default {
components: {ImageUpload}, components: {ImageUpload},
...@@ -69,10 +70,10 @@ export default { ...@@ -69,10 +70,10 @@ export default {
}) })
}, },
submit(){ submit(){
createOrderPickup(Object.assign({orderId: this.order.orderNo}, this.form)).then(res => { create(Object.assign({orderId: this.order.orderNo}, this.form)).then(res => {
return this.$alert(res.message || this.$t('操作成功')) return this.$alert(res.message || this.$t('操作成功'))
}).then(res => { }).then(res => {
this.$router.back() this.$store.dispatch('tagsView/delCurrentView')
}) })
} }
} }
......
This diff is collapsed.
...@@ -48,7 +48,10 @@ ...@@ -48,7 +48,10 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('状态')" prop="destCityId" v-if="!$route.query.product_id"> <el-form-item :label="$t('审核状态')" prop="auditStatus">
<dict-selector :type="DICT_TYPE.ECW_PRICE_AUDIT_STATUS" v-model="queryParams.auditStatus" />
</el-form-item>
<el-form-item :label="$t('状态')" prop="status">
// TODO // TODO
</el-form-item> </el-form-item>
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
<el-option v-for="dict in this.getDictDatas('company_type')" <el-option v-for="dict in this.getDictDatas('company_type')"
:key="dict.value" :label="dict.label" :value="dict.value"/> :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select--> </el-select-->
<dict-selector :type="DICT_TYPE.COMPANY_TYPE" v-model="queryParams.companyType" /> <dict-selector :type="DICT_TYPE.ECW_COMPANY_TYPE" v-model="queryParams.companyType" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('合作类型')" prop="cooperationType"> <el-form-item :label="$t('合作类型')" prop="cooperationType">
<dict-selector :type="DICT_TYPE.ECW_COOPERATION_TYPE" v-model="queryParams.cooperationType" /> <dict-selector :type="DICT_TYPE.ECW_COOPERATION_TYPE" v-model="queryParams.cooperationType" />
......
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