Commit ff8e0474 authored by 我在何方's avatar 我在何方
parents 1d29e338 dd8f3692
Stack trace:
Frame Function Args
00800000010 0018006401E (001802839A0, 0018026EFD1, 00000000059, 000FFFFB700)
00800000010 0018004973A (00800000010, 00100000000, 00000000000, 00000000001)
00800000010 00180049772 (00000000000, 00000000000, 00000000059, 00180354100)
00800000010 00180070FE9 (00000000000, 000FFFFC7D0, 0000000000B, 00000000000)
00800000010 001800712A0 (00000000003, 000FFFFC8F0, 00180045BCF, 000FFFFC8F0)
00800000010 00180072AB9 (000FFFFC8F0, 00180271795, 001801004A7, 0000000000D)
00800000010 0018005B2A3 (7FF8018B1490, 00000000000, 00000000000, 000FFFFFFFF)
00800000010 0018005C655 (00800029390, 1D400000000, 00000000000, 00000000008)
00800000010 0018005CB3F (000FFFFCCE0, 000FFFFCC45, 00000000000, 205C745C615C635C)
000FFFFCBBC 0018005CF2F (635C655C205C265C, 3E5C205C6F5C685C, 765C655C645C2F5C, 795C745C745C2F5C)
000FFFFCCE0 00180049EE8 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 00180048846 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 001800488F4 (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace
Stack trace:
Frame Function Args
00800000010 0018006401E (001802839A0, 0018026EFD1, 00000000059, 000FFFFB710)
00800000010 0018004973A (00800000010, 00100000000, 00000000000, 00000000001)
00800000010 00180049772 (00000000000, 00000000000, 00000000059, 00180353FD0)
00800000010 00180070FE9 (00000000002, 000FFFFC7E0, 0000000000B, 00000000000)
00800000010 001800712A0 (000FFFFCBC0, 00800000010, 00180045B55, 000FFFFC900)
00800000010 00180072AB9 (000FFFFC900, 00180271795, 001801004A7, 0000000000D)
00800000010 0018005B2A3 (7FF8018B1490, 00000000000, 00000000000, 040FFFFFFFF)
00800000010 0018005C655 (00000000002, 00180350D08, 00000000002, 00000000008)
00800000010 0018005CB3F (000FFFFCC9C, 000FFFFCCE0, 000FFFFCC9D, 000FFFFCC00)
000FFFFCBCC 0018005CF2F (6D5C2D5C6C5C615C, 675C615C6E5C615C, 635C2D5C725C655C, 205C655C725C6F5C)
000FFFFCCE0 00180049EE8 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 00180048846 (00000000000, 00000000000, 00000000000, 00000000000)
000FFFFFFF0 001800488F4 (00000000000, 00000000000, 00000000000, 00000000000)
End of stack trace
......@@ -52,3 +52,28 @@ export function exportFutureBoxExcel(query) {
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) {
})
}
// 取消报价管理
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 {
},
methods:{
handleQuery(){
// this.form.pageNo = 1
this.form.pageNo = 1
this.loadList()
},
loadList(){
......
......@@ -57,7 +57,8 @@ export default {
},
remoteMethod(keyword){
let params = {
pageSize: 100
pageSize: 500,
companyType: this.companyType
}
params.keyword = keyword
this.loading = true
......
......@@ -12,10 +12,20 @@ const i18n = new VueI18n({
}
})
console.log({i18n})
/*
用法
$l('title') => titleZh
$l(item, 'title') => item.titleZh
$l(null, 'title') => titleZh
$l() => Zh
*/
Vue.prototype.$l = (object, field = '') => {
let prefix = i18n.locale.split('_')[0]
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
return object[field + append] || object[field]
......
......@@ -17,7 +17,7 @@ const store = new Vuex.Store({
tagsView,
permission,
settings,
dict
dict,
},
getters
})
......
......@@ -82,6 +82,26 @@ const mutations = {
}
return false
})
},
DEL_LEFT_VIEWS: (state, view) => {
const index = state.visitedViews.findIndex(v => v.path === view.path)
if (index === -1) {
return
}
state.visitedViews = state.visitedViews.filter((item, idx) => {
if (idx >= index || (item.meta && item.meta.affix)) {
return true
}
const i = state.cachedViews.indexOf(item.name)
if (i > -1) {
state.cachedViews.splice(i, 1)
}
if(item.meta.link) {
const fi = state.iframeViews.findIndex(v => v.path === item.path)
state.iframeViews.splice(fi, 1)
}
return false
})
}
}
......@@ -176,6 +196,12 @@ const actions = {
resolve([...state.visitedViews])
})
},
delLeftTags({ commit }, view){
return new Promise(resolve => {
commit('DEL_LEFT_VIEWS', view)
resolve([...state.visitedViews])
})
},
delCurrentView({ dispatch }){
const view = router.history.current
return dispatch('delView', view).then(({visitedViews}) => {
......
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 = {
ECW_RELEASE_STATUS: 'release_status', // 放货状态
ECW_PICK_RECURRENT_NUCLEAR_TYPE: 'PICK_RECURRENT_NUCLEAR_TYPE', // 放货反复核类型
ECW_COST_FEE_TYPE: 'cost_fee_type', // 清单费用类型
ECW_PRICE_AUDIT_STATUS: 'price_audit_status', // 路线价格审核状态
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
......@@ -131,7 +131,7 @@ import {approveTask, getTaskListByProcessInstanceId, rejectTask, updateTaskAssig
import {getDate} from "@/utils/dateUtils";
import {listSimpleUsers} from "@/api/system/user";
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 shippingDetail from '@/views/ecw/box/shippingDetail'
import SplitDetail from '@/views/ecw/order/components/SplitDetail'
......@@ -142,7 +142,7 @@ export default {
name: "ProcessInstanceDetail",
components: {
Parser,
specialDetail,
SpecialDetail,
warehouseDetails,
shippingDetail,
SplitDetail,
......
This diff is collapsed.
......@@ -53,7 +53,7 @@
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button></div>
<div style="flex: 1; text-align: right;">
<router-link :to="'/customerCommissionInfo/'+ 0 ">
<el-button>佣金设置</el-button>
<el-button type="primary">佣金设置</el-button>
</router-link>
</div>
</div>
......@@ -119,7 +119,7 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">编辑</el-button>
<!-- <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)">编辑</el-button>-->
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
......@@ -194,6 +194,9 @@ export default {
},
},
created() {
if(this.$route.query.customerId){
this.queryParams.customerId = this.$route.query.customerId
}
this.getList();
getTradeCityList().then(res => {
this.tradeCityList = res.data
......
<template>
<el-select v-if="options" v-model="selectVal" placeholder="请选择">
<el-option v-if="allShow" label="全部" :value='0'></el-option>
<el-option
v-for="item in options"
:key="item[valueKey]"
......@@ -26,6 +27,10 @@ export default {
type:String,
default: 'value',
},
allShow:{
type:Boolean,
default:false
}
},
data(){
return{
......
<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 @@
</el-form>
<div class="page-title">审批流程</div>
<work-flow xmlkey="sheet_sale" v-model="ccIdArr" />
<div>
<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>
......@@ -116,10 +121,9 @@ export default {
methods: {
handleSubmit(){
this.$refs.form.validate().then(res => {
console.log(this.form.type)
createOfferSpecial(Object.assign({}, this.form, {type: 1})).then(res => {
this.$message.success(this.$t('提交成功'))
this.$emit('success')
})
})
},
......
......@@ -3,14 +3,12 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item :label="$t('编号')" prop="number">
<el-input v-model="queryParams.number" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
<el-form-item :label="$t('编号')" prop="searchNumber">
<el-input v-model="queryParams.searchNumber" :placeholder="$t('请输入报价单号、订单号')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item :label="$t('客户')" prop="orderNo">
<el-input v-model="queryParams.orderNo" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
<el-form-item :label="$t('客户')" prop="searchCustomer">
<el-input v-model="queryParams.searchCustomer" :placeholder="$t('请输入客户')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item :label="$t('创建时间')" prop="orderNo">
......@@ -30,19 +28,17 @@
</el-select>
</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" />
</el-form-item>
<el-form-item :label="$t('商品')" prop="orderNo">
<el-input v-model="queryParams.product" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/>
<!--// TODO -->
<el-form-item :label="$t('商品')" prop="prodTitle">
<el-input v-model="queryParams.prodTitle" :placeholder="$t('请输入商品类型、品名或品牌')" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item :label="$t('控货')" prop="control">
<dict-selector :type="DICT_TYPE.INFRA_BOOLEAN_STRING" v-model="queryParams.control" />
</el-form-item>
<el-form-item :label="$t('客户经理')" prop="orderNo">
<user-selector v-model="queryParams.salesman" />
<!--// TODO -->
<el-form-item :label="$t('客户经理')" prop="followUpSalesmanId">
<user-selector v-model="queryParams.followUpSalesmanId" />
</el-form-item>
<el-form-item :label="$t('销售阶段')" prop="status">
<dict-selector :type="DICT_TYPE.ECW_OFFER_STATUS" v-model="queryParams.status" />
......@@ -121,18 +117,19 @@
4 赢单 删除
5 输单 删除
6 完成 删除
7 跟进中 编辑、跟进、结果、特价、取消、 删除
-->
<el-dropdown>
<el-button icon="el-icon-plus" circle type="primary"></el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item @click.native="$router.push('detail?offerId=' + scope.row.offerId)" >{{$t('详情')}}</el-dropdown-item>
<el-dropdown-item @click.native="$router.push('edit?id=' + scope.row.offerId)" v-if="[1,2,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('/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="$alert('// TODO')" 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="$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('logList?offerId=' + scope.row.offerId)" v-if="[1,3,7].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,7].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,7].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,7].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="deleteOffer(scope.row.offerId)" v-if="[1,2,3,4,5,6,7].indexOf(scope.row.status) > -1" v-hasPermi="['ecw:offer:delete']">{{$t('删除')}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
......@@ -184,7 +181,7 @@
</template>
<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 {getTradeCityList} from '@/api/ecw/region'
import UserSelector from '@/components/UserSelector'
......@@ -342,6 +339,24 @@ export default {
this.$download.excel(response, '${table.classComment}.xls');
this.exportLoading = false;
}).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 @@
:label="$t('操作')">
<template v-slot="{row}">
<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>
</el-table-column>
......@@ -84,6 +84,7 @@
<el-button type="primary">关闭窗口</el-button>
</div> -->
<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>
</div>
</template>
......@@ -97,11 +98,13 @@ import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi'
import {listByIds} from '@/api/ecw/region'
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 {
name: "OfferSpecial",
components: {
specialDiscount
SpecialDiscount, Commossion
},
props: {
offerId: String
......@@ -133,7 +136,8 @@ export default {
objective: null,
departure: null,
channel: null, // 渠道信息
showOfferProdId: null // 显示申请优惠的产品id
showOfferProdId: null, // 显示申请优惠的产品id
showCommissionProdId: null, // 修改佣金规则的产品ID
};
},
watch:{
......
......@@ -139,7 +139,7 @@
<transfer v-if="showTransferOrder" v-bind="showTransferOrder" @close="showTransferOrder=null" />
<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" />
</div>
</template>
......@@ -296,7 +296,7 @@ export default {
this.showFallbackOrder = null
this.handleQuery()
},
onReansferCargoSuccess(){
onTransferCargoSuccess(){
this.showTransferCargoOrderId = null
this.handleQuery()
}
......
......@@ -142,7 +142,13 @@ export default {
},
methods:{
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(){
this.show = false
......
......@@ -24,7 +24,9 @@
<el-table :data="selectedOrders" border>
<el-table-column :label="$t('订单号')">
{{detail.orderNo}}
<template slot-scope="{row}">
{{row.orderNo}}
</template>
</el-table-column>
<el-table-column :label="$t('目的地')">
<template slot-scope="{row}">
......
......@@ -128,15 +128,15 @@
<template v-if="row.charging ==1">
<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 v-else-if="!row.seaFreight && !row.clearanceFreight">未报价</template>
<template v-else>
<div>
{{$t('运费')}}{{row.seaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
{{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
</div>
<div>
{{$t('清关费')}}{{row.clearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
{{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
</div>
</template>
</template>
......
......@@ -93,8 +93,8 @@
<el-card class="mt-10">
<div slot="header" class="card-title">
<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="showBatchImportDialog=true" :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="!canAddProduct">{{$t('批量添加货物')}}</el-button>
</div>
<el-table :data="form.orderItemVOList" border class="product-list">
<el-table-column :label="$t('序号')" width="60px" fixed>
......@@ -111,13 +111,13 @@
}"
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>
</template>
</el-table-column>
<el-table-column :label="$t('英文品名')" width="160px">
<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>
</el-table-column>
<!-- <el-table-column label="商品类型" width="160px">
......@@ -135,33 +135,33 @@
}"
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>
</template>
</el-table-column>
<el-table-column :label="$t('件数')" width="90px">
<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>
</el-table-column>
<el-table-column :label="$t('包装单位')">
<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>
</el-table-column>
<el-table-column :label="$t('数量') + '(个)'" width="120px">
<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>
</el-table-column>
<el-table-column :label="$t('总体积') + '(m³)'" width="100px">
<template slot-scope="{row}">
<el-input v-model="row.volume" :disabled="!form.lineId || !productEditable" />
<el-input v-model="row.volume" :disabled="!canAddProduct || !productEditable" />
</template>
</el-table-column>
<el-table-column :label="$t('总重量') + '(kg)'" width="100px">
<template slot-scope="{row}">
<el-input v-model="row.weight" :disabled="!form.lineId || !productEditable" />
<el-input v-model="row.weight" :disabled="!canAddProduct || !productEditable" />
</template>
</el-table-column>
<el-table-column :label="$t('总货值') + '(RMB)'" width="100px">
......@@ -173,13 +173,13 @@
}"
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>
</template>
</el-table-column>
<el-table-column :label="$t('商品特性')" width="250px">
<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-group>
</template>
......@@ -415,15 +415,12 @@
<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')">
<!--待查询备选数据-->
<el-select placeholder="" v-model="form.airlineCompany">
</el-select>
<supplier-selector v-model="form.airlineCompany" company-type="10" />
</el-form-item>
</div>
<div v-if="[2].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('船公司')">
<el-select placeholder="" v-model="form.shippingCompany">
</el-select>
<supplier-selector v-model="form.shippingCompany" company-type="9" />
</el-form-item>
</div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1">
......@@ -520,14 +517,14 @@ import AreaCodeSelector from '@/components/AreaCodeSelector'
import ChooseContactDialog from '@/components/ChooseContactDialog'
import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {calculationPrice} from '@/api/ecw/product'
import SupplierSelector from '@/components/SupplierSelector'
// 缓存默认的表单数据
let defaultFormData = null
export default {
name: "EcwOrderEdit",
components: {
ProductSelector, Selector, CustomerContactSelector, AreaSelector, FileUpload, AreaCodeSelector, ChooseContactDialog, QuickCreateCustomer
ProductSelector, Selector, CustomerContactSelector, AreaSelector, FileUpload, AreaCodeSelector, ChooseContactDialog, QuickCreateCustomer, SupplierSelector
},
data() {
return {
......@@ -689,6 +686,17 @@ export default {
routeOtherServices(){
if(!this.selectedRouter || !this.selectedRouter.otherService) return []
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:{
......@@ -797,8 +805,13 @@ export default {
let form = new FormData()
form.append('file', e.file)
orderImport(form).then(res => {
if(!this.importList.length){
return this.$message.error('无有效数据')
}
this.importList = res.data.list
this.$set(this.form, 'packingListUrl', res.data.packingListUrl)
})
},
addToProductList(){
......@@ -831,7 +844,7 @@ export default {
this.$set(row, 'link', value)
})
},
onFileChoosed(e){
/* onFileChoosed(e){
window.choosed = e
console.log('onFileChoosed', e)
......@@ -845,7 +858,7 @@ export default {
window.zzexcel = zzexcel
window.tableJson = xlsx.utils.sheet_to_json(zzexcel.Sheets[zzexcel.SheetNames[0]])
}
},
}, */
onProductChange(row, product){
console.log(product)
// row.goodsType = product ? product.typeId : null
......
......@@ -98,7 +98,8 @@
</el-table-column>
<el-table-column :label="$t('体积/重量')" align="center">
<template slot-scope="scope">
<span>{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('运输方式/目的地')" align="center">
......
......@@ -48,7 +48,8 @@
</div>
</template>
<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'
export default {
components: {ImageUpload},
......@@ -69,10 +70,10 @@ export default {
})
},
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('操作成功'))
}).then(res => {
this.$router.back()
this.$store.dispatch('tagsView/delCurrentView')
})
}
}
......
......@@ -36,45 +36,24 @@
</el-form-item>
<el-form-item label="新运费" required style="width: 400px">
<el-input v-model="form.freight" type="number" class="input-with-select">
<el-select v-model="form.freightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
<el-select v-model="form.freightVolume" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
<div slot="prepend" style="width: 60px">{{ currentMap[form.freightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.freightVolume] }}</div>
</el-input>
</el-form-item>
<el-form-item label="新清关费" required style="width: 400px">
<el-input v-model="form.clearanceFreight" type="number" class="input-with-select">
<el-select v-model="form.clearanceFreightCurrency" placeholder="请选择" slot="prepend" style="width: 100px">
<el-option
v-for="item in currencyList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
<el-select v-model="form.clearanceFreightVolume" placeholder="请选择" slot="append" style="width: 100px">
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.titleZh"
:value="item.id">
</el-option>
</el-select>
<div slot="prepend" style="width: 60px">{{ currentMap[form.clearanceFreightCurrency] }}</div>
<div slot="append" style="width: 60px">{{ unitMap[form.clearanceFreightVolume] }}</div>
</el-input>
</el-form-item>
</el-form>
<div >
<h2>审批流程</h2>
<work-flow xmlkey="free_apply" v-model="form.channelId" />
<!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div>
<div v-if="!readonly">
<el-button type="primary" @click="handleSubmit">提交</el-button>
</div>
......@@ -107,6 +86,7 @@ import {getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency'
import { getProductAttrList } from '@/api/ecw/productAttr'
import {openedRouterList} from "@/api/ecw/warehouse"
import WorkFlow from "@/components/WorkFlow"
export default {
name: "specialDiscount",
......@@ -119,7 +99,8 @@ export default {
}
},
components: {
DictSelector
DictSelector,
WorkFlow
},
created() {
// 临时
......@@ -227,6 +208,7 @@ export default {
freightVolume: this.form.freightVolume,
}).then(r => {
this.$message.success(r.msg || '提交成功')
this.$tab.closePage()
})
},
getOrderSpecial(){
......@@ -287,9 +269,4 @@ export default {
</script>
<style scoped lang="scss">
::v-deep .input-with-select {
.el-input-group__prepend, .el-input-group__append {
background-color: #fff;
}
}
</style>
......@@ -67,25 +67,26 @@
<el-descriptions style="margin-top: 20px" :column="4" border>
<el-descriptions-item label="集运仓库">{{ warehouseDetails && warehouseDetails.warehouseOutName ? warehouseDetails.warehouseOutName : '' }}</el-descriptions-item>
<el-descriptions-item label="储位">
<div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName ? item.warehouseName : ''}}</div><div>{{item.warehouseName ? item.regionName :''}} 区</div></div>
<div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName ? item.warehouseName : ''}}</div><div>{{item.warehouseName ? item.regionName :''}} 区</div> <div>{{item.code}}</div></div>
</el-descriptions-item>
<el-descriptions-item v-if="type == 2" label="选择储位">
<div @click="areaVisible = true" style="color: #0a84ff;cursor: pointer;">选择储位</div>
</el-descriptions-item>
<el-descriptions-item label="调拨目标仓">{{ warehouseDetails && warehouseDetails.warehouseInName ? warehouseDetails.warehouseInName : '' }}</el-descriptions-item>
<el-descriptions-item label="物流公司">
<el-select v-model="params.logisticsCompany" >
<el-select :disabled="type == 2" v-model="params.logisticsCompany" >
<el-option v-for="(item,index) in expressList " :key="index" :value="item.id" :label="item.companyZh"></el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item label="物流单号">
<el-input v-model="params.logisticsNo"></el-input>
<el-input :disabled="type == 2" v-model="params.logisticsNo"></el-input>
</el-descriptions-item>
<el-descriptions-item label="联系电话">
<el-input v-model="params.phone"></el-input>
<el-input :disabled="type == 2" v-model="params.phone"></el-input>
</el-descriptions-item>
<el-descriptions-item label="出仓日期" >
<el-date-picker
:disabled="type == 2"
value-format="yyyy-MM-dd HH:mm:ss"
v-model="params.deliveryDate"
type="date"
......@@ -276,15 +277,27 @@ export default {
if(item.wareId === itemm.id){
itemm.children.forEach(itemmm => {
if(itemmm.id === item.areaId){
if(itemmm.positionList.length > 0){
itemmm.positionList.forEach(ic =>{
if(ic.children.length > 0){
ic.children.forEach(icc => {
if(icc.id === item.locationId){
obj.push({
warehouseName:itemm.name,
regionName:itemmm.name
regionName:itemmm.name,
code:icc.code
})
}
})
}
})
}
}
})
}
})
})
console.log(obj)
this.storageSpaceList = obj;
})
}
......@@ -366,6 +379,42 @@ export default {
});
},
},
watch:{
'params.orderLocationCreateReqVOList'(val){
console.log(val,'123')
getByWarehouseId().then(r =>{
console.log(r,'仓库')
let obj = [];
val.forEach(item => {
r.data.forEach(itemm => {
if(item.wareId === itemm.id){
itemm.children.forEach(itemmm => {
if(itemmm.id === item.areaId){
if(itemmm.positionList.length > 0){
itemmm.positionList.forEach(ic =>{
if(ic.children.length > 0){
ic.children.forEach(icc => {
if(icc.id === item.locationId){
obj.push({
warehouseName:itemm.name,
regionName:itemmm.name,
code:icc.code
})
}
})
}
})
}
}
})
}
})
})
console.log(obj,'obj')
this.storageSpaceList = obj;
})
}
}
}
</script>
......
This diff is collapsed.
......@@ -48,7 +48,10 @@
</el-select>
</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
</el-form-item>
......
......@@ -44,7 +44,7 @@
<el-option v-for="dict in this.getDictDatas('company_type')"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</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 :label="$t('合作类型')" prop="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