Commit ea6df539 authored by 我在何方's avatar 我在何方
parents 1b55f039 08dd2438
...@@ -78,16 +78,16 @@ $sizes: 0, 5, 10,20,30,50,75,100,150,200,300,500,800,1000; ...@@ -78,16 +78,16 @@ $sizes: 0, 5, 10,20,30,50,75,100,150,200,300,500,800,1000;
margin-top: #{$item}px !important; margin-top: #{$item}px !important;
} }
.pl-#{$item}{ .pl-#{$item}{
margin-left: #{$item}px !important; padding-left: #{$item}px !important;
} }
.pr-#{$item}{ .pr-#{$item}{
margin-right: #{$item}px !important; padding-right: #{$item}px !important;
} }
.pb-#{$item}{ .pb-#{$item}{
margin-bottom: #{$item}px !important; padding-bottom: #{$item}px !important;
} }
.pt-#{$item}{ .pt-#{$item}{
margin-top: #{$item}px !important; padding-top: #{$item}px !important;
} }
.w-#{$item}{ .w-#{$item}{
width: #{$item}px !important; width: #{$item}px !important;
......
...@@ -61,6 +61,15 @@ export function getProductPage(query) { ...@@ -61,6 +61,15 @@ export function getProductPage(query) {
}) })
} }
// 获得产品ID
export function getProductIds(params) {
return request({
url: '/ecw/product/simpleIdList',
params,
method: 'get'
})
}
// 导出产品 Excel // 导出产品 Excel
export function exportProductExcel(query) { export function exportProductExcel(query) {
return request({ return request({
......
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1697265053025" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4223" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M874.119618 149.859922A510.816461 510.816461 0 0 0 511.997 0.00208a509.910462 509.910462 0 0 0-362.119618 149.857842c-199.817789 199.679789-199.817789 524.581447 0 724.260236a509.969462 509.969462 0 0 0 362.119618 149.857842A508.872463 508.872463 0 0 0 874.119618 874.120158c199.836789-199.679789 199.836789-524.581447 0-724.260236zM814.94268 378.210681L470.999043 744.132295a15.359984 15.359984 0 0 1-5.887994 4.095996c-1.751998 1.180999-2.913997 2.362998-5.276994 2.913997a34.499964 34.499964 0 0 1-13.469986 2.914997 45.547952 45.547952 0 0 1-12.897986-2.303998l-4.095996-2.363997a45.291952 45.291952 0 0 1-7.009992-4.095996l-196.902793-193.789796a34.126964 34.126964 0 0 1-10.555989-25.186973c0-9.37399 3.583996-18.74698 9.98399-25.186974a36.429962 36.429962 0 0 1 50.372947 0l169.98382 167.423824L763.389735 330.220732a37.059961 37.059961 0 0 1 50.371947-1.732998 33.647965 33.647965 0 0 1 11.165988 25.186973 35.544963 35.544963 0 0 1-9.98399 24.575974v-0.04z m0 0" fill="#52C41A" p-id="4224"></path></svg>
\ No newline at end of file
...@@ -3,18 +3,19 @@ ...@@ -3,18 +3,19 @@
<div class="flex-1"> <div class="flex-1">
<el-card> <el-card>
<div slot="header" class="header"> <div slot="header" class="header">
<el-select v-model="queryParams.typeId" :placeholder="$t('选择类型')" style="width:120px" clearable> <el-select v-model="queryParams.typeId" :placeholder="$t('选择类型')" style="width:120px" clearable @change="getList" :disabled="loading">
<el-option v-for="item in typeList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in typeList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> </el-select>
<el-select v-model="queryParams.attrId" :placeholder="$t('选择属性')" style="width:120px" clearable> <el-select v-model="queryParams.attrId" :placeholder="$t('选择属性')" style="width:120px" clearable @change="getList" :disabled="loading">
<el-option v-for="item in attrList" :key="item.id" :label="item.attrName" :value="item.id" /> <el-option v-for="item in attrList" :key="item.id" :label="item.attrName" :value="item.id" />
</el-select> </el-select>
<el-input v-model="queryParams.titleZh" :placeholder="$t('产品关键字')" style="width:120px" clearable /> <el-input v-model="queryParams.titleZh" :placeholder="$t('产品关键字')" style="width:120px" clearable :disabled="loading"/>
<el-button type="primary" @click="reLoad">{{$t('搜索')}}</el-button> <el-button type="primary" @click="reLoad" :loading="loading">{{$t('搜索')}}</el-button>
<div v-if="showAll"> <div v-if="showAll">
<el-checkbox :label="$t('全选') + `(${total > 500 ? $t('最多500') : $t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct"></el-checkbox> <el-checkbox :label="$t('全选') + `(${total > 500 ? $t('最多500') : $t('{total}个', {total})})`" @change="toggleAll" :disabled="isAllProduct || loading"></el-checkbox>
<el-checkbox :label="$t('全选库内商品(共{cnt}个)', {cnt: allTotal})" v-model="isAllProduct"></el-checkbox> <el-checkbox :label="$t('全选库内商品(共{cnt}个)', {cnt: allTotal})" v-model="isAllProduct" :disabled="loading"></el-checkbox>
<el-checkbox v-if="showFiltered && enableFiltered" :label="$t('根据商品搜索结果(共{cnt}个)', {cnt: total})" v-model="isAllFiltered" :disabled="loading"></el-checkbox>
</div> </div>
</div> </div>
<div class="list"> <div class="list">
...@@ -28,9 +29,9 @@ ...@@ -28,9 +29,9 @@
<div class="flex-1 ml-10"> <div class="flex-1 ml-10">
<el-card style="height:100%"> <el-card style="height:100%">
<div slot="header" class="header flex"> <div slot="header" class="header flex">
<div class="flex-1 flex items-center">{{$t('已选{cnt}个产品', {cnt: isAllProduct ? total : choosedList.length})}}</div> <div class="flex-1 flex items-center">{{$t('已选{cnt}个产品', {cnt: isAllProduct || isAllFiltered ? total : choosedList.length})}}</div>
<el-button v-if="choosedList.length" type="text" @click="clearAll">{{$t('全部清除')}}</el-button> <el-button :disabled="!choosedList.length" type="text" @click="clearAll">{{$t('全部清除')}}</el-button>
</div> </div>
<div class="list"> <div class="list">
<div class="item" v-for="(choosed) in choosedList" :key="choosed.id" :data-data="JSON.stringify(choosed)"> <div class="item" v-for="(choosed) in choosedList" :key="choosed.id" :data-data="JSON.stringify(choosed)">
...@@ -43,7 +44,7 @@ ...@@ -43,7 +44,7 @@
</div> </div>
</template> </template>
<script> <script>
import { getProductPage, getProductList } from '@/api/ecw/product' import {getProductPage, getProductList, getProductIds} from '@/api/ecw/product'
import { getProductTypeList } from '@/api/ecw/productType' import { getProductTypeList } from '@/api/ecw/productType'
import { getProductAttrList } from '@/api/ecw/productAttr' import { getProductAttrList } from '@/api/ecw/productAttr'
...@@ -56,10 +57,13 @@ export default { ...@@ -56,10 +57,13 @@ export default {
} }
}, },
showAll: Boolean, showAll: Boolean,
isall: Boolean isall: Boolean,
// 是否允许勾选全部搜索结果,优惠券那边无法回显所以不能启用,编辑路线价格等不需要回显的场景可以启用
enableFiltered: Boolean
}, },
data() { data() {
return { return {
loading: false,
list: [], list: [],
page: 1, page: 1,
pages: 1, pages: 1,
...@@ -75,7 +79,10 @@ export default { ...@@ -75,7 +79,10 @@ export default {
choosedList: [], choosedList: [],
typeList: [], typeList: [],
attrList: [], attrList: [],
isAllProduct: false isAllProduct: false,
isAllFiltered: false, // 是否全部搜索结果
// 是否显示搜索结果勾选,有筛选条件才显示
showFiltered: false
} }
}, },
computed: { computed: {
...@@ -101,6 +108,11 @@ export default { ...@@ -101,6 +108,11 @@ export default {
this.choosedList = [] this.choosedList = []
this.$emit('setall', isAllProduct) this.$emit('setall', isAllProduct)
}, },
isAllFiltered(isAllFiltered){
this.choosedList = []
this.isAllProduct = false
this.$emit('setFiltered', isAllFiltered)
},
defaultIds(newValue, oldValue){ defaultIds(newValue, oldValue){
if(!oldValue || !oldValue.length){ if(!oldValue || !oldValue.length){
this.loadDefaultProds() this.loadDefaultProds()
...@@ -158,21 +170,23 @@ export default { ...@@ -158,21 +170,23 @@ export default {
this.getList() this.getList()
}, },
getList() { getList() {
this.loading = true
getProductPage(this.queryParams).then(res => { getProductPage(this.queryParams).then(res => {
this.list = res.data.list //.concat(res.data.list || []) this.list = res.data.list //.concat(res.data.list || [])
this.page = res.data.page this.page = res.data.page
this.pages = res.data.pages this.pages = res.data.pages
this.total = res.data.total this.total = res.data.total
// this.choosedList = [] //搜搜重置,数据回显
/* if (this.defaultIds.length > 0) { // 必须在搜索之后才显示勾选,这个时候才有数量
this.defaultIds.map(item => { this.showFiltered = !!this.queryParams.attrId || !!this.queryParams.titleZh || !!this.queryParams.typeId
this.list.map(items => { }).finally(() => {
if (items.id == item) { this.loading = false
this.choosedList.push(items) })
} },
}) // 获得指定条件的商品的全部ID
}) getFilteredIds(){
} */ return getProductIds(this.queryParams).then(res => {
return res.data
}) })
}, },
toggleCheck(item, checked) { toggleCheck(item, checked) {
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
<el-table-column :label="$t('结束时间')" align="center" prop="endTime" width="180"> <el-table-column :label="$t('结束时间')" align="center" prop="endTime" width="180">
<template slot-scope="{row}"> <template slot-scope="{row}">
<div :style="{color: !row.overdueStatus ? 'red' : null}">{{ parseTime(row.endTime, '{y}-{m}-{d}') }}</div> <div :style="{color: !row.overdueStatus ? 'red' : null}">{{ parseTime(row.endTime, '{y}-{m}-{d}') }}</div>
<div v-if="!row.overdueStatus" style="color: red">{{ $t('已过期') }}</div> <div style="color: red">{{ !row.overdueStatus ? $t('已过期') : expireTips(row.endTime) }}</div>
</template> </template>
</el-table-column> </el-table-column>
<!-- <!--
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
v-hasPermi="['ecw:coupon:update']">{{ $t('编辑') }}</el-button> v-hasPermi="['ecw:coupon:update']">{{ $t('编辑') }}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleCopy(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleCopy(scope.row)"
v-hasPermi="['ecw:coupon:copy']">{{ $t('复制') }}</el-button> v-hasPermi="['ecw:coupon:copy']">{{ $t('复制') }}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="updateEndtimeItem = scope.row" v-if="scope.row.endTime && scope.row.status" <el-button size="mini" type="text" icon="el-icon-edit" @click="updateEndtimeItem = scope.row" v-if="scope.row.endTime"
v-hasPermi="['ecw:coupon:delay']">{{ $t('延期') }}</el-button> v-hasPermi="['ecw:coupon:delay']">{{ $t('延期') }}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:coupon:delete']">{{ $t('删除') }}</el-button> v-hasPermi="['ecw:coupon:delete']">{{ $t('删除') }}</el-button>
...@@ -232,6 +232,27 @@ export default { ...@@ -232,6 +232,27 @@ export default {
{required: !this.updateEndtimeForm.forever, message: "请填写结束时间"} {required: !this.updateEndtimeForm.forever, message: "请填写结束时间"}
] ]
} }
},
expireTips(){
return endTime => {
if(!endTime) return ''
console.log({endTime})
// 7天以内用红色标注提醒:“还有N天到期”,最后一天显示1天过期
let endDate = new Date(endTime.replace(/-/g, '/'))
if(endDate.getHours() == 0){
endDate.setHours(23)
endDate.setMinutes(59)
endDate.setSeconds(59)
}
let now = new Date()
let diff = endDate.getTime() - now.getTime()
let days = Math.ceil(diff / (24 * 60 * 60 * 1000))
if(days <= 1){
return this.$t('1天内过期')
}else if(days <= 7){
return this.$t('还有{days}天到期', {days})
}
}
} }
}, },
watch:{ watch:{
......
...@@ -60,6 +60,35 @@ ...@@ -60,6 +60,35 @@
</td> </td>
</tr> </tr>
</template> </template>
<tr>
<td style="text-align:center;width: 50px;" v-if="!preview">
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{calcTotal('cartonsNum')}}
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{calcTotal('volume')}}
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
{{calcTotal('weight')}}
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;">
</td>
<td style="text-align:center;padding:0 0px;border:1px dashed #ccc;" v-if="!preview">
</td>
</tr>
</table> </table>
</div> </div>
<!--edit by liuyc 20210121 结尾增加文字--> <!--edit by liuyc 20210121 结尾增加文字-->
...@@ -80,6 +109,7 @@ import {parseTime} from '@/utils/ruoyi' ...@@ -80,6 +109,7 @@ import {parseTime} from '@/utils/ruoyi'
import lodop from '@/utils/lodop' import lodop from '@/utils/lodop'
import {getOrderWarehouseIn, getOrderDetail} from '@/api/ecw/order' import {getOrderWarehouseIn, getOrderDetail} from '@/api/ecw/order'
import qrcode from 'qrcode' import qrcode from 'qrcode'
import Decimal from 'decimal.js'
export default { export default {
filters: {parseTime}, filters: {parseTime},
components: { }, components: { },
...@@ -136,7 +166,18 @@ export default { ...@@ -136,7 +166,18 @@ export default {
}) })
}) })
return arr return arr
} },
calcTotal(){
return field =>{
let total = new Decimal(0)
this.items.forEach(item => {
if(!this.preview || item.checked){
total = total.plus(item[field] || 0)
}
})
return total.toNumber()
}
}
}, },
watch:{ watch:{
checkAll(val){ checkAll(val){
......
<template> <template>
<div v-if="order"> <div v-if="order">
<el-row class="wrapper"> <div class="wrapper flex w-1000 pb-20" style="margin:auto">
<el-col :span="10" class="icon"> <div class="icon">
<img src="../../../assets/images/u5.png" /> <img src="../../../assets/svg/success.svg" />
</el-col> </div>
<el-col :span="14"> <div class="flex-1">
<div class="title">{{$t('新增订单生成成功')}}</div> <div class="title">{{$t('新增订单生成成功')}}</div>
<div class="line">{{$t('订单号')}}{{order.orderNo}}</div> <div class="line bold font-lg">{{$t('订单号')}}{{order.orderNo}}</div>
<div class="line">{{$t('运输方式')}}<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /></div> <div class="line">{{$t('唛头')}}{{order.marks}}</div>
<div class="line" v-if="order.channelName">{{$t('出货渠道')}}{{order.channelName}}</div>
<div class="line">{{$t('路线')}}{{$l(order.logisticsInfoDto, 'startTitle')}} >> {{$l(order.logisticsInfoDto, 'destTitle')}}</div> <div class="flex">
<div class="line flex-1">{{$t('运输方式')}}<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /></div>
<div class="line flex-1" v-if="order.channelName">{{$t('出货渠道')}}{{order.channelName}}</div>
</div>
<div class="flex">
<div class="line flex-1">{{$t('路线')}}{{$l(order.logisticsInfoDto, 'startTitle')}} >> {{$l(order.logisticsInfoDto, 'destTitle')}}</div>
<div class="line flex-1">{{$t('单证报关')}}<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="order.customsType" /></div>
</div>
<div class="line">{{$t('商品列表')}} <div class="line">{{$t('商品列表')}}
<span v-for="(item, index) in order.orderItemVOList" :key="index"> <span v-for="(item, index) in order.orderItemVOList" :key="index">
{{$l(item, 'prodTitle')}} {{$l(item, 'prodTitle')}}
<template v-if="index < order.orderItemVOList.length - 1">{{ $t('') }}</template> <template v-if="index < order.orderItemVOList.length - 1">{{ $t('') }}</template>
</span> </span>
</div> </div>
<div class="line">{{$t('仓库地址')}}:{{$l(order.logisticsInfoDto, 'startAddress')}}</div> <div class="line">{{$t('总件数')}}:{{order.sumNum}}</div>
<div class="line">{{$t('仓库电话')}}: {{order.logisticsInfoDto.startTell}}</div> </div>
<!-- v1.7新增 --> </div>
<div class="line">{{$t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)')}}</div> <div class="w-800" style="margin: auto">
<div class="line"></div> <div class="line mt-20">{{$t('仓库地址')}}:{{$l(order.logisticsInfoDto, 'startAddress')}}</div>
<div class="line">{{$t('您的订单已提交,谢谢您选择捷道物流!')}}</div> <div class="line">{{$t('仓库电话')}}: {{order.logisticsInfoDto.startTell}}</div>
</el-col> <!-- v1.7新增 -->
</el-row> <div class="line">{{$t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)')}}</div>
<div class="actions"> <div class="line"></div>
<div class="line">{{$t('您的订单已提交,谢谢您选择捷道物流!')}}</div>
</div>
<div class="actions mt-50">
<el-button type="primary" @click="$redirect('detail?orderId=' + order.orderId)">{{$t('查看订单')}}</el-button> <el-button type="primary" @click="$redirect('detail?orderId=' + order.orderId)">{{$t('查看订单')}}</el-button>
<el-button type="warning" @click="showNotice = true">{{$t('入仓须知')}}</el-button> <el-button type="warning" @click="showNotice = true">{{$t('入仓须知')}}</el-button>
<el-button type="info" @click="$redirect('create')">{{$t('再来一单')}}</el-button> <el-button type="info" @click="$redirect('create')">{{$t('再来一单')}}</el-button>
...@@ -75,24 +86,31 @@ export default { ...@@ -75,24 +86,31 @@ export default {
.icon{ .icon{
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
margin-right: 20px; margin-right: 50px;
align-items: center; align-items: center;
img{ img{
width: 200px; width: 100px;
height: 200px; height: 100px;
} }
} }
.title{ .title{
font-size: 30px; font-size: 30px;
margin-bottom: 20px; margin-bottom: 20px;
} }
.line{
font-size: 14px; }
margin-bottom: 10px; .line{
} font-size: 14px;
margin-bottom: 10px;
} }
.actions{ .actions{
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
.bold{
font-weight: bold;
}
.font-lg{
font-size: 1.5rem !important;
}
</style> </style>
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="150px"> <el-form ref="form" :model="form" :rules="rules" label-width="150px">
<products-selector ref="productSelector" v-model="form.productIdList" show-all @setall="isAllProduct=$event" :default-ids="form.productIdList" class="mb-20" /> <products-selector ref="productSelector" v-model="form.productIdList" show-all @setall="isAllProduct=$event" :default-ids="form.productIdList" enable-filtered @setFiltered="isAllFilteredProduct=$event" class="mb-20" />
<routers-selector v-model="selectedRoutes" :type="type" /> <routers-selector v-model="selectedRoutes" :type="type" />
...@@ -24,6 +24,13 @@ ...@@ -24,6 +24,13 @@
<el-form-item :label="$t('单价模式')" prop="priceType"> <el-form-item :label="$t('单价模式')" prop="priceType">
<dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" formatter='number' /> <dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" formatter='number' />
</el-form-item> </el-form-item>
<el-form-item
:label="$t('最小起计量')"
:prop="`minWeight`"
>
<inputor default2="0" v-model.number="form.minWeight" type="number" class="w-100" :rules="{validator: priceValidator, trigger: 'blur', message: '数量错误'}"/>
/ <selector v-model="form.minWeightUnit" :options="unitList" :label-field="$l(null, 'title')" value-field="id" defaultable2 class="w-100" disabled />
</el-form-item>
<!--阶梯订单--> <!--阶梯订单-->
<template v-if="form.stepPrice==1" > <template v-if="form.stepPrice==1" >
...@@ -63,13 +70,6 @@ ...@@ -63,13 +70,6 @@
</template> </template>
<!--非阶梯订单--> <!--非阶梯订单-->
<template v-else> <template v-else>
<el-form-item
:label="$t('最小起计量')"
:prop="`minWeight`"
>
<inputor default2="0" v-model.number="form.minWeight" type="number" class="w-100" :rules="{validator: priceValidator, trigger: 'blur', message: '数量错误'}"/>
/ <selector v-model="form.minWeightUnit" :options="unitList" :label-field="$l(null, 'title')" value-field="id" defaultable2 class="w-100" disabled />
</el-form-item>
<el-form-item :label="$t('默认全包价')" v-if="form.priceType == 1"> <el-form-item :label="$t('默认全包价')" v-if="form.priceType == 1">
<inputor default2="0" v-model.number="form.allPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w100 mr10" /> <inputor default2="0" v-model.number="form.allPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w100 mr10" />
...@@ -216,6 +216,7 @@ export default { ...@@ -216,6 +216,7 @@ export default {
// dayLimit: 10000 // dayLimit: 10000
}, },
isAllProduct: false, // 是否全部商品 isAllProduct: false, // 是否全部商品
isAllFilteredProduct: false, // 是否勾選全部搜索結果
specialProducts: [], specialProducts: [],
// priceStepList: [{},{}], // 阶梯价格 // priceStepList: [{},{}], // 阶梯价格
// specialList:[], // 特殊需求,默认四个 // specialList:[], // 特殊需求,默认四个
...@@ -303,6 +304,10 @@ export default { ...@@ -303,6 +304,10 @@ export default {
if(this.type == 'air'){ if(this.type == 'air'){
this.$set(this.form, 'stepPrice', 1) this.$set(this.form, 'stepPrice', 1)
} }
await this.$nextTick()
// 默认单位,空运千克,海运立方米
this.setDefaultVolumeUnit(this.type == 'air' ? 6 : 7)
// 如果是复制,则获取数据并填充,先复制,然后填充特需,避免数据的特需不全导致部分不显示 // 如果是复制,则获取数据并填充,先复制,然后填充特需,避免数据的特需不全导致部分不显示
if(this.$route.query.templateId){ if(this.$route.query.templateId){
await this.getTemplateDetail(this.$route.query.templateId) await this.getTemplateDetail(this.$route.query.templateId)
...@@ -453,6 +458,17 @@ export default { ...@@ -453,6 +458,17 @@ export default {
this.$set(this.form, 'transportVolumeUnit', unit) this.$set(this.form, 'transportVolumeUnit', unit)
this.$set(this.form, 'clearanceVolumeUnit', unit) this.$set(this.form, 'clearanceVolumeUnit', unit)
this.$set(this.form, 'allVolumeUnit', unit) this.$set(this.form, 'allVolumeUnit', unit)
this.$set(this.form, 'minWeightUnit', unit)
console.log(this.form.priceStepList, this.form.stepPrice)
// 阶梯价
if(this.form.stepPrice == 1 && this.form.priceStepList?.length){
this.form.priceStepList.forEach(item => {
this.$set(item, 'transportVolumeUnit', unit)
this.$set(item, 'clearanceVolumeUnit', unit)
this.$set(item, 'allVolumeUnit', unit)
this.$set(item, 'weightUnit', unit)
})
}
}, },
submitForm() { submitForm() {
this.$refs["form"].validate(async (valid) => { this.$refs["form"].validate(async (valid) => {
...@@ -465,14 +481,20 @@ export default { ...@@ -465,14 +481,20 @@ export default {
this.$message.error(this.$t('请选择线路')); this.$message.error(this.$t('请选择线路'));
return; return;
} }
if(!this.isAllProduct && (!this.form.productIdList || !this.form.productIdList.length)){
return this.$message.error('请选择商品')
}
let data = Object.assign({}, this.form, { let data = Object.assign({}, this.form, {
// lineChannelList: this.selectedRoutes, // lineChannelList: this.selectedRoutes,
// specialList: this.specialProducts, // specialList: this.specialProducts,
isAllProduct: this.isAllProduct ? 1:0 isAllProduct: this.isAllProduct ? 1:0
}) })
// 如果是勾選了全部篩選商品,則獲取商品ID
if(this.isAllFilteredProduct){
data.productIdList = await this.$refs.productSelector.getFilteredIds()
}
if(!data.isAllProduct && (!data.productIdList || !data.productIdList.length)){
return this.$message.error('请选择商品')
}
/* if(this.form.stepPrice == 1){ /* if(this.form.stepPrice == 1){
data.priceStepList = this.form.priceStepList data.priceStepList = this.form.priceStepList
} */ } */
...@@ -488,7 +510,7 @@ export default { ...@@ -488,7 +510,7 @@ export default {
} }
await this.$confirm(this.$t('已选择{route}条路线,{product}个商品;确认提交修改?', { await this.$confirm(this.$t('已选择{route}条路线,{product}个商品;确认提交修改?', {
route: data.lineChannelList.length, route: data.lineChannelList.length,
product: this.isAllProduct ? this.$refs.productSelector.allTotal : this.form.productIdList.length product: this.isAllProduct ? this.$refs.productSelector.allTotal : data.productIdList.length
})) }))
this.loading = true this.loading = true
batchUpdateProductPrice(data).then(response => { batchUpdateProductPrice(data).then(response => {
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="150px"> <el-form ref="form" :model="form" :rules="rules" label-width="150px">
<products-selector ref="productSelector" v-model="form.productIdList" show-all @setall="isAllProduct=$event" :default-ids="form.productIdList" class="mb-20" /> <products-selector ref="productSelector" v-model="form.productIdList" show-all @setall="isAllProduct=$event"
enable-filtered @setFiltered="isAllFilteredProduct=$event"
:default-ids="form.productIdList" class="mb-20"/>
<routers-selector v-model="selectedRoutes" :type="type" /> <routers-selector v-model="selectedRoutes" :type="type" />
...@@ -96,6 +98,7 @@ export default { ...@@ -96,6 +98,7 @@ export default {
stepPrice: 0 stepPrice: 0
}, },
isAllProduct: false, // 是否全部商品 isAllProduct: false, // 是否全部商品
isAllFilteredProduct: false, // 是否全部篩選商品
specialProducts: [], specialProducts: [],
rules: {}, rules: {},
product: null, product: null,
...@@ -164,6 +167,10 @@ export default { ...@@ -164,6 +167,10 @@ export default {
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
this.$nextTick(async() => {
this.setDefaultVolumeUnit(this.type == 'air' ? 6 : 7)
})
this.getDictDatas(this.DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS).forEach(item => { this.getDictDatas(this.DICT_TYPE.ECW_SPECIAL_REQ_FOR_LINE_PRODUCTS).forEach(item => {
// 没有的才push,已有的可能是从复制模板携带过来的数据 // 没有的才push,已有的可能是从复制模板携带过来的数据
if(!this.form.specialList.find(special => special.specialDictType == item.value)) { if(!this.form.specialList.find(special => special.specialDictType == item.value)) {
...@@ -240,6 +247,17 @@ export default { ...@@ -240,6 +247,17 @@ export default {
this.$set(this.form, 'transportVolumeUnit', unit) this.$set(this.form, 'transportVolumeUnit', unit)
this.$set(this.form, 'clearanceVolumeUnit', unit) this.$set(this.form, 'clearanceVolumeUnit', unit)
this.$set(this.form, 'allVolumeUnit', unit) this.$set(this.form, 'allVolumeUnit', unit)
this.$set(this.form, 'minWeightUnit', unit)
console.log(this.form.priceStepList, this.form.stepPrice)
// 阶梯价
if(this.form.stepPrice == 1 && this.form.priceStepList?.length){
this.form.priceStepList.forEach(item => {
this.$set(item, 'transportVolumeUnit', unit)
this.$set(item, 'clearanceVolumeUnit', unit)
this.$set(item, 'allVolumeUnit', unit)
this.$set(item, 'weightUnit', unit)
})
}
}, },
submitForm() { submitForm() {
this.$refs["form"].validate(async (valid) => { this.$refs["form"].validate(async (valid) => {
...@@ -252,15 +270,21 @@ export default { ...@@ -252,15 +270,21 @@ export default {
this.$message.error(this.$t('请选择线路')); this.$message.error(this.$t('请选择线路'));
return; return;
} }
if(!this.isAllProduct && (!this.form.productIdList || !this.form.productIdList.length)){
return this.$message.error('请选择商品')
}
let data = Object.assign({}, this.form, { let data = Object.assign({}, this.form, {
// lineChannelList: this.selectedRoutes, // lineChannelList: this.selectedRoutes,
// specialList: this.specialProducts, // specialList: this.specialProducts,
isAllProduct: this.isAllProduct ? 1:0 isAllProduct: this.isAllProduct ? 1:0
}) })
// 如果是勾選了全部篩選商品,則獲取商品ID
if(this.isAllFilteredProduct){
data.productIdList = await this.$refs.productSelector.getFilteredIds()
}
if(!data.isAllProduct && (!data.productIdList || !data.productIdList.length)){
return this.$message.error(this.$t('请选择商品') + "!")
}
data.lineChannelList = this.selectedRoutes data.lineChannelList = this.selectedRoutes
if(data.lineChannelList.length < 1){ if(data.lineChannelList.length < 1){
...@@ -268,7 +292,7 @@ export default { ...@@ -268,7 +292,7 @@ export default {
} }
await this.$confirm(this.$t('已选择{route}条路线,{product}个商品;确认提交修改?', { await this.$confirm(this.$t('已选择{route}条路线,{product}个商品;确认提交修改?', {
route: data.lineChannelList.length, route: data.lineChannelList.length,
product: this.isAllProduct ? this.$refs.productSelector.allTotal : this.form.productIdList.length product: this.isAllProduct ? this.$refs.productSelector.allTotal : data.productIdList.length
})) }))
this.loading = true this.loading = true
batchAddPrice(data).then(async(response) => { batchAddPrice(data).then(async(response) => {
......
...@@ -88,6 +88,13 @@ ...@@ -88,6 +88,13 @@
<el-form-item :label="$t('单价模式')" prop="priceType"> <el-form-item :label="$t('单价模式')" prop="priceType">
<dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" formatter="number" defaultable2 /> <dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" formatter="number" defaultable2 />
</el-form-item> </el-form-item>
<el-form-item
:label="$t('最小起计量')"
:prop="`minWeight`"
>
<inputor default2="0" v-model.number="form.minWeight" type="number" class="w-100" :rules="{validator: priceValidator, trigger: 'blur', message: '数量错误'}"/>
/ <selector v-model="form.minWeightUnit" :options="unitList" :label-field="$l(null, 'title')" value-field="id" defaultable2 class="w-100" disabled />
</el-form-item>
<!--阶梯定价--> <!--阶梯定价-->
<template v-if="form.stepPrice==1" > <template v-if="form.stepPrice==1" >
<div v-for="(item, index) in form.priceStepList" :key="index"> <div v-for="(item, index) in form.priceStepList" :key="index">
...@@ -130,14 +137,6 @@ ...@@ -130,14 +137,6 @@
</div> </div>
</template> </template>
<template v-else> <template v-else>
<el-form-item
:label="$t('最小起计量')"
:prop="`minWeight`"
>
<inputor default2="0" v-model.number="form.minWeight" type="number" class="w-100" :rules="{validator: priceValidator, trigger: 'blur', message: '数量错误'}"/>
/ <selector v-model="form.minWeightUnit" :options="unitList" :label-field="$l(null, 'title')" value-field="id" defaultable2 class="w-100" disabled />
</el-form-item>
<el-form-item :label="$t('默认全包价')" v-if="form.priceType == 1" prop="allPrice" :rules="{validator: priceValidator, trigger: 'blur', message: '价格错误'}"> <el-form-item :label="$t('默认全包价')" v-if="form.priceType == 1" prop="allPrice" :rules="{validator: priceValidator, trigger: 'blur', message: '价格错误'}">
<selector test="allPriceUnit" v-model="form.allPriceUnit" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable2 class="w-100 mr-10 aaa" /> <selector test="allPriceUnit" v-model="form.allPriceUnit" :options="currencyList" :label-field="$l('title')" value-field="id" defaultable2 class="w-100 mr-10 aaa" />
<inputor default2="0" v-model.number="form.allPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w-100 mr10" /> <inputor default2="0" v-model.number="form.allPrice" type="number" :placeholder="$t('整数或者两位小数')" class="w-100 mr10" />
...@@ -543,6 +542,7 @@ export default { ...@@ -543,6 +542,7 @@ export default {
this.$set(this.form, 'priceStepList', [{},{}]) this.$set(this.form, 'priceStepList', [{},{}])
} }
this.syncAllUnit() this.syncAllUnit()
this.stepPrice = !!stepPrice
}, },
needPay(val){ needPay(val){
this.$set(this.form, 'needPay', val ? 1 : 0) this.$set(this.form, 'needPay', val ? 1 : 0)
...@@ -701,6 +701,13 @@ export default { ...@@ -701,6 +701,13 @@ export default {
} }
}) })
// 空命则阶梯订单
this.$nextTick(() => {
if(this.type == 'air'){
this.stepPrice = true
}
})
}, },
methods: { methods: {
// 同步全部单位 // 同步全部单位
......
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
<el-table-column prop="price" :label="$t('价格')" align="center"> <el-table-column prop="price" :label="$t('价格')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="scope.row.stepPrice == 1"> <template v-if="scope.row.stepPrice == 1 && scope.row.priceStepList && scope.row.priceStepList.length">
{{$t("第{no}阶梯({start}~{end}{weightUnit}", { {{$t("第{no}阶梯({start}~{end}{weightUnit}", {
no: 1, no: 1,
start: scope.row.priceStepList[0].startNum, start: scope.row.priceStepList[0].startNum,
...@@ -171,6 +171,9 @@ ...@@ -171,6 +171,9 @@
</div> </div>
<el-button type="text" @click="showMoreStepPriceItem=scope.row">{{$t('查看更多')}}</el-button> <el-button type="text" @click="showMoreStepPriceItem=scope.row">{{$t('查看更多')}}</el-button>
</template> </template>
<template v-else-if="scope.row.stepPrice">
{{$t('缺少阶梯价格设置')}}
</template>
<template v-else> <template v-else>
<div v-if="scope.row.priceType == 0"> <div v-if="scope.row.priceType == 0">
{{$t('运费')}}:{{ getCurrencySymbol(scope.row.transportPriceUnit) + scope.row.transportPrice}}&nbsp; {{$t('运费')}}:{{ getCurrencySymbol(scope.row.transportPriceUnit) + scope.row.transportPrice}}&nbsp;
...@@ -229,9 +232,9 @@ ...@@ -229,9 +232,9 @@
v-hasPermi="['ecw:product-price:down']">{{scope.row.auditStatus == AuditStatusEnum.PASS ? $t('下架') : $t('上架')}}</el-button> v-hasPermi="['ecw:product-price:down']">{{scope.row.auditStatus == AuditStatusEnum.PASS ? $t('下架') : $t('上架')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['ecw:product-price:delete']">{{$t('删除')}}</el-button> v-hasPermi="['ecw:product-price:delete']">{{$t('删除')}}</el-button>
<el-button @click="copyTemplate(scope.row)" size="mini" type="text">复制模板</el-button> <el-button @click="copyTemplate(scope.row)" size="mini" type="text">{{$t('复制模板')}}</el-button>
<el-button @click="setOrderInquiry(scope.row, 0)" v-if="scope.row.needOrderInquiry" size="mini" type="text">取消单询</el-button> <el-button @click="setOrderInquiry(scope.row, 0)" v-if="scope.row.needOrderInquiry" size="mini" type="text">{{$t('取消单询')}}</el-button>
<el-button @click="setOrderInquiry(scope.row, 1)" v-else size="mini" type="text">单询异常</el-button> <el-button @click="setOrderInquiry(scope.row, 1)" v-else size="mini" type="text">{{$t('单询异常')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
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