Commit 0ed79233 authored by 我在何方's avatar 我在何方
parents a61cb77e 88fea860
......@@ -506,10 +506,11 @@ export function boxGoodsDetail(data) {
* @param {*} id
* @return {*}
*/
export function deleteSection(id) {
export function deleteSection(params) {
return request({
url: "/ecw/box-preload-goods/deleteSection?id=" + id,
url: "/ecw/box-preload-goods/deleteSection",
method: "delete",
params
});
}
......@@ -520,10 +521,11 @@ export function deleteSection(id) {
* @param {*} id
* @return {*}
*/
export function deleteGoods(id) {
export function deleteGoods(params) {
return request({
url: "/ecw/box-preload-goods/delete?ids=" + id.join(","),
url: "/ecw/box-preload-goods/delete",
method: "delete",
params
});
}
......
......@@ -71,9 +71,13 @@ export function exportCustomerContactsExcel(query) {
// 根据客户ID获得联系人列表
export function getCustomerContactsListByCustomer(query) {
if(query.customerId){
return request({
url: '/ecw/customer-contacts/list-by-customer',
method: 'get',
params: query
})
}else {
return Promise.resolve()
}
}
......@@ -688,6 +688,15 @@ export function operateLogPage(params){
})
}
// 获取操作日志详情
export function getOperateLogDetail(id){
return request({
url: '/ecw/order-operate-log/get',
params: {id},
method: 'get',
})
}
// 取消拆单申请
export function splitCancelApply(data){
return request({
......
......@@ -113,3 +113,11 @@ export function exportExcel(params) {
responseType: 'arraybuffer'
})
}
// 根据订ID获取订单异常结果
export function getOrderExcptionResult(query) {
return request({
url: '/ecw/order-exception-result/page',
method: 'get',
params: query
})
}
\ No newline at end of file
......@@ -59,7 +59,6 @@ export function deleteSplit(id) {
})
}
//取消申请拆单
export function cancelApply(data) {
return request({
url: '/order/split/cancel-apply',
......@@ -137,3 +136,12 @@ export function quantitycheck(query) {
params: query
})
}
// 重置拆单
export function deleteAllSplit(orderId) {
return request({
url: '/order/split/delete/all',
method: 'delete',
params: {orderId}
})
}
......@@ -134,4 +134,10 @@ export function serviceConfig(data) {
})
}
// 数量是否必填
export function quantityRequired(lineId) {
return request({
url: '/ecw/warehouse/quantity/required/' + lineId,
method: 'get'
})
}
......@@ -21,7 +21,7 @@ export default {
this.$emit('input', this.valueSync.replace('+', ''))
},
value(){
if(this.value)this.valueSync = this.value
this.valueSync = this.value
}
},
created(){
......
......@@ -17,7 +17,6 @@
<div class="line">
<div class="label">{{$t('姓名(英文)')}}</div>
<div class="value">{{item.contactsNameEn}}</div>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag>
</div>
<div class="line">
<div class="label">{{$t('电话')}}</div>
......
......@@ -171,7 +171,7 @@ export default {
this.customerFollow.form.bizId = this.id
})
listServiceUser().then(r => {
console.log( r.data,'r.data跟进业务')
// console.log( r.data,'r.data跟进业务')
this.serviceUserList = r.data
})
this.getCustomerFollowList()
......
......@@ -258,9 +258,7 @@ export default {
}
},
initArea(){
return getByWarehouseId({ warehouseId: this.warehouseId }).then(r => {
const area = r.data
resetAreaTreeSelected(area) {
area.forEach(e => {
// 仓库
e.children?.forEach(f => {
......@@ -276,12 +274,18 @@ export default {
})
})
})
this.area = area
return area
},
initArea(){
return getByWarehouseId({ warehouseId: this.warehouseId }).then(r => {
this.area = this.resetAreaTreeSelected(r.data)
})
},
// 用于储位回显选中
isSelected(warehouse, area, position = 0){
return !!this.value.find(e => warehouse === e.wareId && area === e.areaId && position === e.locationId)
return !!this.value.find(e => warehouse === e.wareId && area === e.areaId && (position === e.locationId || undefined === e.locationId))
},
}
}
......
......@@ -119,6 +119,7 @@ export const DICT_TYPE = {
ECW_CUSTOMER_RESOURCE_TYPE: 'customer_resource_type', // 客户资源类型
ECW_CUSTOMER_TRANSPORT_TYPE: 'customer_transport_type', // 客户出货渠道(跟运输方式相同,但是显示全部)
ECW_ORDER_APPROVAL_TYPE: 'order_approval_type', // 订单相关审批类型
ECW_FEE_SOURCE: 'fee_source', // 费用来源
//--------ecw---------
CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source',
......
......@@ -87,6 +87,7 @@ service.interceptors.response.use(res => {
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({
dangerouslyUseHTMLString: true,
message: msg,
type: 'error'
})
......@@ -109,6 +110,9 @@ service.interceptors.response.use(res => {
} else if (code === 566) {
// 额外情况
return Promise.reject(res.data)
} else if (code === 666) {
// 额外情况
return Promise.reject(res.data)
} else if (code !== 200) {
Notification.error({
title: msg
......
<template>
<iframe src="https://chat.groupage.cn/" class="iframe"></iframe>
<iframe :src="url" class="iframe"></iframe>
</template>
<style>
.iframe{
......@@ -8,3 +8,24 @@
border: none;
}
</style>
<script>
import {getUserProfile} from "@/api/system/user";
export default {
data() {
return {
username: ''
}
},
computed:{
url(){
return 'https://chatgpt.groupage.cn/#/' + this.username
}
},
created() {
getUserProfile().then(res => {
this.username = res.data.username
})
}
}
</script>
......@@ -167,11 +167,19 @@
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('货值')" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.worth" @change="updateField(scope.row, 'worth')" size="mini" :disabled="index === 0">
<span slot="append">{{ $t('美元') }}</span>
</el-input>
</template>
</el-table-column>
<el-table-column :label="$t('箱数')" align="center">
<template slot-scope="scope">
<span>{{scope.row.num}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('计划装柜')" align="center">
{{planCabinet}}
</el-table-column>
......@@ -226,7 +234,7 @@
</el-col>-->
</el-row>
<el-form-item :label="$t('放入箱数')+':'">
{{shopForm.num||0}}
<el-input-number v-model="shopForm.num" controls-position="right" :min="0" :max="+shopForm.leftNum" @change="calcAverg"></el-input-number>
</el-form-item>
......@@ -251,6 +259,12 @@
<el-form-item :label="$t('收费重量')">
<el-input-number v-model="shopForm.chargeWeight" controls-position="right" :min="0" :max="mainOrderItem.chargeWeight"></el-input-number>
</el-form-item>
<el-form-item v-if="mainOrderItem.orderItemId" label-width="0">
{{ $t('剩余货值') }}:{{ mainOrderItem.worth || 0 }}{{ $t('美元') }}
</el-form-item>
<el-form-item :label="$t('放入货值')">
<el-input-number v-model="shopForm.worth" controls-position="right" :min="0" :max="mainOrderItem.worth"></el-input-number>
</el-form-item>
<!--按照原型这里需要显示剩余数量,但是事实无法计算剩余数量,因为已装数量是未知的-->
<el-form-item :label="$t('放入数量(个)')+':'" prop="quantity" v-if="isQuantity">
<el-input-number v-model="shopForm.quantity" controls-position="right" :min="0" :max="mainOrderItem.quantity || undefined"></el-input-number>
......@@ -271,10 +285,11 @@
<script>
import {
getSplitList,
quantitycheck,
// quantitycheck,
createSplitItem,
deleteSplitItem,
} from "@/api/ecw/orderHandle";
import {quantityRequired} from "@/api/ecw/warehouse";
import { getTradeCityList } from "@/api/ecw/region";
import WorkFlow from "@/components/WorkFlow";
import {getOrder, splitItemUpdate} from "@/api/ecw/order";
......@@ -405,14 +420,6 @@ export default {
});
return _total;
},
/*totalSplitQty() {
let _total = 0;
const { orderSplitItemBackVOList = [] } = this.splitData;
orderSplitItemBackVOList.forEach((v) => {
_total = Decimal.add(_total, Number(v.quantity)).toNumber();
});
return _total;
},*/
/* 打开拆单 */
getSplit() {
this.orderItems = this.currRow.goodsList ?? [];
......@@ -545,11 +552,12 @@ export default {
leftNum = Math.min(leftNum, this.mainOrderItem.num)
// 放入箱数
this.$set(this.shopForm, 'num', leftNum)
this.calcAverg()
},
// 按比例计算体积重量的默认值
calcAverg(){
// 装箱比例
const rate = leftNum / this.mainOrderItem.num
const rate = this.shopForm.num / this.mainOrderItem.num
// 放入个数,剩余个数是算不出来的,因为不知道已装数量,所以放入数量只能按照总数的比例计算
this.$set(this.shopForm, 'quantity', Math.ceil(this.mainOrderItem.quantity*rate|| 0 * rate))
......@@ -558,66 +566,10 @@ export default {
this.$set(this.shopForm, 'chargeVolume', (this.mainOrderItem.chargeVolume * rate).toFixed(2))
this.$set(this.shopForm, 'weight', (this.mainOrderItem.weight * rate).toFixed(2))
this.$set(this.shopForm, 'chargeWeight', (this.mainOrderItem.chargeWeight * rate).toFixed(2))
this.$set(this.shopForm, 'worth', (this.mainOrderItem.worth * rate).toFixed(2))
},
/*async changeProdTitleZh() {
const item = this.setShopForm("zhId");
this.shopForm.enId = item.id;
this.shopForm = { ...this.shopForm };
await this.getSelectData(item);
},
async changeProdTitleEn() {
const item = this.setShopForm("enId");
this.shopForm.zhId = item.id;
this.shopForm = { ...this.shopForm };
await this.getSelectData(item);
},
setShopForm(key) {
let list = [];
list = this.orderItems.filter((item) => item.id == this.shopForm[key]);
const data = list[0];
const itemNum = data.num ?? 0;
const itemQty = data.quantity ?? 0;
// 获取拆单项的总num
const total = this.totalSplitNum();
// 订单的剩余
const orderNum = this.currRow.num - this.currRow.installNum;
// 剩余可装
const remainNum = Decimal.sub(orderNum, total).toNumber();
this.shopForm.num = 0;
this.shopForm.putNum = 0;
// 剩余可装大于等于订单项剩余,显示订单剩余
if (remainNum >= itemNum) {
this.shopForm.num = remainNum;
this.shopForm.putNum = itemNum;
}
// 订单剩余小于订单项剩余,显示订单项剩余
if (remainNum < itemNum) {
this.shopForm.num = this.shopForm.putNum = remainNum;
}
const totalQty = this.totalSplitQty();
this.shopForm.quantity = 0;
if (totalQty >= itemQty) {
this.shopForm.quantity = totalQty;
}
if (totalQty < itemQty) {
this.shopForm.quantity = itemQty;
}
this.shopForm.orderItemId = data.orderItemId;
this.shopForm.putQuantity = Decimal.div(
this.shopForm.quantity,
this.shopForm.num
).toFixed(0);
return data;
},*/
async getSelectData(item) {
await quantitycheck({
seaFreightVolume: item.seaFreightVolume,
clearanceFreightVolume: item.clearanceFreightVolume,
}).then((res) => {
/*async getSelectData(item) {
await quantityRequired(this.orderData.lineId).then((res) => {
if (res.data) {
this.isQuantity = true;
this.shopRules.putQuantity = [
......@@ -632,7 +584,7 @@ export default {
delete this.shopRules.putQuantity;
}
});
},
},*/
shopAdd() {
this.$refs["shopForm"].validate((valid) => {
if (valid) {
......@@ -667,7 +619,8 @@ export default {
volume: this.shopForm.volume,
weight: this.shopForm.weight,
chargeWeight: this.shopForm.chargeWeight,
chargeVolume: this.shopForm.chargeVolume
chargeVolume: this.shopForm.chargeVolume,
worth: this.shopForm.worth
};
// 按数量计费的才需要传递数量
if(this.isQuantity){
......
......@@ -535,6 +535,31 @@ export default {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
remove({ ...params, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
})
.catch(action => {
if(action =='cancel'){
remove({ ...params, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
}
});
}
});
},
/* 修改柜信息 */
......
......@@ -246,6 +246,31 @@ export default {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm(res.msg+this.$t('是否需要一起移出?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
remove({ ...params, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
})
.catch(action => {
if(action =='cancel'){
remove({ ...params, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
}
});
}
});
},
/** 预装 */
......@@ -262,11 +287,67 @@ export default {
} else {
params.orderItemIdList = [item.orderItemId];
}
createGoods(params).then((res) => {
createGoods(params)
.then((res) => {
const { data } = res;
if (data.relationMsg) {
const msg = data.relationMsg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
loadRelationOrder(data).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
} else {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
}
})
.catch((res) => {
if (res.code === 555) {
const msg = res.msg && res.msg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
createGoods({ ...params, relationStatus: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
}
if (res.code === 566) {
this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
createGoods({ ...params, relationStatus: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
}
});
},
/* 增加部分 */
addPart() {
......@@ -289,7 +370,11 @@ export default {
}
)
.then((_) => {
deleteSection(this.partData.id).then((res) => {
let params = {
id: this.partData.id,
deleteType: 2
};
deleteSection(params).then((res) => {
serviceMsg(res, this).then(() => {
this.partData = {};
this.getSecGoods();
......
......@@ -631,7 +631,11 @@ export default {
}
)
.then((_) => {
deleteSection(part.id).then((res) => {
let params = {
id: part.id,
deleteType: 2
};
deleteSection(params).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
......@@ -657,6 +661,7 @@ export default {
if (data.relationMsg) {
const msg = data.relationMsg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
......@@ -679,6 +684,7 @@ export default {
if (res.code === 555) {
const msg = res.msg && res.msg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
......@@ -695,6 +701,7 @@ export default {
if (res.code === 566) {
this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
......@@ -737,12 +744,39 @@ export default {
if (type === "row") {
ids.push(data.id);
}
deleteGoods(ids).then((res) => {
let param = {
ids: ids.join(",")
}
deleteGoods(param).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
deleteGoods({ ...param, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch(action => {
if(action =='cancel'){
deleteGoods({ ...param, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
}
});
}
});
},
/* 查询所有数据 */
queryAllData() {
......
......@@ -240,15 +240,41 @@ export default {
type: "warning",
})
.then((_) => {
tallyRemove({
let param = {
orderIdLIst: orderIds,
shipmentId: this.shipmentObj.id,
}).then((res) => {
}
tallyRemove(param).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
tallyRemove({ ...param, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
});
})
.catch(action => {
if(action =='cancel'){
tallyRemove({ ...param, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
});
}
});
}
});
})
.catch((_) => {});
},
// 关闭弹窗
......
......@@ -587,9 +587,10 @@ export default {
this.reset()
// this.getUserMemberUserFn()
if(this.customerId !== '0') {
let customerId = this.customerId
// 编辑客户
this.getCustomer(this.customerId).then(() => {
getCustomerContactsListByCustomer({customerId: this.customerId}).then(r => {
getCustomerContactsListByCustomer({customerId: customerId}).then(r => {
this.form.customerContacts = r.data
let list = this.form.customerContacts.map(item => item.userid);
if(list.length >0){
......@@ -611,9 +612,8 @@ export default {
if(this.form.lightUnit){
this.showPao = true
}
// 获取重泡货路线
getCustomerLines(this.customerId).then(res => {
getCustomerLines(customerId).then(res => {
this.zhongLines = res.data.filter(item => item.zhongPaoType == 1)
this.paoLines = res.data.filter(item => item.zhongPaoType == 2)
if(this.zhongLines.length)this.showZhong1 = true
......
......@@ -690,7 +690,7 @@ import {getWarehouseList} from '@/api/ecw/warehouse'
import WorkFlow from '@/components/WorkFlow/'
export default {
name: "CreatCollection",
name: "EcwFinancialCreatcollection",
components: {
CustomerSelector,WorkFlow
},
......@@ -745,6 +745,10 @@ export default {
isUpdate:false
};
},
activated(){
console.log(11)
// this.getList();
},
async created() {
getUserProfile().then(res => {
this.discountForm.author = res.data.username
......
......@@ -456,7 +456,7 @@ import {getWarehouseList} from '@/api/ecw/warehouse'
import WorkFlow from '@/components/WorkFlow/'
export default {
name: "CreatPayment",
name: "EcwFinancialCreatpayment",
components: {
CustomerSelector,WorkFlow
},
......@@ -495,6 +495,10 @@ export default {
dialogVisible:false
};
},
activated(){
console.log(11)
// this.getList();
},
async created() {
await getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
getWarehouseList().then(res => this.warehouseList = res.data)
......
<script>
// 对edit组件复用并更名,防止keepalive缓存数据
import edit from './edit.vue'
edit.name = 'OfferCreate'
edit.name = 'EcwOfferCreate'
export default edit
</script>
......@@ -520,6 +520,16 @@ import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts'
import Decimal from 'decimal.js'
window.Decimal= Decimal
const createDefaultForm = () => {
return {
sendstatus:0,
type: [],
control: false,
isCargoControl: false,
prodCreateReqVOList:[],
transportVO: {}
}
}
export default {
name: "EcwOfferEdit",
components: {
......@@ -542,14 +552,7 @@ export default {
// couponList: [],
fee: {}, // 费用
// 表单参数
form: {
sendstatus:0,
type: [],
control: false,
isCargoControl: false,
prodCreateReqVOList:[],
transportVO: {}
},
form: {...createDefaultForm()},
// 表单校验
labelStyle: 'width:120px',
......@@ -846,7 +849,7 @@ export default {
})
},
'form.transportVO.packageTypeArr'(val){
this.$set(this.form.transportVO, 'packageType', val.join(','))
this.$set(this.form.transportVO, 'packageType', (val || []).join(','))
},
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter(val){
......@@ -982,6 +985,8 @@ export default {
if(this.form.channelId){
params.channelId = this.form.channelId
}
// 如果没有任何条件,不请求接口
if(!params.startCityId && !params.destCityId && !params.transportType && !params.channelId) return false
getOpenedRouterList(params).then(res => this.routerList = res.data)
},
// 计算体积
......@@ -1035,6 +1040,14 @@ export default {
})
// 添加的提交
createOffer(data).then(response => {
// 重置表单内容
this.$set(this, 'form', {...createDefaultForm()})
this.routerList = []
this.$nextTick(() => {
console.log('清理表单校验和路线')
this.addProduct()
this.$refs.form.clearValidate()
})
this.$modal.msgSuccess(this.$t("新增成功"));
this.$redirect('index')
});
......
......@@ -310,7 +310,7 @@ export default {
})
.then(res => {
this.$message.success('操作成功')
this.handleQuery()
this.getList()
})
},
// 批量复核
......@@ -319,7 +319,7 @@ export default {
return batchReview("orderIds=" + this.ids.join(','))
}).then(() => {
this.$message.success(this.$t('操作成功'))
this.handleQuery()
this.getList()
})
},
cargoTransfer(row){
......@@ -333,15 +333,15 @@ export default {
},
onReleaseSuccess(){
this.showReleaseOrderId = null
this.handleQuery()
this.getList()
},
onFallbackSuccess(){
this.showFallbackOrder = null
this.handleQuery()
this.getList()
},
onTransferCargoSuccess(){
this.showTransferCargoOrderId = null
this.handleQuery()
this.getList()
}
}
};
......
<template>
<el-dialog :visible="true" title="日志详情" :before-close="closeDialog">
<el-form label-width="100px">
<el-form-item label="ID">{{detail.id}}</el-form-item>
<el-form-item :label="$t('时间')">{{detail.createTime|parseTime}}</el-form-item>
<el-form-item :label="$t('操作人')">{{detail.creatorName}}【ID: {{detail.creator}}</el-form-item>
<el-form-item :label="$t('操作人类型')">{{detail.userType == 2 ? $t('管理员') : $t('会员')}}</el-form-item>
<el-form-item :label="$t('操作描述')">{{detail.msg}}</el-form-item>
<el-form-item :label="$t('操作类型')">{{detail.type}}</el-form-item>
<el-form-item :label="$t('请求地址')">{{detail.requestUrl}}</el-form-item>
<el-form-item :label="$t('请求备注')">{{detail.note}}</el-form-item>
<el-form-item :label="$t('请求内容')">{{detail.body}}</el-form-item>
</el-form>
</el-dialog>
</template>
<script>
import {getOperateLogDetail} from "@/api/ecw/order";
import {parseTime} from '@/utils/ruoyi'
export default {
name: "OperateLogDetail",
filters: {parseTime},
props:{
logId: Number
},
data(){
return {
detail: null
}
},
created() {
this.$nextTick(this.getDetail)
},
methods:{
getDetail(){
getOperateLogDetail(this.logId).then(res => {
this.detail = res.data
})
},
closeDialog(){
this.$emit('close')
}
}
}
</script>
<style scoped>
</style>
......@@ -84,7 +84,7 @@
<send-sms-code :order-id="detail.orderId" scene="5" />
</el-form-item>
<el-form-item label="" style="margin-top:20px">
<el-button type="success" @click="submit">{{$t('确认货')}}</el-button>
<el-button type="success" @click="submit">{{$t('确认货')}}</el-button>
<el-button type="default" @click="closeDialog">{{$t('关闭')}}</el-button>
</el-form-item>
</el-form>
......
<script>
// 对edit组件复用并更名,防止keepalive缓存数据
import edit from './edit.vue'
edit.name = 'OrderCreate'
edit.name = 'EcwOrderCreate'
export default edit
</script>
......@@ -7,7 +7,7 @@
<template v-else-if="order.containerNumber"> - {{order.containerNumber}}</template>
</div>
<el-row :gutter="24">
<el-col :span="12" v-if="order.consignorVO">
<el-col :span="12" v-if="order.consignorVO" >
<el-descriptions class="margin-top" border :title="$t('发货人')" :column="3" :labelStyle="{width:'110px'}" :contentStyle="{width:'150px'}">
<el-descriptions-item :label="$t('中文名称')">{{order.consignorVO.name}}</el-descriptions-item>
<!-- v1.7新增 -->
......@@ -278,7 +278,11 @@
</el-tab-pane>
<el-tab-pane :label="$t('费用明细')" name="four">
<el-table :data="feeList">
<el-table-column :label="$t('订单号')" prop="orderNo"></el-table-column>
<el-table-column :label="$t('订单号')" prop="orderNo">
<template slot-scope="{row}">
{{row.orderNo}}
</template>
</el-table-column>
<el-table-column :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-table-column>
......@@ -297,6 +301,11 @@
{{$l(row, 'title')}}
</template>
</el-table-column>
<el-table-column :label="$t('费用来源')" prop="feeSource">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_FEE_SOURCE" :value="row.feeSource" />
</template>
</el-table-column>
<el-table-column :label="$t('箱数')" prop="num">
<template slot-scope="{row}">
{{row.num || '-'}}
......@@ -355,6 +364,11 @@
</div>
</template>
</el-table-column>
<el-table-column :label="$t('操作')" prop="note">
<template slot-scope="{row}">
<el-link type="primary" @click="showLogDetailId=row.id">{{$t('详情')}}</el-link>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
......@@ -427,7 +441,11 @@
</el-table-column>
</el-table>
</el-dialog>
<!--日志详情-->
<operate-log-detail v-if="showLogDetailId" :log-id="showLogDetailId" @close="showLogDetailId=null"></operate-log-detail>
</div>
</template>
<script>
......@@ -445,9 +463,11 @@ import {getProductBrank} from '@/api/ecw/productBrank'
import { parseTime } from '@/utils/ruoyi';
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect"
import {checkPermi} from '@/utils/permission'
import OperateLogDetail from "@/views/ecw/order/components/OprateLogDetail";
export default {
name: "detail",
components: {
OperateLogDetail,
PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect
},
filters: {
......@@ -492,6 +512,7 @@ export default {
showText:this.$t('显示更多'),
showMore:false,
consigneeText:this.$t('更多'),
showLogDetailId: null, // 显示日志详情的ID
}
},
computed:{
......
......@@ -115,9 +115,31 @@
<el-input :value="selectedRouter ? $l(selectedRouter, 'startTitle') + ' > ' + $l(selectedRouter, 'destTitle') : ''" disabled :placeholder="$t('请在右侧选择线路')"></el-input>
</el-form-item>
<select size="5" v-model="form.lineId" style="min-width: 300px; border:1px solid #DCDFE6; border-radius:4px" :disabled2="inWarehouse">
<option v-for="item in routerList" :value="item.id" :key="item.id">{{$l(item, 'startTitle')}} >> {{$l(item, 'destTitle')}}</option>
<option v-for="item in routerList" :value="item.id" :key="item.id">
{{$l(item, 'startTitle')}} >> {{$l(item, 'destTitle')}}
(<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportType"></dict-tag>)
</option>
</select>
</div>
<!--目的港清关:选择专线空运才显示,默认选中我司
我司选中后,按钮下方显示“多票”和“单票”的操作,默认选中多票。
客户选中后,按钮下方显示“单票”的操作,默认选中,无需点击-->
<div class="form-section" v-if="form.transportId == 3">
<el-form-item :label="$t('目的港清关')">
<el-radio-group v-model="form.portDestCustomsClear">
<el-radio :label="1">{{$t('我司')}}</el-radio>
<el-radio :label="2">{{$t('客户')}}</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div class="form-section" v-if="form.transportId == 3">
<el-form-item :label="$t('发货方式')">
<el-radio-group v-model="form.deliveryWay">
<el-radio :label="1" v-if="form.portDestCustomsClear == 1">{{$t('多票')}}</el-radio>
<el-radio :label="2">{{$t('单票')}}</el-radio>
</el-radio-group>
</el-form-item>
</div>
</el-card>
<el-card class="mt-10">
<div slot="header" class="card-title">
......@@ -443,7 +465,7 @@
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" />
</el-form-item>
<el-form-item :label="$t('清关证书备注')" >
<el-input v-model="form.remarks" :disabled="false"></el-input>
<el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input>
</el-form-item>
</div>
<div v-if="[3,4].indexOf(+form.transportId) > -1">
......@@ -552,7 +574,19 @@ import WorkFlow from '@/components/WorkFlow'
import { getCustomer } from "@/api/ecw/customer";
// 缓存默认的表单数据
let defaultFormData = null
let makeDefaultFormData = () => {
return {
status:0,
sendstatus:0,
isCargoControl: false,
isCollection: false,
type:[],
isExternalWarehouse: false,
externalWarehouseDtoList:[],
orderItemVOList:[],
drawee: 2
}
}
window.Decimal = Decimal
export default {
......@@ -592,17 +626,7 @@ export default {
couponTypeList: [],
fee: {}, // 费用
// 表单参数
form: {
status:0,
sendstatus:0,
isCargoControl: false,
isCollection: false,
type:[],
isExternalWarehouse: false,
externalWarehouseDtoList:[],
orderItemVOList:[],
drawee: 2
},
form: makeDefaultFormData(),
ccIdArr: [],
// 表单校验
labelStyle: 'width:120px',
......@@ -817,6 +841,11 @@ export default {
this.$set(this.form, 'channelId', null)
}
// 如果是专线空运默认目的港清关选择我司
if(transportId == 3){
this.$set(this.form, 'portDestCustomsClear', 1)
}
this.getOpenedRouterList()
},
'form.channelId'(){
......@@ -829,6 +858,7 @@ export default {
}
this.$set(this.form, 'departureId', router.startCityId)
this.$set(this.form, 'objectiveId', router.destCityId)
this.$set(this.form, 'transportId', router.transportType)
this.calculationPrice()
},
......@@ -860,6 +890,17 @@ export default {
this.$set(this.form, 'drawee', isCargoControl ? 2 : 2)
}
},
// 目的港清关,1我司,2客户
'form.portDestCustomsClear'(portDestCustomsClear){
// 我司默认多票
if(portDestCustomsClear == 1){
this.$set(this.form, 'deliveryWay', 1)
}
// 客户默认单票
if(portDestCustomsClear == 2){
this.$set(this.form, 'deliveryWay', 2)
}
},
/* 'form.orderItemVOList'(){
console.log('form.orderItemVOList', this.form.orderItemVOList.length, this.form.orderItemVOList)
}, */
......@@ -888,7 +929,6 @@ export default {
}
},
async created() {
defaultFormData = Object.assign({}, this.form)
this.productAttrList = (await getProductAttrList()).data
this.channelList = (await getChannelList()).data
......@@ -1056,7 +1096,7 @@ export default {
// 检查正整数
checkPositiveInterge(row, field){
console.log('checkPositiveInterge', field, row[field])
row[field] = row[field].replace(/[^\d]/g, '')
row[field] = row[field].toString().replace(/[^\d]/g, '')
},
onProductChange(row, product){
console.log(product)
......@@ -1103,6 +1143,8 @@ export default {
if(this.form.transportId){
params.transportType = this.form.transportId
}
// 始发,目的和运输方式都没有的时候不获取
if(!params.startCityId && !params.destCityId && !params.transportType) return false
getOpenedRouterList(params).then(res => this.routerList = res.data.filter(item => {
return this.exportCityIds.indexOf(item.startCityId) > -1 && this.importCityIds.indexOf(item.destCityId) > -1
}))
......@@ -1194,10 +1236,15 @@ export default {
this.$modal.msgSuccess(this.$t("新增成功"));
// 重置数据
this.form = {...defaultFormData}
this.form = {...makeDefaultFormData()}
this.routerList = []
this.addProduct()
this.$nextTick(() =>{
this.$refs.form.clearValidate()
this.$redirect('success?orderId=' + response.data)
})
});
});
},
......
......@@ -85,13 +85,6 @@
<el-option :label="$t('自有仓')" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('订单类型')" prop="number">
<el-select v-model="queryParams.type" :placeholder="$t('请选择')" clearable >
<el-option :label="$t('普通订单')" :value="0"></el-option>
<el-option :label="$t('集运服务')" :value="1"></el-option>
<el-option :label="$t('海外仓')" :value="2"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="">
......
This diff is collapsed.
......@@ -110,7 +110,25 @@
</el-table-column>
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.orderExceptionStatus==2">{{$t('已完成')}}</el-tag>
<!-- <el-button v-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType!='order_no_quote_exception'" v-hasPermi="['ecw:exception:seeExceptionInfo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button> -->
<el-button v-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_superfluous_box_exception'" v-hasPermi="['ecw:exception:superfluousBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_lack_box_exception'" v-hasPermi="['ecw:exception:lackBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_pay_exception'" v-hasPermi="['ecw:exception:pay']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_miss_exception'" v-hasPermi="['ecw:exception:miss']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_superfluous_goods_exception'" v-hasPermi="['ecw:exception:superfluousGoods']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_in_water_exception'" v-hasPermi="['ecw:exception:inWater']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_damage_exception'" v-hasPermi="['ecw:exception:damaged']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_heavy_cargo_exception'" v-hasPermi="['ecw:exception:heavyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_doc_exception'" v-hasPermi="['ecw:exception:doc']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_consignor_exception'" v-hasPermi="['ecw:exception:consignor']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_other_exception'" v-hasPermi="['ecw:exception:other']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_cod_exception'" v-hasPermi="['ecw:exception:cod']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_bulky_cargo_exception'" v-hasPermi="['ecw:exception:bulkyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_pick_up_exception'" v-hasPermi="['ecw:exception:pickUp']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='not_customer_service_exception'" v-hasPermi="['ecw:exception:notCustomer']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='goods_add_exception'" v-hasPermi="['ecw:exception:goodsAddException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-tag style="margin-left:10px" v-if="scope.row.orderExceptionStatus==2">{{$t('已完成')}}</el-tag>
<el-button v-else-if="scope.row.orderExceptionType=='order_superfluous_box_exception'" v-hasPermi="['ecw:exception:superfluousBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_lack_box_exception'" v-hasPermi="['ecw:exception:lackBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_pay_exception'" v-hasPermi="['ecw:exception:pay']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
......
This diff is collapsed.
......@@ -18,7 +18,7 @@
{{$t('数量')}}{{order.sumQuantity}}{{$t('')}}
</div>
</el-form-item>
<el-form-item :label="$t('货方式')">
<el-form-item :label="$t('货方式')">
<dict-selector :type="DICT_TYPE.ECW_HARVEST_METHOD" v-model="form.pickType" form-type="radio" formatter="number"></dict-selector>
</el-form-item>
<el-form-item :label="$t('提货时间')" v-if="form.pickType == 1">
......@@ -54,7 +54,7 @@
<el-input v-model="form.remark" type="textarea" placeholder=""></el-input>
</el-form-item>
<el-form-item label="">
<el-button type="primary" @click="submit">{{$t('确认货')}}</el-button>
<el-button type="primary" @click="submit">{{$t('确认货')}}</el-button>
<el-button type="default" @click="$router.back()">{{$t('取消')}}</el-button>
</el-form-item>
</el-form>
......
This diff is collapsed.
......@@ -8,6 +8,7 @@
<div class="title">{{$t('新增订单生成成功')}}</div>
<div class="line">{{$t('订单号')}}{{order.orderNo}}</div>
<div class="line">{{$t('运输方式')}}<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /></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="line">{{$t('商品列表')}}
<span v-for="(item, index) in order.orderItemVOList" :key="index">
......
......@@ -941,6 +941,12 @@ export default {
}
const form = val === 1 ? this.form1 : this.form
const formLength = form.table.length
let orderLocationBackVOList = []
/* // 不默认使用上一条记录的储位 https://zentao.test.jdshangmen.com/bug-view-3344.html
if (formLength > 0) {
orderLocationBackVOList = JSON.parse(JSON.stringify(form.table[formLength - 1].orderLocationBackVOList))
}*/
form.table.push({
"boxGauge1": this.isJiyun ? 0 : '',
"boxGauge2": this.isJiyun ? 0 : '',
......@@ -952,7 +958,8 @@ export default {
"volume": '',
"weight": '',
specificationType: '1',
table: []
table: [],
orderLocationBackVOList
})
},
/** 获取产品属性列表 */
......
......@@ -88,36 +88,52 @@
</el-table-column>
<el-table-column :label="$t('重货方数')" v-if="type=='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{scope.row.weVolume||0}}CBM</span>
<span>{{scope.row.chargeVolume||0}}CBM</span>
</template>
</el-table-column>
<el-table-column :label="$t('泡货方数')" v-if="type!='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{scope.row.weVolume||0}}CBM</span>
<span>{{scope.row.chargeVolume||0}}CBM</span>
</template>
</el-table-column>
<el-table-column :label="$t('重货重量')" v-if="type=='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{scope.row.voWeight||0}}KG</span>
<span>{{scope.row.chargeWeight ||0}}KG</span>
</template>
</el-table-column>
<el-table-column :label="$t('泡货重量')" v-if="type!='order_heavy_cargo_exception'" >
<template slot-scope="scope">
<span>{{scope.row.vweight||0}}KG</span>
<span>{{scope.row.chargeWeight ||0}}KG</span>
</template>
</el-table-column>
<el-table-column :label="$t('最后操作时间')" scope="handlerTime" />
</el-table>
</el-card>
<el-card v-if="list.orderExceptionStatus==2">
<div slot="header" class="card-title">{{$t('处理结果')}}</div>
<el-descriptions :column="1">
<el-descriptions-item :label="$t('处理时间')">
{{parseTime(handlerParams.handlerTime)}}
</el-descriptions-item>
<el-descriptions-item :label="$t('处理结果')">
{{handlerParams.handlerResult=='general_cargo'?$t('设为普货'):$t('设为已处理')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('备注')">
{{handlerParams.handlerRemark||"无"}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<div slot="footer" class="dialog-footer">
<div>
<div v-if="list.orderExceptionStatus!=2">
<el-button type="primary" @click="submit('general_cargo')">{{$t('设为普货')}}</el-button>
<el-button plain type="primary" @click="submit('process')">{{$t('设为已处理')}}</el-button>
</div>
<div v-else>
<el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
</div>
<el-form :model="handlerParams" ref="queryForms" size="small" label-width="50px" class="card">
</div>
<el-form v-if="list.orderExceptionStatus!=2" :model="handlerParams" ref="queryForms" size="small" label-width="50px" class="card">
<el-form-item :label="$t('备注')+':'" size="medium">
<el-input style="width: 500px;" type="textarea" v-model="handlerParams.orderExceptionHandlerRemark" />
</el-form-item>
......@@ -127,7 +143,7 @@
</template>
<script>
import {getExceptionById,handlerExceptionByExceptionId} from "@/api/ecw/orderException"
import {getExceptionById,handlerExceptionByExceptionId,getOrderExcptionResult} from "@/api/ecw/orderException"
import {DICT_TYPE} from '@/utils/dict'
import {getOrder} from '@/api/ecw/order'
import {getProductBrankPage} from '@/api/ecw/productBrank'
......@@ -171,6 +187,9 @@ export default {
getExceptionById(this.id).then(response => {
this.list = response.data;
this.loading = false;
if(this.list.orderExceptionStatus==2){
this.getOrderExcptionResult()
}
this.getOrders()
});
},
......@@ -178,6 +197,14 @@ export default {
var brank = this.branklist.find(item=>item.id==id)
return brank.titleZh||''
},
//获取异常结果
getOrderExcptionResult(){
getOrderExcptionResult({orderExceptionId:this.id}).then(res=>{
this.handlerParams = res.data.list[0]
console.log(this.handlerParams)
})
},
checkCode(data){
if(data.indexOf('+')==-1){
return '+'+data
......@@ -219,7 +246,7 @@ export default {
submit(result){
handlerExceptionByExceptionId({orderExceptionId:this.list.id,orderExceptionHandlerResult:result,orderExceptionHandlerRemark:this.handlerParams.orderExceptionHandlerRemark}).then(res=>{
this.$modal.msgSuccess(this.$t("提交成功"));
this.$router.back()
this.$store.dispatch('tagsView/delCurrentView')
})
}
}
......
......@@ -735,7 +735,7 @@ export default {
this.form.priceStepList.forEach(item => {
let notEmptyFields = ['startNum', 'endNum', 'weightUnit']
notEmptyFields.forEach(field => {
if(item[field].toString().trim() == ''){
if(!item[field] || item[field].toString().trim() == ''){
stepPriceEmpty = true
}
})
......@@ -744,7 +744,7 @@ export default {
}
})
if(stepPriceEmpty){
return this.$message.error(this.$t('阶梯价格设置不能留空'))
return this.$message.error(this.$t('阶梯价格设置不能留空'))
}
}
......
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