Commit 2ed0a026 authored by 我在何方's avatar 我在何方
parents de8ac998 a4dfb922
......@@ -94,16 +94,16 @@ function checkOrTryHttp() {
//==获取LODOP对象主过程,判断是否安装、需否升级:==
function getLodop(oOBJECT, oEMBED) {
var strFontTag = "<br><font color='#FF00FF'>打印控件";
var strLodopInstall = strFontTag + "未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>";
var strLodopUpdate = strFontTag + "需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>";
var strLodop64Install = strFontTag + "未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>";
var strLodop64Update = strFontTag + "需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>";
var strCLodopInstallA = "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>";
var strLodopInstall = strFontTag + "未安装!点击这里<a href='/static/install_lodop32.exe' target='_self'>执行安装</a>";
var strLodopUpdate = strFontTag + "需要升级!点击这里<a href='/static/install_lodop32.exe' target='_self'>执行升级</a>";
var strLodop64Install = strFontTag + "未安装!点击这里<a href='/static/install_lodop64.exe' target='_self'>执行安装</a>";
var strLodop64Update = strFontTag + "需要升级!点击这里<a href='/static/install_lodop64.exe' target='_self'>执行升级</a>";
var strCLodopInstallA = "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='/static/CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>";
var strCLodopInstallB = "<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)";
var strCLodopUpdate = "<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strCLodopUpdate = "<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='/static/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strLodop7FontTag = "<br><font color='#FF00FF'>Web打印服务Lodop7";
var strLodop7HrefX86 = "点击这里<a href='Lodop7_Linux_X86_64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
var strLodop7HrefARM = "点击这里<a href='Lodop7_Linux_ARM64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
var strLodop7HrefX86 = "点击这里<a href='/static/Lodop7_Linux_X86_64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
var strLodop7HrefARM = "点击这里<a href='/static/Lodop7_Linux_ARM64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
var strLodop7Install_X86 = strLodop7FontTag + "未安装启动," + strLodop7HrefX86;
var strLodop7Install_ARM = strLodop7FontTag + "未安装启动," + strLodop7HrefARM;
var strLodop7Update_X86 = strLodop7FontTag + "需升级," + strLodop7HrefX86;
......
......@@ -4,7 +4,7 @@
<el-descriptions-item label="唛头">{{ order.marks }}</el-descriptions-item>
<el-descriptions-item label="已到箱数/总箱数">{{ order.sumNum }}/{{ order.costVO.totalNum }}</el-descriptions-item>
<el-descriptions-item label="订单状态"><dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" :class="{red: order.status === 1, green: order.status === 5 || order.status === 2}" /></el-descriptions-item>
<el-descriptions-item label="送货时间">{{ order.consigneeVO && order.consigneeVO.deliveryDate || '' }}</el-descriptions-item>
<el-descriptions-item label="送货时间">{{ order.deliveryDate || '' }}</el-descriptions-item>
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag>
</el-descriptions-item>
......@@ -12,10 +12,10 @@
<el-descriptions-item label="目的地">{{ order.logisticsInfoDto.destTitleZh || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{ order.consignorVO && order.consignorVO.name || ''}}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{ order.consignorVO && order.consignorVO.company || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{ order.consignorVO && order.consignorVO.phone || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{ order.consignorVO && (order.consignorVO.countryCode + order.consignorVO.phone) || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{ order.consigneeVO && order.consigneeVO.name || ''}}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{ order.consigneeVO && order.consigneeVO.company || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{ order.consigneeVO && order.consigneeVO.phone || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{ order.consigneeVO &&(order.consigneeVO.countryCode + order.consigneeVO.phone) || '' }}</el-descriptions-item>
<el-descriptions-item label="入仓类型">{{ getDictDataLabel(DICT_TYPE.ECW_WAREHOUSING_TYPE, order.warehouseType) }}</el-descriptions-item>
<el-descriptions-item label="订单号">{{ order.orderNo }}</el-descriptions-item>
</el-descriptions>
......
......@@ -54,7 +54,9 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
route.meta = {
title: route.name,
titleEn: route.nameEn,
icon: route.icon
icon: route.icon,
noCache: !route.keepalive, // 不缓存,如果需要缓存则需要组件名称能对应上
componentPath: route.component
}
route.hidden = typeof route.isShowInMenuBar != 'undefined' && (route.isShowInMenuBar == 'false' || !route.isShowInMenuBar)
// 处理 component 属性
......
import router from '@/router'
window.router = router
const state = {
visitedViews: [],
cachedViews: []
......@@ -15,9 +15,10 @@ const mutations = {
)
},
ADD_CACHED_VIEW: (state, view) => {
if (state.cachedViews.includes(view.name)) return
if (view.meta && !view.meta.noCache) {
state.cachedViews.push(view.name)
if (view.meta && view.meta.componentPath) {
let cacheName = view.meta.componentPath.split('/').map(item => item.substring(0, 1).toUpperCase() + item.substring(1).toLowerCase()).join('')
if (state.cachedViews.includes(cacheName)) return
state.cachedViews.push(cacheName)
}
},
......
......@@ -10,7 +10,6 @@ import { getLocale } from '@/utils/db';
// 是否显示重新登录
export let isRelogin = { show: false };
axios.defaults.headers['locale'] = getLocale()
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
......@@ -21,6 +20,7 @@ const service = axios.create({
})
// request拦截器
service.interceptors.request.use(config => {
config.headers['locale'] = getLocale()
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
if (getToken() && !isToken) {
......
......@@ -4,7 +4,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px" inline>
<el-card>
<div slot="header" class="card-title">{{$t('新建报价单')}}</div>
<el-form-item :label="$t('所属人')">
<el-form-item :label="$t('所属人')" prop="relation">
<el-radio-group v-model="form.relation">
<el-radio label="1">{{$t('发件人')}}</el-radio>
<el-radio label="2">{{$t('收件人')}}</el-radio>
......@@ -222,15 +222,15 @@
<el-table-column :label="$t('运费')" width="200px">
<template slot-scope="{row}">
<template v-if="row.fee && row.fee.charging == 1">
<template v-if="!row.fee.freight">{{$t('未报价')}}</template>
<template v-if="!row.fee.oneFreight">{{$t('未报价')}}</template>
<template v-else>
{{$t('全包价')}}{{row.fee.freight}} {{currencyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
{{$t('全包价')}}{{row.fee.oneFreight}} {{currencyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
</template>
</template>
<template v-else-if="!row.fee || !row.fee.freight && !row.fee.clearanceFee">{{$t('未报价')}}</template>
<template v-else-if="!row.fee || !row.fee.oneFreight && !row.fee.oneClearanceFee">{{$t('未报价')}}</template>
<template v-else-if="row.fee">
<div>
{{$t('运费')}}{{row.fee.freight}} {{currencyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
{{$t('运费')}}{{row.fee.oneFreight}} {{currencyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
</div>
<div>
{{$t('清关费')}}{{row.fee.oneClearanceFee}} {{currencyMap[row.fee.clearanceFeeCurrency]}} / {{unitMap[row.fee.clearanceFeeVolume]}}
......@@ -424,41 +424,41 @@
<el-input v-model="form.number" :placeholder="$t('请输入购买商品的快递单号')"></el-input>
</el-form-item> -->
<el-form-item :label="$t('是否双清')" v-if="[2,3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
<dict-selector v-model="form.transportVO.doubleClear" form-type="radio" :type="DICT_TYPE.ECW_DOUBLE_CLEAR" />
</el-form-item>
<el-form-item :label="$t('航空公司')" v-if="[3,4].indexOf(+form.transportId) > -1">
<!--待查询备选数据-->
<!-- <el-select placeholder="" v-model="form.airlineCompany">
</el-select> -->
<supplier-selector v-model="form.airlineCompany" companyType="10" />
<supplier-selector v-model="form.transportVO.airlineCompany" companyType="10" />
</el-form-item>
<el-form-item :label="$t('船公司')" v-if="[2].indexOf(+form.transportId) > -1">
<!-- <el-select placeholder="" v-model="form.shippingCompany">
</el-select> -->
<supplier-selector v-model="form.shippingCompany" companyType="9" />
<supplier-selector v-model="form.transportVO.shippingCompany" companyType="9" />
</el-form-item>
<el-form-item :label="$t('清关证书')" v-if="[2,3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<dict-selector v-model="form.transportVO.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item :label="$t('清关证书备注')" v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-input v-model="form.remarks" ></el-input>
<el-input v-model="form.transportVO.remarks" ></el-input>
</el-form-item>
<el-form-item :label="$t('是否拆包')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<dict-selector v-model="form.transportVO.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
</el-form-item>
<el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<dict-selector v-model="form.transportVO.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" fomatter="bool" />
<span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span>
</el-form-item>
<br/>
<el-form-item :label="$t('特殊要求')" >
<dict-selector v-model="form.packageType" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple />
<dict-selector v-model="form.transportVO.packageType" form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple />
</el-form-item>
<br/>
<el-form-item :label="$t('特殊要求备注')">
<el-input v-model="form.packageRemarks" ></el-input>
<el-input v-model="form.transportVO.packageRemarks" ></el-input>
</el-form-item>
</el-card>
......@@ -493,7 +493,7 @@ import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts'
export default {
name: "OfferEdit",
name: "EcwOfferEdit",
components: {
ProductSelector, Selector, SupplierSelector,ChooseContactDialog, QuickCreateCustomer
},
......@@ -519,6 +519,7 @@ export default {
type: [],
isCargoControl: false,
prodCreateReqVOList:[],
transportVO: {}
},
// 表单校验
rules: {
......@@ -529,7 +530,10 @@ export default {
endTime: [{ required: true, message: "有效期结束时间不能为空"}],
transportId: [{ required: true, message: "选择运输方式"}],
channelId: [{ required: true, message: "选择出货渠道"}],
stopTime: [{ required: true, message: "不能为空"}]
stopTime: [{ required: true, message: "不能为空"}],
relation: [{ required: true, message: "请选择所属人"}],
control: [{ required: true, message: "请选择是否控货"}],
importance: [{ required: true, message: "请选择重要成都"}]
/*sendstatus: [{ required: true, message: "站内信状态,0未发送,1已发送不能为空", trigger: "blur" }], */
},
labelStyle: 'width:120px',
......@@ -856,7 +860,7 @@ export default {
// 修改的提交
if (this.form.offerId != null) {
let data = Object.assign({}, this.form, {
transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
// transportUpdateReqVOList: this.transportList.filter(item => item._enabled),
prodUpdateReqVOList: this.getProductListWithDefaultValue()
})
updateOffer(data).then(response => {
......@@ -866,7 +870,7 @@ export default {
return;
}
let data = Object.assign({}, this.form, {
transportCreateReqVOList: this.transportList.filter(item => item._enabled),
// transportCreateReqVOList: this.transportList.filter(item => item._enabled),
prodCreateReqVOList: this.getProductListWithDefaultValue()
})
// 添加的提交
......
......@@ -51,8 +51,7 @@
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportId" />
</template>
</el-table-column>
<el-table-column :label="$t('业务员')" align="left" prop="creatorName">
</el-table-column>
<el-table-column :label="$t('预计销售额')" align="left" prop="estCost">
<template slot-scope="{row}">
......@@ -62,7 +61,8 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$t('客户经理')" align="left" prop="creatorName">
</el-table-column>
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<template v-if="[1,2].indexOf(scope.row.status) > -1">
......
......@@ -57,7 +57,9 @@ export default {
"warehousingType": undefined
},
// 表单校验
rules: {}
rules: {
warehousingType: {required: true, message: '请选择入仓类型'}
}
};
},
computed: {
......
<template>
<div class="app-container">
<el-card>
<div slot="header" class="card-title">申请特价</div>
<!-- 列表 -->
<div slot="header" class="card-title">{{$t('申请特价')}}</div>
<div class="offer-header">
<span style="font-size: 15px;">订单号:{{ offer.number }}</span>
<el-descriptions>
<el-descriptions-item :label="$t('报价单号')">{{offer.number}}</el-descriptions-item>
<el-descriptions-item :label="$t('始发地')">{{$l(departure, 'title')}}</el-descriptions-item>
<el-descriptions-item :label="$t('目的地')">{{$l(objective, 'title')}}</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="offer.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('出货渠道')">
// TODO
</el-descriptions-item>
<el-descriptions-item :label="$t('创建时间')">{{offer.createTime}}</el-descriptions-item>
<el-descriptions-item :label="$t('状态')">
<dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="offer.status" />
</el-descriptions-item>
</el-descriptions>
</div>
<el-table v-loading="loading" :data="offer.offerProdRespVOList">
<el-table-column label="序号" align="center" prop="id" type="index"></el-table-column>
<el-table-column :label="$t('序号')" align="center" prop="id" type="index"></el-table-column>
<el-table-column
prop="prodTitleZh"
label="品名">
:label="$t('品名')">
<template v-slot="{row}">
{{ row.prodTitleZh }}/{{ row.prodTitleEn }}
</template>
</el-table-column>
<el-table-column
prop="prodAttrIds"
label="填单货物属性">
:label="$t('品牌')">
<template v-slot="{row}">
{{ getProductNamesByIds(row.prodAttrIds) }}
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brand"></dict-tag>
</template>
</el-table-column>
<el-table-column
prop="address"
label="入库货物属性">
:label="$t('件数')" prop="num"></el-table-column>
<el-table-column
:label="$t('包装')">
<template v-slot="{row}">
品牌:{{ row.brand ? '' : '' }}<br>
箱数:{{ row.num }}<br>
体积:{{ row.volume }}<br>
重量:{{ row.weight }}Kg
<dict-tag :value="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" />
</template>
</el-table-column>
<el-table-column
prop="updateTime"
:formatter="(_, __, v) => parseTime(v)"
label="最后操作时间">
</el-table-column>
<el-table-column
label="原价">
:label="$t('原价')">
<template v-slot="{row}">
运费:{{ row.originalSeaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
运费:{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.originalClearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
清关费:{{ row.originalClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</el-table-column>
<el-table-column
prop="address"
label="成本价">
<template v-slot="{row}">
运费:{{ row.seaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
运费:{{ row.seaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
清关费:{{ row.clearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</el-table-column>
<el-table-column
prop="address"
label="销售价">
<template v-slot="{row}">
运费:{{ row.seaFreight }} {{ currentMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
运费:{{ row.seaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
<br>
清关费:{{ row.clearanceFreight }} {{ currentMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
清关费:{{ row.clearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
</template>
</el-table-column>
<el-table-column
prop="status"
:formatter="(v) => ['取消报价', '特价审批中', '需求确认(草稿)', '跟进中', '赢单', '输单', '报价完成', '审批通过', '审批拒绝'][v.status]"
label="审核状态">
</el-table-column>
<el-table-column
prop="address"
label="操作">
:label="$t('操作')">
<template v-slot="{row}">
<el-button size="mini" type="text" v-hasPermi="['ecw:offer:update']" @click="$router.push(`/offer/discount/${row.offerProdId}?offerId=${row.offerId}`)">优惠申请</el-button>
<!-- <el-button size="mini" type="text" v-hasPermi="['ecw:offer:update']">佣金规则</el-button>-->
<!-- <el-button size="mini" type="text" v-hasPermi="['ecw:offer:update']">管理折扣</el-button>-->
<el-button size="mini" type="text" @click="$router.push(`/offer/discount/${row.offerProdId}?offerId=${row.offerId}`)">{{$t('优惠申请')}}</el-button>
<el-button size="mini" type="text" @click="$alert('// TODO')">{{$t('佣金规则')}}</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 80px">
<!-- <div style="text-align: center;margin-top: 80px">
<el-button type="primary">申请重货优惠</el-button>
<el-button type="primary">申请泡货优惠</el-button>
<el-button type="primary">关闭窗口</el-button>
</div>
</div> -->
</el-card>
</div>
</template>
......@@ -97,6 +95,7 @@ import {getUnitList} from "@/api/ecw/unit"
import {getCurrencyList} from "@/api/ecw/currency"
import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi'
import {listByIds} from '@/api/ecw/region'
export default {
name: "OfferSpecial",
components: {
......@@ -128,13 +127,15 @@ export default {
unitList:[],
currencyList:[],
productAttrList:[],
objective: null,
departure: null
};
},
watch:{
},
created() {
if(this.offerId){
this.params.offerId = this.offerId
this.getOffer()
}
this.getOffer()
getUnitList().then(res => this.unitList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
getProductAttrList().then(res => this.productAttrList = res.data)
......@@ -142,9 +143,16 @@ export default {
methods: {
getOffer(){
this.loading = true
getOffer(this.offerId).then(response => {
getOffer(this.offerId || this.params.offerId).then(response => {
this.loading = false
this.offer = response.data
this.getCity()
})
},
getCity(){
listByIds({ids: [this.offer.objectiveId, this.offer.departureId].join(',')}).then(res => {
this.objective = res.data.find(item => item.id == this.offer.objectiveId)
this.departure = res.data.find(item => item.id == this.offer.departureId)
})
},
getProductNamesByIds(ids){
......@@ -160,7 +168,7 @@ export default {
}
},
computed: {
currentMap(){
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = item.titleZh
......
......@@ -87,7 +87,7 @@
<el-tabs v-model="activeName">
<el-tab-pane :label="$t('货物详情')" name="first">
<el-table :data="order.orderItemVOList" border style="width: 100%">
<el-table-column prop="prodTitleZh" :label="$t('序号')" width="90px">
<el-table-column :label="$t('序号')" width="90px">
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column prop="prodTitleZh" :label="$t('中文品名')" />
......@@ -98,7 +98,11 @@
</template>
</el-table-column>
<el-table-column prop="num" :label="$t('填单件数')" width="90px"/>
<el-table-column prop="sumNum" :label="$t('入仓件数')" width="90px"/>
<el-table-column prop="sumNum" :label="$t('入仓件数')" width="90px">
<template slot-scope="{row}">
{{row.warehouseInInfoVO ? row.warehouseInInfoVO.cartonsNum : 0}}
</template>
</el-table-column>
<el-table-column prop="unit" :label="$t('单位')" width="90px">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PACKAGE_TYPE" :value="row.unit" />
......@@ -116,7 +120,7 @@
<el-table-column prop="quantity" :label="$t('数量') + '(个)'" width="90px"/>
<el-table-column prop="" :label="$t('费用类型')">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.FEE_TYPE" :value="row.feeType" />
<dict-tag :type="DICT_TYPE.ECW_PAY_ADVANCE" :value="row.isPayAdvance" />
</template>
</el-table-column>
<el-table-column prop="" :label="$t('成交单价')" width="220px">
......
......@@ -111,13 +111,13 @@
}"
class="mb-0 mr-0"
>
<product-selector v-model="scope.row.prodId" @change="onProductChange(row, $event)" :disabled="!form.lineId || !productEditable" />
<product-selector v-model="scope.row.prodId" @change="onProductChange(scope.row, $event)" :disabled="!form.lineId || !productEditable" />
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('英文品名')" width="160px">
<template slot-scope="{row}">
<product-selector lang="En" v-model="row.prodId" @change="onProductChange(row, $event)" :disabled="!form.lineId || !productEditable" />
<template slot-scope="scope">
<product-selector lang="En" v-model="scope.row.prodId" @change="onProductChange(scope.row, $event)" :disabled="!form.lineId || !productEditable" />
</template>
</el-table-column>
<!-- <el-table-column label="商品类型" width="160px">
......@@ -173,7 +173,7 @@
}"
class="mb-0 mr-0"
>
<el-input v-model="scope.row.worth" :disabled="!form.lineId" />
<el-input v-model="scope.row.worth" :disabled="!form.lineId" @input="calculationPrice" />
</el-form-item>
</template>
</el-table-column>
......@@ -198,16 +198,17 @@
</el-button>
</template>
</el-table-column>
<el-table-column :label="$t('操作')" width="80px" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="delProduct(scope.$index)">{{$t('删除')}}</el-button>
</template>
</el-table-column>
<el-table-column :label="$t('快递单号')" width="100px">
<template slot-scope="{row}">
<el-input v-model="row.expressNo" placeholder="" />
</template>
</el-table-column>
<el-table-column :label="$t('操作')" width="80px" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="delProduct(scope.$index)">{{$t('删除')}}</el-button>
</template>
</el-table-column>
</el-table>
<!--
</el-card>
......@@ -510,8 +511,11 @@ import FileUpload from '@/components/FileUpload'
import AreaCodeSelector from '@/components/AreaCodeSelector'
import ChooseContactDialog from '@/components/ChooseContactDialog'
import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {calculationPrice} from '@/api/ecw/product'
export default {
name: "OrderEdit",
name: "EcwOrderEdit",
components: {
ProductSelector, Selector, CustomerContactSelector, AreaSelector, FileUpload, AreaCodeSelector, ChooseContactDialog, QuickCreateCustomer
},
......@@ -695,17 +699,6 @@ export default {
this.$set(this.form, 'departureId', router.startCityId)
this.$set(this.form, 'objectiveId', router.destCityId)
},
/* 'form.orderItemVOList':{
deep: true,
handler(){
this.form.orderItemVOList.map(item => {
item.prodAttrIds = item.prodAttrArr.join(',')
})
}
}, */
fee(){
this.getCoupons()
},
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter(val){
if(!val) return
......@@ -717,12 +710,36 @@ export default {
}
},
activated(){
if(this.$route.query.id != this.form.id){
this.getOrder()
}
},
created() {
this.couponTypeList = this.getDictDatas(this.DICT_TYPE.ECW_COUPON_TYPE)
this.couponTypeList.forEach(item => {
this.$set(this.selectedCoupons, item.value, null)
})
if(this.$route.query.id){
this.getOrder()
}else this.addProduct()
getProductAttrList().then(res => this.productAttrList = res.data)
getChannelList().then(res => this.channelList = res.data)
getTradeCityList().then(res => this.tradeCityList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data)
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => {
this.customDraweeList.push({
label: item.label, // 显示文字
name: item.value, // key值
value: 2 // 1 发货人,2收货人,默认收货人,可修改
})
})
},
methods: {
getOrder(){
getOrderDetail(this.$route.query.id).then(res => {
this.form = res.data
......@@ -746,23 +763,7 @@ export default {
this.$set(this.form, 'consigneeName', res.data.consigneeVO.name)
this.$set(this.form, 'consigneePhone', res.data.consigneeVO.phone)
})
}else this.addProduct()
getProductAttrList().then(res => this.productAttrList = res.data)
getChannelList().then(res => this.channelList = res.data)
getTradeCityList().then(res => this.tradeCityList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data)
this.transportList = this.getDictDatas(this.DICT_TYPE.ECW_TRANSPORT_TYPE)
this.getDictDatas(this.DICT_TYPE.ECW_CUSTOM_DRAWEE).forEach(item => {
this.customDraweeList.push({
label: item.label, // 显示文字
name: item.value, // key值
value: 2 // 1 发货人,2收货人,默认收货人,可修改
})
})
},
methods: {
},
onContactChoose(contact){
console.log('选择联系人', contact)
if(!this.contactChooseType && !this.quickCreateType) return
......@@ -835,7 +836,7 @@ export default {
},
onProductChange(row, product){
console.log(product)
row.goodsType = product ? product.typeId : null
// row.goodsType = product ? product.typeId : null
row.prodAttrArr = !product ? [] : product.attrId.split(',').filter(item => item !== '').map(item => +item)
},
onAreaChange(type, val){
......@@ -938,6 +939,28 @@ export default {
});
});
},
// 计算商品运费(根据货值计算保费)
calculationPrice(){
let calcable = true
if(!this.form.orderItemVOList.length) return false
this.form.orderItemVOList.forEach(item => {
if(!item.prodId){
calcable = false
}
})
if(this.calculating || !calcable) return false
this.calculating = true
calculationPrice({
lineId: this.form.lineId,
transportId: this.form.transportId,
channelId: this.form.channelId,
prodConditionParamList: this.getProductListWithDefaultValue()
}).then(res => {
this.$set(this, 'fee', res.data.costDto)
}).finally(() => {
this.calculating = false
})
},
// 体积。件数,数量,重量为选填,但是接口确实必填,所以生成一个副本并赋予默认值
getProductListWithDefaultValue(){
let arr = []
......
......@@ -499,13 +499,11 @@ export default {
}
},
deleteSpecial(id,orderId){
orderSpecialNeed({orderId:orderId,advanceType:id}).then(
r =>{
if(r.code === 0){
this.getList()
}
}
)
this.$confirm(this.$t('确定删除此特需么?')).then(res => {
return orderSpecialNeed({orderId:orderId,advanceType:id})
}).then(() => {
this.getList()
})
},
onBatchClose(){
this.showBatchPickup = false
......
......@@ -21,14 +21,21 @@
<el-table-column
prop="prodTitleZh"
label="品名">
<template v-slot="{row}">
{{ row.prodTitleZh }}<br>
{{ row.prodTitleEn }}
</template>
</el-table-column>
<el-table-column
label="填单货物属性">
<template v-slot="{row}">
品牌:{{ ['无牌', '有牌', '中性'][row.brandType] }}<br>
箱数:{{ row.num }}<br>
体积:{{ row.volume }}<br>
重量:{{ row.weight }}Kg
<span v-if="row.isWarehouseInAdd">非填单货物信息</span>
<template v-else>
品牌:{{ ['无牌', '有牌', '中性'][row.brandType] }}<br>
箱数:{{ row.num }}<br>
体积:{{ row.volume }}<br>
重量:{{ row.weight }}Kg
</template>
</template>
</el-table-column>
<el-table-column
......@@ -40,6 +47,7 @@
体积:{{ row.warehouseInInfoVO.volume }}<br>
重量:{{ row.warehouseInInfoVO.weight }}Kg
</template>
<span v-else>暂无入仓信息</span>
</template>
</el-table-column>
<el-table-column
......@@ -78,7 +86,7 @@
</el-table>
<h2 v-if="orderSpecialNeeds.length > 0">特殊需求</h2>
<el-form ref="form" :model="form" label-width="180px" style="max-width: 600px;">
<el-form ref="form" :model="form" label-width="120px" style="max-width: 500px;">
<el-form-item :label="item.label" v-for="(item, index) in orderSpecialNeeds" :key="item.value">
<el-input v-model="form.orderSpecialNeedReceivableReqVoList[index].receivableMoney" :placeholder="'请输入' + item.label">
<el-select v-model="form.orderSpecialNeedReceivableReqVoList[index].receivableMoneyCurrency" placeholder="请选择" slot="append" style="width: 100px">
......@@ -92,6 +100,18 @@
</el-input>
</el-form-item>
<h2>订单数据</h2>
<el-form-item label="总方数" style="width: 300px">
<el-input v-model="form.sumVolume" placeholder="请输入总方数">
<span slot="append"></span>
</el-input>
</el-form-item>
<el-form-item label="总方数量" style="width: 300px">
<el-input v-model="form.sumWeight" placeholder="请输入总数量">
<span slot="append">kg</span>
</el-input>
</el-form-item>
<el-card style="margin-top: 15px;">
<div slot="header" class="clearfix">
<span style="font-size: 18px">入仓影像</span>
......@@ -144,19 +164,6 @@
</span>
</el-dialog>
<!-- <el-dialog-->
<!-- title="转异常单"-->
<!-- :visible.sync="dialogVisible"-->
<!-- width="30%"-->
<!-- :before-close="handleClose(done)"-->
<!-- >-->
<!-- <span>这是一段信息</span>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="dialogVisible = false">确认并完成入仓</el-button>-->
<!-- <el-button @click="dialogVisible = false">取 消</el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag>
<print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" />
......@@ -197,7 +204,7 @@ export default {
mounted() {
if(this.$route.query.id){
this.orderId = parseInt(this.$route.query.id || undefined)
getOrder(this.orderId).then(r => this.order = r.data)
this.getOrder()
getOrderWarehouseIn(this.orderId).then(r => this.orderItemList = r.data.reverse())
getSpecialListByOrderId(this.orderId).then(r => this.specialList = r.data)
listByOrderId({ orderId: this.orderId }).then(r => this.form.orderLocationCreateReqVOList = r.data)
......@@ -218,7 +225,9 @@ export default {
exceptionUrls:[],
descZh:'',
manualExceptionType:'',
urls: []
urls: [],
sumVolume: '',
sumWeight: '',
},
currencyList:[],
order: {},
......@@ -233,6 +242,22 @@ export default {
},
methods: {
getTowSum(){
let sumVolume = 0
let sumWeight = 0
this.order.orderItemVOList.forEach(e => {
if (e?.warehouseInInfoVO?.volume) sumVolume += e.warehouseInInfoVO.volume
if (e?.warehouseInInfoVO?.weight) sumWeight += e.warehouseInInfoVO.weight
})
this.form.sumVolume = sumVolume
this.form.sumWeight = sumWeight
},
getOrder(){
getOrder(this.orderId).then(r => {
this.order = r.data
this.getTowSum()
})
},
handleSubmit() {
let p = {
orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList,
......@@ -248,6 +273,7 @@ export default {
orderWarehouseInFinish(p).then(r => {
if (r.code === 0) {
this.escapeBol = false;
this.finishVisible = false
this.$confirm(
'该订单已成功入仓,是否打印?',
'货物已入仓',
......@@ -260,6 +286,7 @@ export default {
}).catch(() => {
// this.$store.dispatch('tagsView/delVisitedView')
this.$message.success('入仓成功')
this.$tab.closePage()
})
}
})
......@@ -284,7 +311,7 @@ export default {
});
getOrderWarehouseIn(this.orderId).then(r => this.orderItemList = r.data.reverse())
getOrder(this.orderId).then(r => this.order = r.data)
this.getOrder()
})
}).catch(() => {
......@@ -295,16 +322,16 @@ export default {
watch: {
warehousingVisible(val) {
if (!val){
getOrder(this.orderId).then(r => this.order = r.data)
this.getOrder()
getOrderWarehouseIn(this.orderId).then(r => this.orderItemList = r.data.reverse())
}
},
orderSpecialNeeds(val){
val.forEach(e => {
this.form.orderSpecialNeedReceivableReqVoList.push( {
this.form.orderSpecialNeedReceivableReqVoList.push({
"id": e.id,
"receivableMoney": '',
"receivableMoneyCurrency": 3
"receivableMoney": e.transFee || '',
"receivableMoneyCurrency": e.transCurrency || 3
})
})
}
......
......@@ -3,9 +3,9 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="站内信来源" prop="fromId">-->
<!-- <el-input v-model="queryParams.fromId" placeholder="请输入站内信来源" clearable @keyup.enter.native="handleQuery"/>-->
<!-- </el-form-item>-->
<el-form-item label="来源" prop="fromId">
<el-input v-model="queryParams.fromId" placeholder="请输入站内信来源" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="发送时间">
<el-date-picker v-model="dateRangeSendTime" style="width: 240px" value-format="yyyy-MM-dd"
type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
......@@ -45,7 +45,7 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="" align="center" prop="id" />
<!-- <el-table-column label="站内信来源" align="center" prop="fromId" />-->
<el-table-column label="来源" align="center" prop="fromId" />
<el-table-column label="发送时间" align="center" prop="sendTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sendTime) }}</span>
......@@ -73,15 +73,15 @@
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="站内信来源ID" prop="fromId">-->
<!-- <el-input v-model="form.fromId" placeholder="请输入站内信来源" />-->
<!-- </el-form-item>-->
<el-form-item label="来源" prop="fromId">
<el-input v-model="form.fromId" placeholder="请输入站内信来源" />
</el-form-item>
<el-form-item label="发送时间" prop="sendTime">
<el-date-picker clearable v-model="form.sendTime" type="date" value-format="yyyy-MM-dd" placeholder="选择发送时间" />
</el-form-item>
......@@ -135,8 +135,8 @@ export default {
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
page: 1,
rows: 10,
fromId: null,
title: null,
content: null,
......@@ -249,8 +249,8 @@ export default {
handleExport() {
// 处理查询参数
let params = {...this.queryParams};
params.pageNo = undefined;
params.pageSize = undefined;
params.page = undefined;
params.rows = undefined;
this.addBeginAndEndTime(params, this.dateRangeSendTime, 'sendTime');
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行导出
......
......@@ -83,11 +83,12 @@
<dict-selector v-model="form.isShowInMenuBar" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" form-type="radio" />
</el-form-item>
</el-col>
<el-col :span="12" v-if="form.type == 2">
<!--同一个组件可能会配置多个路由,通过路由设置keepalive会产生冲突,此字段废弃 22-09-17 @老丁 -->
<!-- <el-col :span="12" v-if="form.type == 2">
<el-form-item label="保活" prop="keepalive">
<dict-selector v-model="form.keepalive" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" form-type="radio" />
</el-form-item>
</el-col>
</el-col> -->
<el-col :span="24">
<el-form-item v-if="form.type != '3'" label="菜单图标">
<el-popover placement="bottom-start" width="460" trigger="click" @show="$refs['iconSelect'].reset()">
......
......@@ -3,7 +3,7 @@
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="站内信来源" prop="fromId">
<el-form-item label="来源" prop="fromId">
<el-input v-model="queryParams.fromId" placeholder="请输入站内信来源" clearable @keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item label="发送时间">
......@@ -39,7 +39,7 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="" align="center" prop="id" />
<el-table-column label="站内信来源" align="center" prop="fromId" />
<el-table-column label="来源" align="center" prop="fromId" />
<el-table-column label="发送时间" align="center" prop="sendTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.sendTime) }}</span>
......
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